Mis datos constan de dos clases de características:
- Puntos = puntos que representan árboles
- Polígonos = Polígonos que representan el% del área del dosel por área. Cada polígono en el FC tiene una medición del% del dosel en los atributos.
Estoy tratando de lograr lo siguiente:
- Seleccionar puntos debajo de entidades poligonales
- Para los puntos debajo de cada polígono, elimine X% de los puntos en función del atributo polígono
La captura de pantalla (Figura 1) muestra una herramienta única de ModelBuilder llamada Iterate Feature Selection. ¿Cuál es el método de secuencia de comandos de Python correcto para recorrer las entidades en una clase de entidad para pasar la entidad al comando SelectLayerByLocation_management?
La Figura 2 muestra el resultado de la selección por ubicación. Las 4 capas son iguales, lo que será un problema cuando intente eliminar puntos mediante la medición del% del dosel.
Esto es lo que he intentado hasta ahora:
import arcpy
from arcpy import env
env.overwriteOutput = True
env.workspace = r'C:\temp_model_data\OutputData'
outWorkspace = env.workspace
# The polygons have canopy % data in attributes
polygons = r'C:\temp_model_data\CanopyPercentages.shp'
points = r'C:\temp_model_data\points_20_2012.shp'
if arcpy.Exists("pointsLayer"):
print "pointsLayer exists already"
else:
arcpy.MakeFeatureLayer_management (points, "pointsLayer")
print "pointsLayer created"
count = 1
#Create a search cursor to step through the polygon features
polys = arcpy.da.SearchCursor(polygons, ["OID@", "SHAPE@"])
for poly in polys:
# Create a name for the polygon features
count = count + 1
featureName = "polygon_" + str(count)
print featureName
# Select points that lie under polygons
arcpy.SelectLayerByLocation_management('pointsLayer', 'intersect', polygons)
arcpy.SaveToLayerFile_management('pointsLayer', outWorkspace + featureName + ".lyr", "ABSOLUTE")
# Add the random point selection script here...
# Delete selected points within each polygon based on the % canopy cover...
Figura 1
Figura 2