¿Utilizando ArcPy para ampliar a la función seleccionada?

19

¿Hay alguna forma de ampliar el alcance de una característica seleccionada mediante el módulo ArcPy en ArcGIS Desktop 10.

    
pregunta Zachary 03.09.2010 - 20:42

4 respuestas

6

Yo diría que sí. La clase de capa tiene un método getSelectedExtent y href="http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/DataFrame/00s300000003000000/"> Dataframe tiene una propiedad de extensión. Aunque no lo he intentado.

    
respondido por el Kirk Kuykendall 03.09.2010 - 20:56
16

Tengo un trozo de código que funciona. Encontré aquí / a> en el sitio web de ESRI. Agréguelo como un script a un modelo, luego conecte la salida de una herramienta de selección por atributo. Hace exactamente lo que quiero.

import arcpy
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()
    
respondido por el Zachary 03.09.2010 - 21:52
10

Como ya has calculado,

df.zoomToSelectedFeatures()

cambiará la extensión del marco de datos a todas las características seleccionadas en el marco del mapa. Si está interesado en simplemente hacer zoom en un conjunto de selección para una capa específica, use lyr.getSelectedExtent() . También ajusto el factor de escala del mapa para que mi código se vea así:

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

o esto:

df.extent = lyr.getSelectedExtent()
df.scale = 12000 # 1:1,000
arcpy.RefreshActiveView()
    
respondido por el Erik Anderson 26.05.2011 - 23:44
1

Entonces, para agregar a esto, he estado necesitando realizar un seguimiento de la extensión más amplia a través de múltiples capas sin características seleccionadas. El siguiente código rastreará la mayor extensión en cada dirección. extension_objeto permanece constante en todas las llamadas a la función y debe inicializarse en una de las capas que está incluyendo. El argumento "layer" para track_extent es un objeto arcpy.Mapping.Layer. Cuando esté listo para guardar su mapa, simplemente configure la extensión de su marco de datos a través de algo como data_frame.extent = extension_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
    
respondido por el nicksan 29.03.2011 - 02:22

Lea otras preguntas en las etiquetas