西班牙
斯潘4
我有一个点特征类,我正在使用Bufferer工具创建1nm缓冲区。我需要添加一个名为area km2的属性,并用以km2为单位的球形或测地线面积填充字段。在ArcGIS中,可以使用以下python脚本作为字段计算执行此操作:
!shape.geodesicArea@SQUAREKILOMETERS!
据我所知,没有FME转换器能让我计算多边形的测地线面积。因此,我希望能够使用Python调用方转换器运行上面的脚本。我对Python很在行,到目前为止我已经想到了:
导入fme
导入fmeobjects
#模板功能界面:
#使用此函数时,请确保将其名称设置为
#变压器参数“处理特性的类或函数”
def processFeature(功能):
feature.setAttribute(“面积km2”)
特征.计算属性(“面积km2”!shape.geodesicArea@SQUAREKILOMETERS!")
还有很多错误!有没有人能给我提些建议,让我把这个付诸实施?另一种方法是将feature类带回ArcGIS并在那里进行计算。不过,如果能实现自动化,那就太棒了。谢谢
AreaCalculator transformer和getArea()方法只计算平面面积。
我尝试使用PythonCaller中的free GeographicLib Python模块计算测地线面积,使用世界各国的形状文件作为测试数据集。这将产生一些国家多边形的结果,但对其他失败的原因我无法确定。报告的面积也与ArcGIS功能在同一数据集上报告的面积相差很大。
您可以尝试在PythonCaller中使用Arcpy方法,但这比看起来更复杂,因为FMEObjects和Arcpy feature对象是完全不同的,您需要通过逐顶点传输几何体来从一个对象转换到另一个对象。
我正在附加GeographicLib工作区,以备您尝试。一些PythonCaller代码可能也是Arcpy的一个很好的起点。
有关GeographicLib的更多信息,请参见http://geographiclib.sourceforge.net/html/python/index.html
嗨@Lharrhy,
我在Python的API文档.
此函数仅适用于fmegometry类型的对象并返回区域。接下来,可以在函数setAttribute(attrName,attrValue)中使用该值。请注意,此函数需要属性名和属性值。
进口FME进口fmeobjects变形点焊processFeature(功能):#获取区域geomFeature = feature.getGeometry()面积= geomFeature.getArea()#设置片区功能feature.setAttribute( “AREA”,区)
祝你的自动化项目!
?2019安全亚搏在线软件公司|合法的