5 votos

Selección por atributos" mediante python en ArcMap 10

Necesito seleccionar una característica usando SQL antes de hacer un zoom hacia ella en python. Lo que busco son reemplazos para las líneas comentadas en este código:

import arcpy
parcel_num = "123456"
mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
# df.selectFeatures("SELECT * FROM LandRecords.GISDBA.Parcels "
#                   "WHERE PARCEL_NUM='%s'" % parcel_num)
df.zoomToSelectedFeatures()
arcpy.RefreshActiveView()

6voto

dertoni Puntos 256

Suponiendo que tenga "LandRecords.GISDBA.Parcels" como capa en su documento de mapa y que el nombre de la capa esté configurado como "Parcels", debería poder hacerlo:

mxd = arcpy.mapping.MapDocument('CURRENT')
df = arcpy.mapping.ListDataFrames(mxd, "Layers") [0]
parcels = arcpy.mapping.ListLayers(mapDoc, "Parcels", df)[0]

whereClause = "PARCEL_NUM ='%s'" % parcel_num
arcpy.SelectLayerByAttribute_management(parcels, "NEW_SELECTION", whereClause)
df.extent = parcels.getSelectedExtent(True)
df.scale *= 1.5
arcpy.RefreshActiveView()

Nota: mi experiencia hasta ahora es que al cambiar la extensión del mapa se actualiza automáticamente el mapa. Yo sólo llamo a arcpy.RefreshActiveView() cuando manipulo manualmente el df.scale .

5voto

John Kramlich Puntos 286

No estoy al día con el módulo de ArcPy (no utilizar la versión 10 todavía), pero el código de python anterior requeriría que usted consiga un mango en una capa y luego hacer una selección en él. Tomé esto de la ayuda en línea:

import arcpy 
arcpy.MakeFeatureLayer_management ("C:/data/data.mdb/states", "stateslyr")
arcpy.SelectLayerByAttribute_management ("stateslyr", "NEW_SELECTION", " [NAME] = 'California' ")

Haga clic aquí para ir a la ayuda en línea

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X