尽管arcpy Geometry对象不支持真实曲线,但在10.3版本中,Esri在REST API中实现了True Curves,因此必须在FeatureSets中为其实现JSON支持。因此,如果您在JSON结构中创建曲线,则可以“欺骗” Arcpy为您执行此操作。
这是一个示例:创建带有真实曲线的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)
,就可以返回几何图形对象。