Jawaban:
Saya punya sepotong kode yang berfungsi. Saya menemukannya di sini di situs web ESRI. Tambahkan itu sebagai skrip ke model, lalu hubungkan output dari alat pilih oleh atribut untuk itu. Itu tepat seperti yang saya inginkan.
import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()
df.zoomToSelectedFeatures()
Bagaimana saya melakukannya. Anda mungkin ingin mengatur skala df.scale = yourscalehere
juga.
Seperti yang sudah Anda duga,
df.zoomToSelectedFeatures()
akan mengubah luasan bingkai data ke semua fitur yang dipilih dalam bingkai peta. Jika Anda tertarik untuk hanya memperbesar ke set pilihan untuk lapisan tertentu kemudian gunakan lyr.getSelectedExtent()
. Saya juga menyesuaikan faktor skala peta sehingga kode saya terlihat seperti ini:
df.extent = lyr.getSelectedExtent()
df.scale *= 1.5
arcpy.RefreshActiveView()
atau ini:
df.extent = lyr.getSelectedExtent()
df.scale = 12000 # 1:1,000
arcpy.RefreshActiveView()
Jadi, untuk menambahkan ini, saya perlu melacak sejauh mana di banyak lapisan tanpa fitur yang dipilih. Kode berikut akan melacak jangkauan terjauh di setiap arah. ext_object tetap konstan di semua panggilan ke fungsi dan harus diinisialisasi ke salah satu lapisan yang Anda sertakan. Argumen "layer" ke track_extent adalah objek arcpy.Mapping.Layer. Saat Anda siap untuk menyimpan peta Anda, cukup atur sejauh mana dataframe Anda melalui sesuatu seperti data_frame.extent = Sejauh_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