जवाबों:
मुझे एक कोड मिला है जो काम करता है। मैंने इसे यहां ESRI वेबसाइट पर पाया । इसे एक मॉडल के लिए एक स्क्रिप्ट के रूप में जोड़ें, फिर एक चयन का आउटपुट इसे विशेषता टूल से कनेक्ट करें। यह वही करता है जो मैं चाहता हूं।
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()
df.zoomToSelectedFeatures()
यह है कि मैं इसे कैसे करता हूं। आप के साथ पैमाने पर सेट करना चाह सकते हैं df.scale = yourscalehere
।
जैसा कि आप पहले ही समझ चुके हैं,
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()
इसलिए, इसे जोड़ने के लिए, मुझे कई परतों के बीच विस्तृत सीमा का ट्रैक रखने की आवश्यकता है, जिसमें कोई सुविधाएँ नहीं हैं। निम्नलिखित कोड प्रत्येक दिशा में सबसे दूर तक नज़र रखेगा। 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