Meine Daten bestehen aus zwei Feature-Classes:
- Punkte = Punkte, die Bäume darstellen
- Polygone = Polygone, die% Baldachin Fläche für Fläche darstellen. Jedes Polygon in der FC hat eine prozentuale Überdachungsmessung in den Attributen.
Ich versuche Folgendes zu erreichen:
- Wählen Sie Punkte unter Polygon-Features aus
- Löschen Sie für die Punkte unter jedem Polygon X% der Punkte basierend auf dem Polygonattribut
Der Screenshot (Abbildung 1) zeigt ein Nur-ModelBuilder-Tool namens Iterate Feature Selection. Was ist die richtige Python-Skriptmethode, um Features in einer Feature-Class zu durchlaufen, um das Feature an den Befehl SelectLayerByLocation_management weiterzugeben?
Abbildung 2 zeigt die Ausgabe der Auswahl nach Standort. Alle 4 Ebenen sind gleich, was ein Problem darstellt, wenn ich versuche, Punkte durch die Messung des Baldachins in% zu löschen.
Folgendes habe ich bisher versucht:
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...
Abbildung 1
Figur 2