斯潘8
斯潘4
注:在很多情况下,使用FME阅读器读取表列表,然后特技演员变压器读取数据可能比下面描述的方法更好。
用户经常询问如何将特性类型列表传递给FME阅读器。例如,有人可能会给你一个文本文件,列出他们想要翻译的所有SDE表。FME中的每个读者都有一个要读取的功能类型参数,它接受要读取的表或层的列表。但您希望工作区从文件或数据库表中读取列表。下面是我们如何做到这一点的两个例子。
另外,附件是一个简单的文本文件,列出了我们要读取的表,打电话featureTypeStoread.txt文件.表如下所示:
支持.国家子部门
支持.城市公园
脚本化参数是使用python或tcl代码为FME动态设置参数的强大方法。在这里,我们将使用脚本从文本文件中读取此表列表,并返回要读取的功能类型参数。在示例工作区geodatabase2shape.fmw中,在左侧的导航器窗格中查找并展开私有参数。您将看到一个名为特征类型脚本打开文件并将每一行添加到特征类型变量。下面是脚本:
#从已发布的参数获取文件
listfile=(fme_macrovalues['featureClassList'])
F=打开(listfile,'r')
featureTypes='
#读取文件并将每一行添加到featuretypes变量
对于f.read().split(“\n”)中的行:
featureTypes+=(line+“”)
F.闭包()
#将此列表返回到参数
返回特征类型
请注意,文件名来自已发布的参数。工作区已经设置了一个已发布的参数,以提示用户提供他们要提供的文本文件。
脚本返回我们想要读取的功能类型列表,但我们需要把它和读者联系起来。我们将私有脚本参数链接到要读取的功能类型导航窗格中读卡器上的参数,如下所示。
而不是从文本文件中读取表列表,在本例中,我们从另一个Oracle表中读取Oracle空间读取器的表列表。否则,此示例与示例1非常相似。在这里我们再次使用动态图式读写模式,我们使用一个python脚本参数来读取阅读器的特性类型列表。
工作区包含已发布的参数以提示用户进行Oracle连接设置,对于表名,其中包含Oracle阅读器的表列表。脚本中使用Oracle连接参数连接到Oracle,Oracle Reader中使用相同的参数。
再次调用脚本化参数特征类型并与要读取的功能类型Oracle空间读取器的参数。这次,python脚本需要python模块CXI Oracle,它包含在由FME安装的python版本中。下面是用于读取Oracle表的脚本。请注意,我们在何处使用fme_宏值[]字典。还要注意,我们使用尝试:语法在Oracle连接失败或找不到表时为用户提供一些帮助。
导入cx_Oracle
导入FmeObjects
#从FME中获取参数
用户=fme_宏值[‘用户’]
pass=fme_宏值[‘pass’]
服务=fme_宏值[‘服务’]
tablename=fme_宏值['tablename']
featureTypes=“”
#设置Oracle连接字符串
connectionString=user+'/'+pass+'@'+服务
#设置Oracle查询
query='从'+tablename中选择*
#连接到Oracle并查询表
尝试:
connection=cx_oracle.connect(连接字符串)
cursor=connection.cursor()。
cursor.arraysize=250 cursor.execute(查询)
#循环访问记录并将第一个字段添加到FeatureTypes字符串
对于光标中的行:
FeatureTypes=FeatureTypes+''+行[0]
光标
连接。关闭()
例外:print“无法连接到数据库或表。”
#设置参数
返回特征类型
传递功能类列表的一个选项是使用模式(任何格式)阅读器提取功能类,并将它们传递给FeatureReader。更多的解释和视频显示了这一点与一组ESRI文件地理数据库在如何从多个ESRI地理数据库中读取所有要素类.
?2019安全亚搏在线软件公司|合法的