Хоча об’єкти аркпійської геометрії не підтримують справжні криві, в 10.3 Esri реалізував True Curves в API REST, і тому довелося реалізувати підтримку JSON для них у FeatureSets. Таким чином, ви можете «підманути» архпій зробити це для вас, якщо створити криву в структурі JSON .
Ось приклад: створіть файл JSON з істинними кривими (для цього використовується кругла дуга та крива Безьє), приблизно так:
{ '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
}
}],
}
Потім завантажте це в набір функцій і збережіть його в клас Feature.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
І бум, у вас справжні криві! Ось що він створив у ArcMap:
Тож у вашому випадку, можливо, ви можете побудувати структуру json, передавши оригінальні функції до набору функцій та граючи з JSON, або під час перегляду рядків у курсорі пошуку. Математика може бути трохи хитрою, щоб отримати те, що ви хочете, але, безумовно, це можливо.
Я також повинен зазначити, що вам не потрібно формувати повний набір функцій, ви можете просто передати геометрію JSON безпосередньо в параметр arcpy.AsShape(geojson, True)
, щоб повернути об’єкт геометрії назад.