西班牙
斯潘4
注:内容已更新为FME 2018.1,但视频仍显示2016.1,示例略有不同。
存储在数据库中的信息不可能保持不变。当这些更改的源是其他地方的数据集时,必须进行批量更新。
此示例执行更新的混合操作-首先是插入,然后是更新和删除操作-筛选数据以确定要执行的操作。
注意:虽然本例使用PostGIS数据库,但同样的技术也适用于其他数据库。
源数据是温哥华市公园的数据集:
瓷砖由地图查询
第一个任务是把市中心的公园装进邮政地理信息系统。第二个任务是根据最近公园重建的信息更新该表。
一创建数据库连接
如果尚未准备好数据库连接(如本教程中的其他几个练习中所使用的),则必须立即创建它。
启动FME工作台。从菜单栏中选择工具>FME选项,然后从选项列表中选择数据库连接。
如果已经有一个名为PostGIS Training Database的连接,则可以跳到步骤2。否则,请单击+按钮添加新连接:
在打开的对话框中,输入连接参数:
…然后单击“保存”以保存新连接。
二生成工作区
使用“生成”选项(快捷键Ctrl+G)生成新工作空间。使用以下参数:
单击“确定”关闭对话框并生成工作空间。
三。增加测试变压器
这个数据集包含了所有的公园特色,但我们只需要在市中心地区的公园。因此,在reader和writer特性类型对象之间的工作区中添加一个Tester转换器:
确保Tester:Passed端口是连接到Parks表的端口。
现在打开测试仪参数,并将其设置为测试邻域字段的值是否为“市区”
四检查表参数
现在查看名为Parks的编写器要素类型的参数(单击齿轮图标)。
将表名更改为市中心公园并将表限定符设置为弗梅德莫.确保功能操作设置为插入表处理设置为删除并创建:
注:如果本教程的另一个用户已经创建了表,我们将在本练习中使用Drop和Create。否则,如果需要,我们可以使用Create。
单击“确定”关闭对话框。
五运行工作区
现在保存工作区,然后运行它。一9个功能将通过测试并写入数据库表:
检查输出以证明翻译正确。记下每个公园有多少棵树,并在地图上找到门户公园(稍后我们将利用这些信息)。
需要注意的是,如果重新运行工作区,每次都会删除并重新创建表。这意味着您不是在添加数据,而是覆盖它。如果源数据在任何时候发生更改,那么这将是一个有效的过程。
六过滤和更新数据
现在让我们假设是六个月后。对公园进行了各种真实的更新。门户公园因重建而暂时关闭,应将其从桌面上移除。作为植树计划的一部分,所有其他公园都增加了100%的树木。
我们需要编辑工作区来更新数据,并定义应该执行的操作。
首先添加第二个测试变压器。将此设置为测试PaarkName=Portal Park的位置:
这将数据分为应删除的记录(Tester:Passed)和需要更新的记录(Tester:Failed)。
七更新树计数
将ExpressionEvaluator变压器连接到测试仪:失败端口。设置评估模式参数以覆盖现有的属性,并选择TreeCount作为更新的属性。
将算术表达式设置为@Value(TreeCount)*2(即。增加100%的树木:
八设置更新类型
因为这里有多个混合操作(一些更新,一些删除),我们必须用操作分别标记每个功能。
将AttributeManager转换器添加到每个筛选数据集,确保两者都连接到Writer功能类型:
检查连接到Tester的AttributeManager的参数:Passed。创建一个名为fme_db_operation的新属性,并将其值设为DELETE:
当您输入属性名和值时,如果您选择使用它,FME将提供一个下拉的自动完成选项。
现在检查其他AttributeManager的参数。这次创建fme_db_操作,但给它一个UPDATE值。
九Set Where子句
我们现在已经确定了要执行的操作。最后一步是告诉FME数据库中的哪些特性应该应用这些操作。
再次打开Writer功能类型(表)的参数。
将功能操作设置为fme_db_操作并确保将表处理设置为利用现有(FME应在您更改功能操作时自动设置)。
对于Match Columns参数,选择字段派克ID:
这意味着parkid用于将传入特性与表中的记录相匹配。如果存在匹配,则将执行由fme_db_操作定义的操作。
十检查属性映射并运行工作区
在运行工作区之前进行最后一次检查。确保所有属性都从AttributeManager转换程序正确映射到功能类型。如果没有,则会有黄色的连接箭头(如果两个箭头都没有连接,则功能类型上会有红色箭头):
可以通过右键单击连接线并选择“自动连接属性”来简单地解决此问题:
一次二者都已检查/映射属性集,保存并重新运行工作区。再次检查结果。
这次应该有18个公园特色。所有的树属性将是以前的两倍,门户公园不应该存在。
上述步骤在PostGIS上得到了演示。然而,同样的过程也适用于大多数主要的数据库格式协调的.
如果数据库格式具有非协调接口,则必须应用以下内容。
fme_where属性相当于在协调的GUI中设置Match Columns参数。它的格式应该是[数据库字段][运算符][属性](即。数据库字段应该排在第一位)。运算符通常是等号运算(=)。
如果工作区更新失败,那么修复错误并重新运行工作区就比通常困难,因为数据库现在已部分更新。
所以,第一步是重置它。FME最简单的方法是将表参数改回Insert(用于特征操作)和Drop-and-Create(用于表处理)。然后将第一个Tester:Passed端口重定向回直接到表中(绕过其他变压器):
确保属性映射正确(必要时使用自动连接属性),然后重新运行工作区。现在,您将回到开始应用更新的位置,并可以更改工作区(将Tester重新连接到Tester并设置表参数以再次进行更新)。
要修复更新过程中的问题,请检查以下内容:
检查模式映射很重要,因为如果没有传入的属性映射到parkid,那么FME将不知道如何将这些特性与记录匹配以进行更新。
这里使用的数据来源于不列颠哥伦比亚省温哥华市提供的公开数据(data.vancover.ca.温哥华).它包含根据开放的政府许可证-温哥华许可的信息。
?2019安全亚搏在线软件公司|合法的