J'ai rencontré un problème étrange lors de l'utilisation d'Arcpy pour écrire une géométrie en plusieurs parties dans un fichier de formes. J'utilise un InsertCursor pour créer une fonctionnalité en plusieurs parties à partir d'une liste de pièces, chacune avec une liste de paires de sommets. Je comprends que lorsque cette fonction est créée, plusieurs pièces adjacentes sont automatiquement «dissoutes» en une seule pièce. Mais pour une raison quelconque, cela crée un anneau intérieur, même si je n'ai pas inclus un arcpy.point () nul dans le tableau, comme cela est généralement requis pour ajouter des anneaux intérieurs. Voici une visualisation:
Quelqu'un at-il une idée de pourquoi cela se produit et / ou comment surmonter le problème?
Pour référence, voici mon 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)