Während arcpy Geometry-Objekte keine echten Kurven unterstützen, implementierte Esri bei 10.3 True Curves in der REST-API und musste daher die JSON-Unterstützung für diese in FeatureSets implementieren. Sie können also arcpy dazu "austricksen", wenn Sie eine Kurve in einer JSON-Struktur erstellen .
Hier ein Beispiel: Erstellen Sie eine JSON-Datei mit echten Kurven (dies verwendet einen Kreisbogen und eine Bezier-Kurve).
{ 'fieldAliases': {
'Id': 'Id',
'FID': 'FID'
},
'fields': [{
'alias': 'FID',
'type': 'esriFieldTypeOID',
'name': 'FID'
}, {
'alias': 'Id',
'type': 'esriFieldTypeInteger',
'name': 'Id'
}],
'displayFieldName': '',
'spatialReference': {
'wkid': 103734,
'latestWkid': 103734
},
'geometryType': 'esriGeometryPolyline'
'features': [{
'geometry': {
"curvePaths":[[
[6,3],[5,3],
{"b":[[3,2],[6,1],[2,4]]},
[1,2],
{"a":[[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333]}
]]
},
'attributes': {
'Id': 0,
'FID': 0
}
}],
}
Laden Sie das dann in einen Feature-Set und speichern Sie es in einer Feature-Class.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
Und Boom, du hast echte Kurven! Folgendes wurde in ArcMap erstellt:
In Ihrem Fall können Sie also möglicherweise eine JSON-Struktur erstellen, indem Sie entweder die ursprünglichen Features in einen Feature-Set umwandeln und mit dem JSON spielen oder indem Sie Zeilen in einem Suchcursor durchlaufen. Die Mathematik mag etwas schwierig sein, um das zu bekommen, was Sie wollen, ist aber definitiv machbar.
Ich sollte auch erwähnen, dass Sie keinen vollständigen Funktionsumfang bilden müssen. Sie können die JSON-Geometrie einfach auch direkt an das übergeben arcpy.AsShape(geojson, True)
, um ein Geometrieobjekt zurückzugewinnen.