Mặc dù các đối tượng Hình học Arcpy không hỗ trợ các đường cong thực, vào lúc 10.3, Esri đã triển khai Đường cong thật trong API REST và do đó phải triển khai hỗ trợ JSON cho chúng trong FeatureSets. Vì vậy, bạn có thể "lừa" arcpy để làm điều này cho bạn nếu bạn tạo một đường cong trong cấu trúc JSON .
Dưới đây là một ví dụ: tạo tệp JSON với các đường cong thực (điều này sử dụng cung tròn và đường cong Bezier), đại loại như sau:
{ '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
}
}],
}
Sau đó, tải nó vào một bộ tính năng và lưu nó vào một lớp Tính năng.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
Và bùng nổ, bạn có những đường cong thực sự! Đây là những gì nó được tạo trong ArcMap:
Vì vậy, trong trường hợp của bạn, có thể bạn có thể xây dựng cấu trúc json bằng cách chuyển các tính năng gốc thành một bộ tính năng và chơi với JSON hoặc khi bạn lặp qua các hàng trong một con trỏ tìm kiếm. Toán học có thể hơi khó để đạt được những gì bạn muốn, nhưng chắc chắn là có thể thực hiện được.
Tôi cũng nên đề cập rằng bạn không phải tạo thành một bộ tính năng đầy đủ, bạn chỉ có thể chuyển trực tiếp hình học JSON vào arcpy.AsShape(geojson, True)
để lấy lại một đối tượng hình học.