Seçilen özelliğe zum yapmak için ArcPy mi kullanıyorsunuz?


19

ArcGIS Desktop 10'daki ArcPy modülünü kullanarak seçilen bir özelliği genişletmenin bir yolu var mı?

Yanıtlar:



16

İşe yarayan bir kod parçam var. Burada ESRI web sitesinde buldum . Bir modele komut dosyası olarak ekleyin, sonra bir seçme özelliğine göre aracın çıktısını ona bağlayın. Tam olarak istediğimi yapıyor.

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

Belge (mxd) yönetimi, ekranı veya çıktısını işleyen çoğu komut dosyası işlevselliği ArcPy eşleme modülünü kullanacaktır. help.arcgis.com/tr/arcgisdesktop/10.0/help/index.html#/…
mindless.panda

3
+1 df.zoomToSelectedFeatures()Ben böyle yapıyorum. Ölçeği de ile ayarlamak isteyebilirsiniz df.scale = yourscalehere.
Mart'ta Nathanus

10

Daha önce tahmin ettiğiniz gibi,

df.zoomToSelectedFeatures()

veri çerçevesinin uzantılarını harita çerçevesinde seçilen tüm özelliklerle değiştirir. Sadece belirli bir katman için bir seçim kümesine yakınlaştırma yapmak istiyorsanız o zaman kullanın lyr.getSelectedExtent(). Ayrıca harita ölçek faktörü ayarlamak benim kod ya da şöyle görünür:

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

veya bu:

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

1

Bu nedenle, buna eklemek için, seçilen hiçbir özellik olmadan birden fazla katmandaki en geniş kapsamı izlemem gerekiyordu. Aşağıdaki kod, her yönde en uzak mesafeyi izleyecektir. scope_object, işleve yapılan tüm çağrılarda sabit kalır ve dahil ettiğiniz katmanlardan birine başlatılmalıdır. Track_extent için "layer" argümanı bir arcpy.Mapping.Layer nesnesidir. Haritanızı kaydetmeye hazır olduğunuzda, data_frame.extent = scope_object gibi bir şeyle veri çerçevenizin kapsamını ayarlamanız yeterlidir.

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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.