span8
span4
database-transformers-advanced.fmwt
FME包含许多专门设计用于数据库的工作台转换器。这些属于transformer图库中的工作亚搏在线流类别。这种转换器通常用于查询数据库,但也可用于调度更新和插入,或与数据库中的数据执行空间关系。
出于我们的目的,Geodatabase就是这种数据库的一个例子。
为什么要使用变压器?
转换器有时比使用写入器执行更新更可取,因为您可能希望仅对一小部分数据应用更改,或者您可能希望使用在选择写入器更新模式时不可用的特殊where子句。但是,除非出于特定的原因需要这些函数,否则应该使用writer。
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安全亚搏在线软件公司法律