Mentre gli oggetti Geometry arcpy non supportano le curve reali, in 10.3, Esri ha implementato True Curves nell'API REST e quindi ha dovuto implementare il supporto JSON per loro in FeatureSet. Quindi puoi "ingannare" arcpy nel fare questo per te se crei una curva in una struttura JSON .
Ecco un esempio: crea un file JSON con curve vere (utilizza un arco circolare e una curva di Bezier), qualcosa del genere:
{ '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
}
}],
}
Quindi, caricalo in un set di funzionalità e salvalo in una classe Feature.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
E boom, hai delle vere curve! Questo è ciò che ha creato in ArcMap:
Quindi, nel tuo caso, forse puoi costruire una struttura json lanciando le caratteristiche originali in un set di funzioni e giocando con JSON, oppure mentre esegui l'iterazione attraverso le righe in un cursore di ricerca. La matematica può essere un po 'complicata per ottenere ciò che vuoi, ma sicuramente è fattibile.
Dovrei anche menzionare che non devi formare un set completo di funzionalità, puoi semplicemente passare la geometria JSON direttamente arcpy.AsShape(geojson, True)
anche nell'oggetto per recuperare un oggetto geometria.