斯潘8
斯潘4
向工作区添加一个python启动脚本是扩展工作台功能的一个很好的方法。尽管我们鼓励您尽可能使用FME的变压器,有时有必要利用自定义脚本提供的更大控件。如果您没有很多以前的编程经验,那么Python是一种很好的语言,因为它简单、干净的语法使其易于使用和理解。python也被选为Arcgis的默认脚本语言;如果您的机器上有一个有效的arcgis许可证,您可以使用python脚本中arcpy模块中的许多地理处理功能,您还可以使用ModelBuilder从模型创建python脚本。
在这个例子中,我们将创建一个python启动脚本来在工作区运行之前进行一点geodatabase清理。我们使用的数据集是一个文件地理数据库,其中包含一个通过关系类链接到注释要素类的现有多边形要素类。当我们试图覆盖polygon类时,问题就出现了;功能类型参数上的“截断表”设置将只截断多边形功能表,不会根据需要删除相应的注释功能。为了使我们的工作区正确运行,我们必须确保在工作区执行之前,两个表都已正确清空,以便可以编写和正确链接新功能。要做到这一点,我们将从python启动脚本调用arcpy python模块中的delete rows方法,以便在运行工作区之前从两个表中删除所有特性。
第一,我们需要创建一个python脚本。如果您不熟悉使用arcpy编写Python脚本,使用ArcgisModelBuilder将模型导出到Python脚本是一种简单的入门方法。在这个例子中,我们创建了一个简单的模型,在我们的地理数据库中的两个表上运行数据管理工具箱中的删除行工具。我们将此工具添加到空白模型中,并将其单个参数设置为要清除的表的名称。我们对多边形要素类和注释要素类都这样做。然后,我们可以通过从“模型”菜单中选择“导出>到python脚本”并指定文件位置,将模型导出到python脚本,如下所示:
然后我们可以在文本编辑器(如记事本)中检查脚本的内容。内容应如下所示:
#-*-编码:UTF-8-*-
#——————————————————————————————————————————————————————————————————
γSAMPY
#创建日期:2012-11-05 10:44:15.00000
#(由Arcgis/ModelBuilder生成)
描述:
#——————————————————————————————————————————————————————————————————
#导入arcpy模块
进口弧度
#局部变量:
parcels=“c:\\fmedata\\resources\\esri\\citydata.gdb\\propertydata\\parcels”
parcel_id=“c:\\fmedata\\resources\\esri\\citydata.gdb\\propertydata\\parcel_id”
#进程:删除行
arcpy.deleterrows_管理(包裹)
#处理:删除行(2)
arcpy.deleterrows_管理(包ID)
此脚本导入arcpy模块,将在ModelBuilder中指定的要素类位置分配给变量,并调用删除行地理处理工具。
Workbench允许我们在主工作区执行之前添加一个要在启动时运行的python脚本,或者在工作区完成运行(成功与否)后关闭时,通过添加脚本作为工作区参数。要设置此参数,我们在导航器窗口中找到工作区参数条目,然后展开高级参数,如下所示:
然后双击“启动python脚本”。这将打开一个简单的文本编辑器,在这里我们可以粘贴Python脚本的内容。从记事本或所选文本编辑器中选择并复制导出的python脚本的内容,然后粘贴到启动python脚本编辑器中。然后单击确定。现在,您的python脚本应该全部设置为在工作区之前运行。
您还可以使用pythoncaller转换器来调用python和arcpy脚本。在这里描述的例子中,您可以将pythoncaller与featurereader结合使用,而不是启动python脚本。同样地,FeatureWriter+pythonCaller可以替换关闭脚本。
在arcpy脚本中处理FME特性有点复杂,本文将对此进行讨论。使用arcpy进行FME特征处理。
如果在尝试运行工作区时收到类似以下内容的错误消息:
python异常
这很可能是因为arcpy库尚未添加到path环境变量中。要解决这个问题,找到在下找到的desktop10.1.pth文件
C:\python27\arcgis10.1\lib\site包,并将其内容中指定的文件位置添加到“path”环境变量中。取决于你的环境,您可能还需要添加
C:\python27\arcgis10.1\lib\site包它本身就是pythonpath环境变量。
如果你在使用arcpro,然后本文 可能有助于您的arcpy配置
如果您在2013年的FME中收到此错误,可能是因为此中确定的问题。文章.arcpy模块与fme不兼容,因为fme 2013是用Visual Studio 2010编译的。在FME 2012构建中运行工作区或升级到Arcgis 10.2是唯一的解决方法。
附件是两个示例工作区
arcpystartup示例.fmw-在本例中,用于在运行工作空间之前从要素类中删除行
结束_python_script.fmw-在FME构建一个形状文件之后,在它上生成一个空间索引(现在可以由形状编写器自己完成
?2019安全亚搏在线软件公司|合法的