Eu me deparei com um problema estranho ao usar o Arcpy para escrever geometria de várias partes em um shapefile. Estou usando um InsertCursor para criar um recurso de várias partes de uma lista de partes, cada uma com uma lista de pares de vértices. Entendo que, quando esse recurso é criado, várias partes adjacentes são automaticamente "dissolvidas" em uma única parte. Mas, por algum motivo, isso está criando um anel interno, mesmo que eu não tenha incluído um arcpy.point () nulo na matriz, como normalmente é necessário para adicionar anéis internos. Aqui está uma visualização:
Alguém tem alguma idéia de por que isso está acontecendo e / ou como superar o problema?
Para referência, aqui está o meu código:
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)