Tôi đã gặp phải một vấn đề kỳ lạ khi sử dụng Arcpy để viết hình học nhiều phần cho một shapefile. Tôi đang sử dụng một Chèn để tạo một tính năng nhiều phần từ một danh sách các phần với mỗi danh sách các cặp đỉnh. Tôi hiểu rằng khi tính năng này được tạo, nhiều phần liền kề sẽ tự động được "hòa tan" thành một phần duy nhất. Nhưng vì một số lý do, điều này đang tạo ra một vòng bên trong, mặc dù tôi không bao gồm Null arcpy.point () trong mảng như thường được yêu cầu để thêm các vòng bên trong. Đây là một hình dung:
Có ai có bất kỳ ý tưởng tại sao điều này đang xảy ra và / hoặc làm thế nào để khắc phục vấn đề?
Để tham khảo, đây là mã của tôi:
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)