Bien que les objets Arcpy Geometry ne prennent pas en charge les vraies courbes, à la version 10.3, Esri a implémenté les vraies courbes dans l'API REST et a donc dû implémenter la prise en charge JSON dans FeatureSets. Vous pouvez donc "tromper" arcpy en le faisant pour vous si vous créez une courbe dans une structure JSON .
Voici un exemple: créez un fichier JSON avec de vraies courbes (cela utilise un arc circulaire et une courbe de Bézier), quelque chose comme ceci:
{ '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
}
}],
}
Ensuite, chargez-le dans un ensemble d'entités et enregistrez-le dans une classe d'entités.
fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')
Et boom, vous avez de vraies courbes! Voici ce qu'il a créé dans ArcMap:
Donc, dans votre cas, vous pouvez peut-être créer une structure json en convertissant les fonctionnalités originales dans un ensemble de fonctionnalités et en jouant avec le JSON, ou en parcourant les lignes d'un curseur de recherche. Le calcul peut être un peu délicat pour obtenir ce que vous voulez, mais c'est certainement faisable.
Je dois également mentionner que vous n'avez pas besoin de former un ensemble complet de fonctionnalités, vous pouvez simplement passer la géométrie JSON directement dans le arcpy.AsShape(geojson, True)
ainsi pour récupérer un objet géométrique.