HOW TO
In ArcGIS Pro kann ein Polygon-Feature mit Werkzeugen wie dem Werkzeug Teilen (Analysis) und dem Werkzeug "Teilen" im Bereich Features ändern in mehrere Segmente geteilt werden. Mit den bereitgestellten Werkzeugen kann das Polygon jedoch nicht nach Prozentsatz geteilt werden. Befolgen Sie die Anweisungen in diesem Artikel, um ein Polygon im Python-Fenster nach Prozentsatz zu teilen.
Note: Ensure the data added to the map and the map share the same projected coordinate system to avoid errors.
Import arcpy
p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("<Map_Name>")[0]
lyr = m.listLayers(0)
splits = [20, 30, 50]
with arcpy.da.SearchCursor("<Layer_Name>", ["SHAPE@"]) as pcursor:
for prow in pcursor:
polygon = prow[0] # polygon to cut
e = polygon.extent # bounding extent of polygon
print(e.XMin,e.YMin,e.XMax,e.YMax)
del pcursor
stepsize = 0.001
leftXstart = e.XMin leftX = e.XMin + stepsize ymax = e.YMax ymin = e.YMin
cutpoly = polygon
icursor = arcpy.da.InsertCursor("<Layer_Name>", ["SHAPE@"])
for i in splits[:2]:
print(i)
tol = 0
while tol < i:
# construct NS line
pntarray = arcpy.Array()
pntarray.add(arcpy.Point(leftX, ymax))
pntarray.add(arcpy.Point(leftX, ymin))
pline = arcpy.Polyline(pntarray,arcpy.SpatialReference(<WKID>))
# cut polygon and get split-parts
cutlist = cutpoly.cut(pline)
tol = 100 * cutlist[1].area / polygon.area
leftX += stepsize
#print str(leftX) + ":" + str(tol)
cutpoly = cutlist[0]
icursor.insertRow([cutlist[1]])
# part 0 is on the right and part 1 is on the left of the split
icursor.insertRow([cutlist[0]]) del icursor
Im nachfolgenden Code finden Sie das vollständige Skript.
Import arcpy
p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("Map")[0]
lyr = m.listLayers(0)
splits = [20, 30, 50]
with arcpy.da.SearchCursor("testpolygon", ["SHAPE@"]) as pcursor:
for prow in pcursor:
polygon = prow[0]
e = polygon.extent
print(e.XMin,e.YMin,e.XMax,e.YMax)
del pcursor
stepsize = 0.001
leftXstart = e.XMin
leftX = e.XMin + stepsize
ymax = e.YMax
ymin = e.YMin
cutpoly = polygon
icursor = arcpy.da.InsertCursor("testpolygon", ["SHAPE@"])
for i in splits[:2]:
print(i)
tol = 0
while tol < i:
pntarray = arcpy.Array()
pntarray.add(arcpy.Point(leftX, ymax))
pntarray.add(arcpy.Point(leftX, ymin))
pline = arcpy.Polyline(pntarray,arcpy.SpatialReference(3857))
cutlist = cutpoly.cut(pline)
tol = 100 * cutlist[1].area / polygon.area
leftX += stepsize
cutpoly = cutlist[0]
icursor.insertRow([cutlist[1]])
icursor.insertRow([cutlist[0]])
del icursor
In der folgenden Abbildung ist das Polygon dargestellt, das nach dem Ausführen des Python-Skripts in ArcGIS Pro nach 20 %, 30 % und 50 % geteilt ist.

Artikel-ID: 000027999
Unterstützung durch ArcGIS-Experten anfordern
Beginnen Sie jetzt mit dem Chatten