span8
span4
我想我要做的应该足够简单,但我正在努力找出python调用者中的语法。
如果你能提供以下方面的帮助,我将不胜感激:
我正在使用FeatureWriter向企业地理数据库写入数据,然后希望向这些特性类授予两个角色适当的特权。
这在一个独立的ArcPy脚本中非常简单,如下图所示:
fcList = arcpy. listfeatureclasses()用于fcList: arcpy中的fc。ChangePrivileges_management(fc, "Viewer", "GRANT", "AS_IS") arcpy.ChangePrivileges_management(fc, "Editor", "GRANT", "GRANT")
但是,我不知道如何将每个特性类名传递给PythonCaller(上面的“fc”)。
正如我提到的,我认为这应该很简单,但我显然遗漏了一些东西……
在FeatureWriter“Summary”端口上,连接一个list爆炸器并将其配置为遍历列表_特征类型{}。
然后将python调用者与以下内容连接起来:
导入fmeobjects导入arcpy arcpy.env。工作区= ' change_me。钻' def change_permissions(feature): fc = feature.getAttribute('name') arcpy.ChangePrivileges_management(fc, "Viewer", "GRANT", "AS_IS") arcpy.ChangePrivileges_management(fc, "Editor", "GRANT", "GRANT")
这将执行两个arcpy.changeprivileges_management()对于FeatureWriter输出的每个特性类,只执行一次函数。
你好大卫,
谢谢你的建议。
我运行了一个Python脚本来隔离地应用特权,然后在ModelBuilder中运行了相同的进程。
有趣的是(令人失望的是),结果与我的预期相反:
考虑到ModelBuilder实际上运行的是与其他两个解决方案相同的Python代码,我无法理解为什么会有这么大的差异。
我曾希望使用FME来自动化一个数据上传过程,目前正在ModelBuilder中运行,但考虑到这些结果,我又开始怀疑自己了。
我认为FME的整个过程仍然会更快,但这是我第一次发现FME在执行类似任务时比Esri产品慢,这让我摸不着头脑……
从逻辑上讲,我发现很难理解这些发现(假设您在同一个geodatabase上执行所有测试,同一个feature类包含相同的数据量),尤其是modelbuilder和独立python脚本之间的巨大差异。你可能想在esri论坛上询问这一点,这也许能为fme的速度变慢提供一些线索。
非常感谢您的回复!
最后我采用了大卫的方法,使用listexploder。
特权现在通过python代码应用,但是处理每个特性类需要5分钟以上的时间。
这些特性是从台式机写入amazon rds的,因此整个过程比本地数据库要慢,但是5分钟内对每个特性类应用特权似乎有点过分……
我已经读过,如果使用函数,pythoncaller将处理传递给它的每个特性的命令,如果处理每个特性类,则应使用python类。
我应该把上面的代码打包到类模板中吗?
我的Proof of Concept Workbench被设置为只读取2个要素类,并且从工作台上看,每个要素类似乎只传递一条记录给pythoncaller:
或者,我可以(应该)在关闭的python脚本中遍历每个特性类吗?
再次感谢你的帮助!
©2019安全亚搏在线软件公司法律