span8
span4
注意:对于许多情况,使用FME读取器读取表列表,然后执行FeatureReadertransformer读取数据可能是比下面描述的更好的方法。
用户经常会问如何将特性类型列表传递给FME阅读器。例如,有人可能会给您一个文本文件,其中列出了他们想要翻译的所有SDE表。FME的每个读者都有一个特征类型为READ参数,它接受要读取的表或层的列表。但是您希望工作区从文件或数据库表中读取列表。下面是我们如何做到这一点的两个例子。
还附加了一个简单的文本文件,它列出了我们想要读取的表FeatureTypesToRead.txt。表列如下:
Support.CountySubdivisions
Support.city_parks
脚本化参数是使用Python或TCL代码动态设置FME参数的强大方法。在这里,我们将使用脚本从文本文件中读取这个表列表,并返回一个值特征类型为READ参数。在样例工作区GeoDatabase2Shape中。fmw, look in the Navigator pane on the left and expand the private parameters.您将看到一个名为的私有参数FeatureTypes脚本打开文件并将每一行添加到featureTypes变量。剧本是这样的:
#从已发布的参数获取文件
ListFile中=(FME_MacroValues [ 'FeatureClassList'])
F =开放(ListFile中, 'R')
featureTypes = ''
#阅读文件和每个行添加到featureTypes变量
在f.read()线分离( '\ n'):
featureTypes + =(行+““)
f.close()
#Return此列表参数
返回featureTypes
注意,文件名来自一个已发布的参数。工作区已经设置了一个已发布的参数来提示用户输入他们想要提供的文本文件。
该脚本返回我们想要读取的特性类型列表,但是我们需要将其链接到阅读器。我们将private脚本化参数链接到特征类型为READ导航窗格中reader上的参数,如下所示。
在本例中,我们不是从文本文件中读取表列表,而是从另一个Oracle表中为Oracle Spatial reader读取表列表。否则,此示例与Example1非常相似。这里我们再次使用动态模式我们使用Python脚本化的参数为阅读器读取特性类型列表。
工作区包含发布的参数,用于提示用户输入Oracle连接设置和表名,表名包含Oracle reader的表列表。参数在脚本中使用的Oracle连接来连接到Oracle和相同的参数都在Oracle读者使用。
该脚本参数又被称为FeatureTypes并链接到特征类型为READ参数Oracle Spatial的读者。这一次,Python脚本需要Python模块cx_Oracle,它包含在由FME安装Python版本。下面是用于读取Oracle表的脚本。请注意,我们使用得到FME发布的参数值的Oracle连接FME_MacroValues []字典。另外请注意,我们使用尝试:语法给用户一些帮助,如果Oracle连接失败,或者如果表中没有找到。
进口cx_Oracle
进口fmeobjects
从FME#获取参数
用户= FME_MacroValues [ '用户']
通= FME_MacroValues [ '通']
服务= FME_MacroValues [ '服务']
表名= FME_MacroValues [ '表名']
featureTypes = “”
#SET备份Oracle连接字符串
的ConnectionString =用户+ '/' +通行证+ '@' +服务
#SET备份Oracle查询
查询= +表名“选择从*”
#连接到Oracle和查询表
尝试:
连接= cx_Oracle.connect(的ConnectionString)
光标= connection.cursor()
cursor.arraysize = 250 cursor.execute(查询)
通过记录#LOOP和第一字段添加到featureTypes串
在游标行:
featureTypes = featureTypes + '' +行[0]
cursor.close()
connection.close()时
不同的是:打印“无法连接到数据库或表。”
#设置参数
返回featureTypes
用于使在要素类的列表中的选项是提取使用模式(在任何格式)读取器的要素类,并通过将它们传递到一个FeatureReader代替。更多的解释,并表示这对一组ESRI的文件地理的视频提供如何从阅读多个ESRI地理数据库的所有要素类。
©2019安全亚搏在线软件公司法律