Data saya terdiri dari dua kacamata fitur:
- Poin = poin yang mewakili pohon
- Poligon = Poligon yang mewakili% area kanopi berdasarkan area. Setiap poligon di FC memiliki% pengukuran kanopi dalam atribut.
Saya mencoba mencapai yang berikut:
- Pilih titik di bawah fitur poligon
- Untuk poin di bawah setiap poligon, hapus X% dari poin berdasarkan atribut poligon
Tangkapan layar (Gambar 1) menunjukkan alat ModelBuilder saja yang disebut Iterate Feature Selection. Apa metode scripting Python yang benar untuk beralih melalui fitur dalam kelas fitur untuk meneruskan fitur ke perintah SelectLayerByLocation_management?
Gambar 2 menunjukkan output dari pilih oleh lokasi. Semua 4 lapisan adalah sama, yang akan menjadi masalah ketika saya mencoba dan menghapus poin dengan pengukuran kanopi%.
Inilah yang saya coba sejauh ini:
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...
Gambar 1
Gambar 2