用作FME参数的ArcPy ListLayers

2024-05-14 15:51:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我不确定这是否更像是一个Python、FME或Esri问题。。。在

下面是一个用户打开了一个MXD文档,它连接到一个版本的ArcSDE数据库。我创建了一个FME工作台来写入这个数据库,但是用户不想手动输入ArcSDE版本名作为用户参数(它当前的设置方式)。相反,他们希望在工作台中使用MXD中当前连接到的任何版本。在

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

现在有两个问题:

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

以下是我目前为止的代码(我是一个Python新手,请耐心等待!)在

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

Tags: 代码text用户版本数据库参数filearcpy
1条回答
网友
1楼 · 发布于 2024-05-14 15:51:38

假设所有层都使用相同的版本,可以执行以下操作:

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

和13;
和13;

要在FME中使用版本名作为参数,可以使用PythonCaller转换器并将“version”设置为要公开的属性。有关文档,请参见https://knowledge.safe.com/articles/How_To/Python-and-FME-Basics。在

祝你好运!在

汤姆

相关问题 更多 >

    热门问题