span8
span4
虽然FME提供了近500种不同的变压器,但在某些情况下,用户可能希望对其数据应用特定的ArcGIS地理处理工具。在FME的PythonCaller transformer中使用ArcPy,工作空间的作者可以将这样的工具直接合并到他们的FME工作流中,有效地扩展了FME的地理处理能力。亚搏在线
然而,ArcPy特性和FME特性具有非常不同的结构,使用FME的特性逐个特性的基础将ArcPy工具应用于数据是一项非常复杂的任务。
因此,我们建议的方法是:
在本例中,我们将在一组输入多边形上使用ArcGIS溶解工具。
注:功能在这篇文章中提到的,需要的ArcGIS的行货版本在相同的计算机FME上安装。
源数据:data.zip
示例工作区:ArcPy中,example.fmw
源数据集是一组分区多边形,我们希望在公共分区类别的基础上分解这些多边形。
输入
产量
为此,我们将使用Arcpy溶解工具(文件)。
完成的工作空间将整个过程包装成一个FME自定义变压器:
这就创建了一个通用的解决方案,例如,用户可以更容易地选择要解散的特性组的属性。
在自定义转换器内部,必须执行许多步骤来为地理处理准备数据。
第一步是将特性类型(层/表名)更改为一致的类型。在这种情况下,我们使用AttributeCreator用一个称为“预溶解”的特性类型值来标记每个特性:
这将是在临时地理数据库中创建的表的名称。
下一步是为该数据创建一个临时文件位置。一个称为TempPathnameCreator的特殊转换器用于创建临时位置。但是,因为我们只希望生成单个位置,所以我们首先使用采样器将单个特性与其他特性分离,然后将该特性发送到TempPathnameCreator。
然后,使用一个VariableSetter和VariableRetriever将临时位置复制到所有其他特性。
注:由TempPathnameCreator创建的临时文件夹将工作区时完成后,删除所有你写在那里的文件被自动清理。既然我们要提出一个完整的地理数据库文件夹,在那里,这是非常有用的。
创建临时地理数据库所需的最后一步是创建模式。为此,采样的特征是通过一个FME轮毂变压器称为SchemaSetter。
创建模式后,所有的功能都被发送到FeatureWriter,将它们写入临时地理数据库:
注意,临时路径名用于定义要写入的位置,而fme_feature_type用于定义表名。还要注意,动态架构定义的设置被施加与源模式(“模式从模式功能”)从由SchemaSetter变压器创建的模式的到来。
注:使用动态模式是在其中我们生产可以在任何数据源一起使用的通用的解决方案的另一种方式。
在开始的ArcGIS地理处理之前,需要两个变压器。在创建地理数据库后,FeatureWriter输出包含输出数据集位置作为属性的概要功能。由于(在Windows计算机上)这个具有向前和向后斜杠的组合,StringReplacer变压器用于清理道路。
最后一个ParameterFetcher变压器用于检索的属性列表溶解的,从用户参数“集团通过”抽取它。
甲PythonCaller变压器进行的ArcPy中的处理。代码如下:
进口FME进口fmeobjects导入ArcPy中高清processFeature(功能):#获取从功能溶解FC和设置属性数据集= feature.getAttribute( '_数据集')dissolveFields = feature.getAttribute( '_ Group_Attrs')分裂( “”)ArcPy中。env.workspace = dataset # Set local variables inFeatures = "pre_dissolve" outFeatureClass = dataset + "/dissolved" # Execute Dissolve using group by attributes as Dissolve Fields arcpy.Dissolve_management(inFeatures, outFeatureClass, dissolveFields, "", "MULTI_PART", "DISSOLVE_LINES")
此代码获取关于从FME数据集属性的信息(在feature.getAttribute函数),然后执行所述ArcPy中使用该信息溶解的工具。
一旦Python脚本的工作就完成了,渐隐完成,获得功能回到FME工作空间需要FeatureReader变压器。触发Python脚本汇总特征被用作输入,通过一个属性提供源地理数据库位置。
我们指定的特征类型的溶解要素类阅读,所以我们不也可以参考原来的要素类为好。清理临时属性后,将溶解的特征是从所述变压器输出。
这个相同的过程可用于在某时刻确实整个要素类任何ArcPy中特征处理。
如果ArcGIS中可在同一台计算机上FME,其地理处理工具可用于通过使用PythonCaller,FeatureWriter和FeatureReader的延长FME的功能。
2017-10-04 13:33:05| 0.0|FATAL |Factory proxy not initialized . 2017-10-04 13:33:05| 56.8| 0.0|FATAL |f_106(PythonFactory): PythonFactory未能处理特性有什么建议吗?
| 14.3| 0.0|错误|Python异常提前感谢“'arcgisonlinefeatures'arcgisonlinefeatures'中的错误幻数:b'\x16\r\r\r\n'2017-10-10-04 13:54:59 | 14.3 | 0.0 |错误|无法创建Python阅读器'arcgisonlinefeatures'2017-10-04 13:54:54:59 | 14.5 | 0.2 | STATS𞓜将71487个功能存储到FME功能存储文件FME feature store文件'E:\FME临时\u TEMP\full-inspect--1 125-150150714371434371434343432823232328232323:54:59 | 14.5 | 0.0 |通知|保存将空间索引保存到文件'E:\ FME峎TEMP\full inspect--1 125-1507143282390峎u 35568.fsi'2017-10-04 13:54:59 | 14.5 | 0.0 |通知|已将空间索引保存到文件'E:\ FME峎TEMP\full inspect--1 125-1507143282390峎u 35568.fsi'2017-10-04 13:54:59 | 14.5 | 0.0 |错误|无法创建Python读取器`%0'
©2019安全亚搏在线软件公司法律