首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArcPy ListLayers用作FME参数

ArcPy ListLayers用作FME参数
EN

Stack Overflow用户
提问于 2014-04-25 03:34:30
回答 1查看 654关注 0票数 1

我不确定这是不是个Python,FME,或者Esri的问题.

所以情况是这样的--一个用户打开了一个MXD文档,该文档用一个版本连接到一个ArcSDE数据库。我创建了一个FME工作台来写入这个数据库,但是用户不希望手动输入ArcSDE版本号作为用户参数(它目前是如何设置的)。相反,他们希望在工作台中使用当前在MXD中连接到的任何版本。

我已经收集了一些Python代码,这些代码可以为打开的MXD创建当前版本名称的文本文件,但是我希望将这个值(或者返回的值)作为一个新的脚本(Python)私有参数在FME工作台中使用。

现在有两个问题:

  1. 它列出了所有层的版本号(我只想要一条记录,这样就可以将一个值传递给FME)
  2. 它写入文本文件。它应该只返回版本号以便FME可以使用它作为参数吗?如果是的话,我该怎么做?

这是我到目前为止所掌握的代码(我是Python新手,所以请容忍我!)

代码语言:javascript
复制
import arcpy, os
mxd = arcpy.mapping.MapDocument(r'CURRENT')
text_file = open("C:\\temp\\VersionName.txt","w")
for lyr in arcpy.mapping.ListLayers(mxd):
    if lyr.supports("SERVICEPROPERTIES"):
        servProp = lyr.serviceProperties
        if lyr.serviceProperties["ServiceType"] != "SDE":
            print "Service Type: " + servProp.get('ServiceType', 'N/A')
        else:
            text_file.write (servProp.get('Version'))
text_file.close()        
del mxd
EN

回答 1

Stack Overflow用户

发布于 2015-05-11 19:47:21

假设所有层都使用相同的版本,您可以这样做:

代码语言:javascript
复制
import arcpy
mxd = arcpy.mapping.MapDocument(r'CURRENT')
layer_list = arcpy.mapping.ListLayers(mxd)
first_layer = layer_list[0] #The first item in layer_list
servProp = first_layer.serviceProperties #Get properties for the first layer
version = servProp.get('Version') #Get the version

要在FME中使用版本名作为参数,您可以使用一个PythonCaller转换器并将" version“设置为要公开的属性。有关文档,请参见To/Python-and-FME-Basics

祝好运!

汤姆

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23283683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档