Bir şekil dosyasına çok parçalı geometri yazmak için Arcpy kullanırken garip bir sorunla karşılaştım. Ben köşe çiftleri listesini her parça listesinden çok parçalı bir özellik oluşturmak için bir InsertCursor kullanıyorum. Bu özellik oluşturulduğunda, bitişik birden çok parçanın otomatik olarak tek bir parçaya "çözüldüğünü" anlıyorum. Ama nedense, genellikle iç halkalar eklemek için gerekli olduğu gibi dizide bir Null arcpy.point () içermese de, bu bir iç halka oluşturur. İşte bir görselleştirme:
Bunun neden olduğu ve / veya sorunun üstesinden nasıl gelileceği hakkında bir fikri olan var mı?
Referans için, benim kod:
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)