span8
span4
database-transformers-advanced.fmwt
FME包含了一些工作台变压器专为与数据库使用而设计的。这些都在变压器画廊的工作流类别。亚搏在线这样的变压器通常用于查询数据库,但也可以用于分发更新和插入或执行与驻留在数据库中的数据的空间关系。
对于我们而言,地理数据库是这样的数据库的一个例子。
为什么要使用变压器?
Transformers are sometimes preferable to using a writer to carry out updates because you may wish to only apply a change to a small subset of data, or you may wish to use a special where clause that isn’t available when you choose a writer's UPDATE mode.但是,除非你需要这些功能的具体原因,你应该使用一个作家来代替。
ArcSDEQuerier
该ArcSDEQuerier是用于发出命令到ArcSDE数据库中的变压器。这种变压器可以发出更新和删除命令,但是 - 如前所述 - 这是更好的地方可以使用SDE作家。在查询模式下全套的空间相互作用是可用的。
FeatureReader
该FeatureReader变压器可用于读取数据的任何FME支持的格式。第一次使用这个变压器是简单地读取数据集,就像一个读者。该变压器由一个输入功能开始,以便读取现有数据集。然后,它返回的数据集作为特征的内容。换句话说,它是真正做一个工作台读者的工作,但在工作区的转换阶段。引发剂的特征(一个或多个)可以来自一个阅读器,或从一个创作者变压器。
该变压器的第二个作用是进行空间与非空间查询上的数据被读取。以这种方式,数据的任何格式可被视为好像它是一个数据库。例如,如果引发剂的特点是一个多边形,所述FeatureReader可以使从所选择的数据集,其中这些点进入的多边形内下降读点特征。
下面的例子将说明这样的功能。
网格(ESRI文件地理数据库功能类)
地址分(ESRI文件地理数据库功能类)
在上面的图片,我们可以看到网格和地址点的可视化要素类以及其附带的属性。
这里的任务是在规定的城市方格内读取所有地址。由于该地址没有一个城市网格交叉引用,这将不得不与一个空间完成的,而不是非空间,查询。
一种方法是读取整个地址数据集,然后根据所选的网格方块过滤它。然而,如下所示,执行此任务的更有效方法是使用FeatureReader转换器。
1.读取网格数据
使用Esri地理数据库(文件Geodb)阅读器从源特征类读取网格特征几何图形。网格特性将提供在查询地址点数据集时使用的空间约束。我们不读取整个网格数据集,而是使用文件Geodatabase reader上的WHERE子句功能来选择一个特定的网格正方形作为地址点特性类的空间约束。这样的功能可以为工作流提供效率和性能。亚搏在线
将Esri地理数据库(文件Geodb)阅读器添加到工作空间并单击parameters按钮。选择网格作为要读取的表和参数的WHERE子句中的对话类型FacetText = 'L13'(记住要包含单引号)。
WHERE子句将查询底层文件Geodatabase并仅返回与查询匹配的网格正方形。需要注意的是,WHERE子句可以在通过Workbench中的导航树添加reader之后进行调整。
2.读地址分
使用FeatureReader转换器从源特性类读取地址特性几何图形。步骤1中选择的网格方块将作为FeatureReader的初始特征和空间查询。
向工作空间添加一个FeatureReader转换器,并将Grid square阅读器连接到FeatureReader的启动端口。打开FeatureReader参数对话框。对话的Reader部分要求查询数据的位置。这是地址点数据的位置。
接下来,在对话中要阅读的特性类型部分,点击[…]按钮并选择地址点功能类。虽然在这个实例中WHERE子句可以留空(我们已经选择了AddressPoints),但是我们确实需要选择一个空间交互。
从“空间筛选器”下拉菜单中选择“包含”。完成后,你的FeatureReader参数对话框应该如下图所示:
3.可视化的结果
将检查变压器连接到功能阅读器上的地址点输出端口。运行工作空间。与所选网格正方形对应的地址块应该出现在数据检查器中。覆盖原始网格数据以证明查询正确工作。
先进的任务
数据集中的一些地址有一个状态字段,其值是“已退役”——表示一个地址不再有效。你可以看到这在数据检查表视图:
使用FeatureReader的WHERE子句过滤掉具有此状态的地址。
请注意您选择的带有和不带有WHERE子句的网格的特性计数。这将有助于确认查询是否正确操作。例如,square L13总共应该有307个地址,如果不包括退役地址,应该有278个地址。
©2019安全亚搏在线软件公司|法律