Bei der Verwendung von Arcpy zum Schreiben von mehrteiliger Geometrie in ein Shapefile ist ein merkwürdiges Problem aufgetreten. Ich verwende einen InsertCursor, um ein mehrteiliges Feature aus einer Liste von Teilen mit jeweils einer Liste von Scheitelpunktpaaren zu erstellen. Ich verstehe, dass beim Erstellen dieses Features benachbarte mehrere Teile automatisch in einem einzigen Teil "aufgelöst" werden. Aus irgendeinem Grund wird hierdurch ein innerer Ring erstellt, obwohl ich kein Null arcpy.point () in das Array aufgenommen habe, wie dies normalerweise zum Hinzufügen innerer Ringe erforderlich ist. Hier ist eine Visualisierung:
Hat jemand eine Idee, warum dies geschieht und / oder wie das Problem behoben werden kann?
Als Referenz ist hier mein Code:
import arcpy
arcpy.CreateFeatureclass_management(r"C:\temp", "test.shp", "POLYGON")
OutputCursor = arcpy.InsertCursor(r"C:\temp\test.shp")
# List of parts, each with list of vertex pairs
ListOfParts = []
ListOfParts.append([[0,1],[1,1],[1,0],[0,0],[0,1]])
ListOfParts.append([[0,2],[1,2],[1,1],[0,1],[0,2]])
ListOfParts.append([[0,3],[1,3],[1,2],[0,2],[0,3]])
ListOfParts.append([[1,1],[2,1],[2,0],[1,0],[1,1]])
ListOfParts.append([[1,2],[2,2],[2,1],[1,1],[1,2]])
ListOfParts.append([[1,3],[2,3],[2,2],[1,2],[1,3]])
ListOfParts.append([[2,1],[3,1],[3,0],[2,0],[2,1]])
ListOfParts.append([[2,2],[3,2],[3,1],[2,1],[2,2]])
ListOfParts.append([[2,3],[3,3],[3,2],[2,2],[2,3]])
# Array of parts to be passed to newRow()
ArrayOfParts = arcpy.Array()
# Add parts to array
for Part in ListOfParts:
ArrayOfVertices = arcpy.Array()
for Vertex in Part:
ArrayOfVertices.add(arcpy.Point(Vertex[0],Vertex[1]))
ArrayOfParts.add(ArrayOfVertices)
ArrayOfVertices.removeAll()
# Output new feature
OutputFeature = OutputCursor.newRow()
OutputFeature.shape = ArrayOfParts
OutputCursor.insertRow(OutputFeature)