Sementara objek Geometry arcpy tidak mendukung kurva sejati, pada 10.3, Esri mengimplementasikan Kurva Benar di API REST, dan karenanya harus mengimplementasikan dukungan JSON untuk mereka di FeatureSets. Jadi Anda bisa "menipu" arcpy agar melakukan ini untuk Anda jika Anda membuat kurva dalam struktur JSON .
Berikut ini contohnya: buat file JSON dengan kurva sejati (ini menggunakan busur lingkaran dan kurva Bezier), sesuatu seperti ini:
{ '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
}
}],
}
Kemudian, muat ke dalam set fitur dan simpan ke kelas Fitur.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
Dan boom, Anda memiliki kurva sejati! Inilah yang dibuat di ArcMap:
Jadi dalam kasus Anda, mungkin Anda bisa membangun struktur json dengan mem-casting fitur asli ke set fitur dan bermain dengan JSON, atau saat Anda beralih melalui baris dalam kursor pencarian. Matematika mungkin agak sulit untuk mendapatkan apa yang Anda inginkan, tetapi pasti bisa dilakukan.
Saya juga harus menyebutkan bahwa Anda tidak harus membentuk set fitur lengkap, Anda bisa meneruskan geometri JSON langsung ke arcpy.AsShape(geojson, True)
juga untuk mendapatkan objek geometri kembali.