私のデータは2つのフィーチャクラスで構成されています。
- ポイント=木を表すポイント
- ポリゴン=キャノピーの面積による面積を表すポリゴン。FCの各ポリゴンには、属性にキャノピー測定値があります。
私は以下を達成しようとしています:
- ポリゴンフィーチャの下のポイントを選択します
- 各ポリゴンの下のポイントについて、ポリゴン属性に基づいてポイントのX%を削除します
スクリーンショット(図1)は、反復機能選択と呼ばれるModelBuilder専用ツールを示しています。 機能をSelectLayerByLocation_managementコマンドに渡すために、機能クラスの機能を反復処理する正しいPythonスクリプトメソッドは何ですか?
図2は、select by locationの出力を示しています。4つのレイヤーはすべて同じです。これは、キャノピーの%測定でポイントを削除しようとすると問題になります。
これは私がこれまでに試したことです:
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...
図1
図2
2
私はあなたのコードを調べていますが、簡単に言うと、ポリゴン名は2から始まります。カウントは、名前が設定される前に増分されます。ループの開始前にcount = 0を設定するか、機能名を割り当てた後にcount = count + 1(短縮してcount + = 1にすることができます)を配置する必要があります。
—
HeyOverThere 2013