使用ArcPy在文件地理数据库中生成真实的曲线椭圆多边形?


9

作为背景,此问题源于试图回答有关如何从“表格到椭圆”工具输出的线生成重叠多边形的问题

使用ArcMap 10.1 GUI,使用椭圆构造工具将真实的曲线多边形数字化为文件地理数据库要素类非常容易,但是...

从包含中心点,长轴,短轴和方位角的表中读取行(arcpy.da.SearchCursor)时,是否可以编写真正的曲线椭圆多边形?

我曾希望arcpy.da.InsertCursor可以使用一个令牌来执行此操作,但是SHAPE@似乎受到Geometry对象支持的功能的限制,并且似乎不包含真实的曲线。


1
我到处搜索,发现唯一可能会有所帮助的是this
保罗

1
因此,此问与答可能会有所帮助:gis.stackexchange.com/questions/80/…–
blord-castillo

如果您想为此写一个答案,我会很乐意投票,但我可能会把没有ArcObjects答案的ArcPy留给Accept(如果没有其他人,我将通过链接到ArcGIS Idea提供该答案)。
PolyGeo

我知道这是一篇旧文章,但是我找到了一种解决方法,可以使用arcpy进行此操作。它确实需要一些数学运算,但是请参阅下面的答案。
crmackey '16

Answers:


11

尽管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),就可以返回几何图形对象。


1

当我们不得不从法律描述中将数百个包裹提取到地理数据库中时,我们遇到了同样的问题。COGO工具是唯一允许我们绘制和保留真实曲线的工具。不幸的是,COGO工具无法编写脚本。

但是,我们能够将法律说明转换为txt格式,从而可以将其加载到遍历窗口中以创建形状。根据表格式,您可以(使用Python)将表转换为txt,然后将其加载到遍历窗口中。


今天,我一直在尝试将真实的曲线轮廓导入FGDB并跨过Curve转换加载项。不确定是否有帮助,但认为它对于操纵真实曲线很有用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.