Використовуючи ArcPy для збільшення масштабу вибраної функції?


19

Чи існує спосіб збільшення масштабу вибраної функції за допомогою модуля ArcPy в ArcGIS Desktop 10.

Відповіді:



16

У мене є фрагмент коду, який працює. Я знайшов це тут, на веб-сайті ESRI. Додайте його як сценарій до моделі, а потім підключіть до неї вихід інструменту select за атрибутом. Це робить саме те, що я хочу.

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

Більшість функцій сценаріїв, які обробляють управління, відображення або виведення документа (mxd), використовуватиме модуль відображення ArcPy. 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

Отже, щоб додати до цього, мені потрібно було відслідковувати найширший обсяг у кількох шарах без вибраних функцій. Наступний код буде відслідковувати найбільшу міру в кожному напрямку. obseg_object залишається постійним у всіх викликах функції та має бути ініціалізований на один із шарів, до яких ви входите. Аргумент "шар" track_extent - це об'єкт arcpy.Mapping.Layer. Коли ви готові зберегти свою карту, просто встановіть масштаб свого кадру даних через щось на зразок data_frame.extent = obseg_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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.