Arcpyを使用してマルチパートジオメトリをシェープファイルに書き込むと、奇妙な問題に遭遇しました。InsertCursorを使用して、頂点ペアのリストを持つ各パーツのリストからマルチパートフィーチャーを作成しています。この機能を作成すると、隣接する複数のパーツが自動的に単一のパーツに「溶解」されることを理解しています。しかし、何らかの理由で、通常は内部リングを追加するために必要なNull arcpy.point()を配列に含めなかったにもかかわらず、これは内部リングを作成しています。これが視覚化です:
誰がこれが起こっているのか、および/または問題を克服する方法を知っていますか?
参考のために、ここに私のコードがあります:
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)
1
ええ-arcpy.AsShapeメソッドには問題があります-この欠陥のある動作の別の例についてはこちらを参照してください:gis.stackexchange.com/questions/10201/…– valveLondon
—
20:23