Tengo dos capas, cada una contiene cientos de polígonos. Estoy tratando de encontrar una manera de recortar los datos de una capa a cada polígono de la otra capa. El problema es que las características de recorte de la capa se superponen. Me gustaría que la capa de entrada fuera recortada a cada polígono por separado y crear duplicados en las áreas superpuestas. ¿Hay una manera fácil de recortar la capa de entrada a cada polígono de la segunda capa por separado? Por desgracia, no estoy familiarizado con la codificación si eso es una opción.
Respuestas
¿Demasiados anuncios?Como no quieres una solución de codificación, tengo una solución de modelismo:
- Crear un nuevo modelo
- Añade tu capa de entrada y tu capa de recorte
- Haga clic con el botón derecho en el modelo y seleccione iteradores>selección de características
- Conecte la capa de recorte al iterador y establezca el grupo por campo si necesita agrupar por un campo
- Añadir la herramienta de recorte y conectar la salida del iterador a la herramienta de recorte como las características de recorte
- Conecte la capa de entrada a la herramienta de clip como las características de entrada
- Abra las propiedades de la herramienta de recorte y cambie la ruta de salida a SuTextoAquí_%Valor% - esto producirá SuTextoAquí_(valor del atributo de la característica seleccionada), por ejemplo, Propiedades_131
En la imagen siguiente, puede ver la configuración del modelo, los ajustes del clip y los ejemplos de salidas del modelo:
Script a continuación recortará una clase de característica de entrada con cada polígono de una clase de característica de recorte y creará una nueva clase de característica para cada recorte. Las clases de características de salida se llamarán 'Clip_'+objetotid, por ejemplo Clip_1
import arcpy,os
fc_to_clip=r'C:\TEST.gdb\polygons123'
clipfeatures=r'C:\TEST.gdb\clip_features'
out_location=r'C:\TEST.gdb'
with arcpy.da.SearchCursor(clipfeatures,['OBJECTID','SHAPE@']) as cursor:
for row in cursor:
arcpy.Clip_analysis(in_features=fc_to_clip, clip_features=row[1],out_feature_class=os.path.join(out_location,'Clip_'+str(row[0])))
Guarde el código como un archivo .py y ejecútelo en Ventana Python (sección Carga de Python en la ventana de Python)