span8
span4
在工作空间中添加python启动脚本是扩展workbench功能的好方法。尽管我们鼓励您尽可能地使用FME的转换器,但有时有必要利用自定义脚本提供的更大的控制。如果您之前没有很多编程经验,那么python是一种很好的语言,因为它简单而清晰的语法使其易于使用和理解。Python也被选为ArcGIS的默认脚本语言;如果您的机器上有有效的ArcGIS许可证,那么您可以在python脚本中使用arcpy模块中的许多地理处理函数,您还可以使用ModelBuilder从您的模型创建python脚本。
在本例中,我们将创建一个python启动脚本,以便在工作空间运行之前进行一些地理数据库清理。我们使用的数据集是一个文件地理数据库,它包含一个现有的多边形特征类,通过一个关系类链接到一个注释特征类。当我们试图覆盖多边形类时,问题就出现了;特征类型参数上的truncate表设置只会截断多边形特征表,相应的标注特征不会按需删除。为了让我们的工作空间正确地运行,我们必须确保在工作空间执行之前正确地清空这两个表,以便能够编写和正确地链接新特性。为此,我们将从python启动脚本中调用arcpy python模块中的Delete Rows方法,以便在工作空间运行之前删除这两个表中的所有特性。
首先,我们需要创建一个python脚本。如果您不熟悉使用arcpy编写python脚本,那么使用ArcGIS ModelBuilder将模型导出到python脚本是一种简单的入门方法。在本例中,我们创建了一个简单的模型,它从数据管理工具箱中对地理数据库中的两个表运行Delete Rows工具。我们将此工具添加到空白模型中,并将其单个参数设置为我们希望清除的表的名称。我们对多边形特性类和注释特性类都这样做。然后,我们可以从模型菜单中选择export > to python script,并指定如下所示的文件位置,从而将模型导出到python脚本:
然后,我们可以在文本编辑器(如记事本)中检查脚本的内容。内容应该是这样的:
编码:utf-8 -*-
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#samp.py
创建日期:2012-11-05 10:44:15万
#(由ArcGIS/ModelBuilder生成)
描述:
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#导入arcpy模块
进口arcpy
局部变量:
包裹= " C: \ \ FMEData \ \ \ \ Esri资源\ \ CityData.gdb \ \ PropertyData \ \包裹”
Parcel_Ids = " C: \ \ \ \ FMEData \ \资源Esri \ \ CityData.gdb \ \ PropertyData \ \ Parcel_Ids”
# Process:删除行
arcpy.DeleteRows_management(包裹)
#流程:删除行(2)
arcpy.DeleteRows_management (Parcel_Ids)
该脚本导入arcpy模块,将ModelBuilder中指定的feature类位置分配给变量,并调用Delete行地理处理工具。
Workbench允许我们添加一个python脚本,以便在主工作空间执行之前启动时运行,或者在工作空间完成运行(成功与否)后关闭,方法是将脚本添加为工作空间参数。要设置这个参数,我们在navigator窗口中找到workspace parameters条目,然后展开高级参数,如下所示:
然后双击“启动Python脚本”。这将打开一个简单的文本编辑器,我们可以在其中粘贴python脚本的内容。从记事本或您选择的文本编辑器中选择并复制导出的python脚本的内容,然后粘贴到启动python脚本编辑器中。然后单击OK。现在您的python脚本应该全部设置为在工作空间之前运行。
您还可以使用PythonCaller转换器来调用python和arcpy脚本。在这里描述的示例中,您可以将PythonCaller与FeatureReader结合使用,而不是使用启动Python脚本。类似地,FeatureWriter + PythonCaller可以替换Shutdown脚本。
在您的arcpy脚本中处理FME特性比较复杂,本文将对此进行讨论使用Arcpy进行FME特性处理。
当你尝试运行你的工作区时,如果你收到一个类似以下的错误消息:
Python的例外
很可能是因为arcpy库没有添加到path环境变量中。要修复此问题,请定位在下面找到的Desktop10.1.pth文件
C: \ Python27 \ ArcGIS10.1 \ Lib \网站,并将其内容中指定的文件位置添加到“Path”环境变量中。根据您的环境,您可能还需要添加
C: \ Python27 \ ArcGIS10.1 \ Lib \网站本身到PYTHONPATH环境变量。
如果你正在使用ArcPro,那么这篇文章可以帮助您的arcpy配置吗
如果你在FME 2013中收到这个错误,可能是由于这个问题文章。arcpy模块与FME不兼容,因为FME 2013是用Visual Studio 2010编译的。在FME 2012的版本中运行工作空间或者升级到ArcGIS 10.2是唯一的解决方案。
附件是两个示例工作区
ArcpyStartupExample.fmw-在本例中用于在运行工作区之前从特性类中删除行
End_Python_script.fmw-在FME构建一个形状文件后生成一个空间索引(现在可以由形状写入器自己完成)
©2019安全亚搏在线软件公司法律