2 votos

¿Tiene ArcPy (Standalone) una opción como el filtro espacial?

Quiero obtener las características de polilínea que se cruzan con una geometría de polígono y que tienen unos valores de campo determinados en ArcPy standalone script.

Hay otro enlace para un tema similar pero no es para el script. ¿Tiene ArcPy una función de búsqueda espacial para la geometría?

¿Tiene ArcPy una opción similar para SearchCursor como Spatialfilter con whereclause, searchGeometry y relación?

2voto

BrainCore Puntos 131

Sólo tienes que crear capas usando arcpy.management.MakeFeatureLayer(). Puedes añadir un filtro de atributos SQL a cada función. Estos son muy rápidos porque en realidad no copian los datos. Luego puedes usar la función arcpy.Management.SelectByLocation() Hay un sinfín de combinaciones que puedes utilizar añadiendo o restando conjuntos de capas. Cada función puede utilizar la capa anterior. Si los atributos son muy complejos para una consulta SQL entonces considera usar una consulta separada y usa una consulta IN sql con una lista de claves o OBJECTIDS. Uso un SearchCursor dentro de una comprensión de lista que se convierte en una cadena de tuplas. Esto puede ser usado para crear una línea de expresión así

select_lay = arcpy.management.SelectByLocation('lay1', lay2, 'select_lay', 'NEW_SELECTION')
tuple = tuple([row[0] for row in arcpy.da.SearchCursor('select_lay', [key'])])
SQL_expr = """key IN {}""".format(tuple)
lay_2 = arcpy.management.MakeFeatureLayer('a_fc', ['field1'],SQL_expr)

0voto

user110272 Puntos 31

Obtuve la solución haciendo lo mismo que se sugiere en "MakeFeatureLayer ejemplo 2 (stand-alone script)" en https://pro.arcgis.com/en/pro-app/tool-reference/data-management/make-feature-layer.htm

El siguiente es el ejemplo de código de Arcgis:

import arcpy
arcpy.env.overwriteOutput = True
arcpy.MakeFeatureLayer_management("C:/data/mexico.gdb/cities","cities_lyr")
arcpy.SelectLayerByLocation_management("cities_lyr", "INTERSECT", "c:/data/mexico.gdb/chihuahua", "", "NEW_SELECTION")
arcpy.SelectLayerByAttribute_management("cities_lyr", "SUBSET_SELECTION", "POPULATION > 10000")
arcpy.CopyFeatures_management("cities_lyr", "c:/data/mexico.gdb/chihuahua_10000plus")

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