Menggunakan ArcPy untuk memperbesar ke fitur yang dipilih?

19

Apakah ada cara untuk memperbesar fitur yang dipilih menggunakan modul ArcPy di ​​ArcGIS Desktop 10.

Zachary
sumber

Jawaban:

6

Saya akan mengatakan ya. Kelas layer memiliki metode getSelectedExtent, dan Dataframe memiliki properti luas. Belum mencobanya.

Kirk Kuykendall
sumber
16

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()
Zachary
sumber
Sebagian besar fungsi scripting yang menangani manajemen, tampilan, atau keluaran dokumen (mxd) akan menggunakan modul pemetaan ArcPy. help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/…
mindless.panda
3
+1 df.zoomToSelectedFeatures()Bagaimana saya melakukannya. Anda mungkin ingin mengatur skala df.scale = yourscaleherejuga.
Nathanus
10

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()
Erik Anderson
sumber
1

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
nicksan
sumber