चयनित सुविधा के लिए ज़ूम करने के लिए आर्कपी का उपयोग करना?


19

क्या आर्कगिस डेस्कटॉप 10 में आर्कपी मॉड्यूल का उपयोग करके किसी चयनित सुविधा की सीमा तक ज़ूम करने का एक तरीका है।

जवाबों:



16

मुझे एक कोड मिला है जो काम करता है। मैंने इसे यहां ESRI वेबसाइट पर पाया । इसे एक मॉडल के लिए एक स्क्रिप्ट के रूप में जोड़ें, फिर एक चयन का आउटपुट इसे विशेषता टूल से कनेक्ट करें। यह वही करता है जो मैं चाहता हूं।

import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()

अधिकांश स्क्रिप्टिंग कार्यक्षमता जो दस्तावेज़ (एमएक्सडी) प्रबंधन, प्रदर्शन, या आउटपुट संभालती है, आर्कपी मैपिंग मॉड्यूल का उपयोग करने जा रही है। help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/...
mindless.panda

3
+1 df.zoomToSelectedFeatures()यह है कि मैं इसे कैसे करता हूं। आप के साथ पैमाने पर सेट करना चाह सकते हैं df.scale = yourscalehere
नाथानुस

10

जैसा कि आप पहले ही समझ चुके हैं,

df.zoomToSelectedFeatures()

मानचित्र फ़्रेम में सभी चयनित सुविधाओं में डेटा फ़्रेम के विस्तार को बदल देगा । यदि आप किसी विशिष्ट परत के चयन सेट पर ज़ूम करने में रुचि रखते हैं तो उपयोग करें lyr.getSelectedExtent()। मैं मैप स्केल फैक्टर को भी समायोजित करता हूं ताकि मेरा कोड या तो इस तरह दिखे:

df.extent = lyr.getSelectedExtent()
df.scale *= 1.5
arcpy.RefreshActiveView()

या यह:

df.extent = lyr.getSelectedExtent()
df.scale = 12000 # 1:1,000
arcpy.RefreshActiveView()

1

इसलिए, इसे जोड़ने के लिए, मुझे कई परतों के बीच विस्तृत सीमा का ट्रैक रखने की आवश्यकता है, जिसमें कोई सुविधाएँ नहीं हैं। निम्नलिखित कोड प्रत्येक दिशा में सबसे दूर तक नज़र रखेगा। Lim_object फ़ंक्शन के लिए सभी कॉलों पर स्थिर रहता है और उन परतों में से एक पर आरंभीकृत होना चाहिए, जिनमें आप शामिल हैं। Track_extent में तर्क "लेयर" एक आर्कपी.मेपिंग है। लेयर ऑब्जेक्ट। जब आप अपना मानचित्र सहेजने के लिए तैयार हों, तो बस अपना डेटाफ़्रेम की सीमा data_frame.extent = limit_object जैसी किसी चीज़ के माध्यम से सेट करें

extent_object = initial_layer.getExtent()

def track_extent(extent_object,layer):

    l_properties = layer.getExtent()

    # each of these essentially says that if this layer is further out to one direction than the current setting, change the setting
    if l_properties.XMin < extent_object.XMin:
        extent_object.XMin = l_properties.XMin
    if l_properties.YMin < extent_object.YMin:
        extent_object.YMin = l_properties.YMin
    if l_properties.XMax > extent_object.XMax:
        extent_object.XMax = l_properties.XMax
    if l_properties.YMax > extent_object.YMax:
        extent_object.YMax = l_properties.YMax
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.