第8页
第4排
注:内容已更新为FME 2018.1,但视频仍然显示2016.1,有一个稍微不同的例子。
存储在数据库中的信息不太可能保持不变。当这些更改的源是其他地方的数据集时,必须进行批量更新。
此示例执行混合更新-首先是插入,然后更新和删除操作-过滤数据以确定要执行的操作。
注意:尽管这个例子使用了PostGIS数据库,同样的技术也适用于其他数据库。
源数据是温哥华市公园的数据集:
瓷砖由地图探索
第一个任务是将市中心的公园载入Postgis。第二个任务是更新该表,基于近期公园重建的信息。
1.创建数据库连接
如果您还没有准备好数据库连接(如本教程中的其他几个练习中所用),则必须立即创建它。
启动FME工作台。从菜单栏中选择工具>FME选项,然后从选项列表中选择数据库连接。
如果您已经有一个名为postgis培训数据库的连接,然后您可以跳到步骤2。否则,单击+按钮添加新连接:
在打开的对话框中,输入连接参数:
…然后单击“保存”保存新连接。
2.第二步。生成工作区
使用生成选项(快捷方式ctrl+g)生成新工作区。使用以下参数:
单击“确定”关闭对话框并生成工作区。
三。添加测试变压器
这个数据集包含了所有的公园功能,但是我们只需要市中心的公园。所以,将测试仪转换器添加到读卡器和编写器功能类型对象之间的工作区:
确保测试仪:通过的端口是连接到Parks表的端口。
现在打开测试仪参数,并将其设置为“测试邻域”字段值为“市中心”的位置。
第四章。检查表参数
现在查看名为Parks的编写器要素类型的参数(单击齿轮图标)。
将表名更改为下游停车场并将表限定符设置为故障模式与影响分析演示.确保功能操作设置为插入表处理设置为删除并创建:
注:如果本教程的另一个用户已经创建了表,那么我们将使用drop和create来完成此练习。否则,如果需要,我们可以使用create。
单击“确定”关闭对话框。
5.运行工作区
现在保存工作区,然后运行它。19个特性将通过测试并写入数据库表:
检查输出以证明翻译工作正常。记下每个公园有多少棵树,并在地图上定位门户公园(稍后我们将利用这些信息)。
需要注意的是,如果重新运行工作区,则每次都会删除并重新创建表。这意味着你不会添加到数据中,但覆盖了它。如果源数据在任何时候发生更改,这将是一个有效的过程。
6.筛选和更新数据
现在让我们想象一下六个月后。对公园进行了各种实际更新。门户公园因重建而暂时关闭,应将其从桌子上移除。作为植树计划的一部分,所有其他公园都增加了100%的树木。
我们需要编辑工作区来更新数据,定义应该采取什么行动。
首先添加第二个测试变压器。设置此项以测试paarkname=portal park的位置:
这将数据分为应删除的记录(检测仪:通过)和需要更新的记录(检测仪:失败)。
第七章。更新树计数
将ExpressionEvaluator变压器连接到检测仪:故障端口。将评估模式参数设置为覆盖现有属性,并选择TreeCount作为要更新的属性。
将算术表达式设置为@value(treecount)*2(即将树木数量增加100%:
8.设置更新类型
因为有多个,这里的混合操作(一些更新,一些删除)我们必须用它的操作分别标记每个特性。
在每一组过滤后的数据中添加一个attributeManager转换器,确保两者都连接到编写器功能类型:
检查连接到检测仪的attributeManager的参数:通过。创建一个名为fme_db_operation的新属性,并给它一个值delete:
键入属性名和值时,FME将提供一个下拉列表,自动完成选项,你应该选择使用它吗?
现在检查其他属性管理器的参数。这一次创建fme_db_操作,但给它一个更新值。
9.设置WHERE子句
我们现在已经确定要执行什么操作。最后一步是告诉FME操作应该应用到数据库中的哪些特性。
再次打开编写器功能类型(表)的参数。
将功能操作设置为故障模式与后果分析确保桌子处理设置为使用现有(当您更改功能操作时,FME应自动设置)。
对于match columns参数,选择字段公园ID以下内容:
这意味着parkid用于将传入功能与表中的记录匹配。如果有匹配,则将执行由FME_db_操作定义的操作。
10.检查属性映射并运行工作区
在运行工作区之前进行最后一次检查。确保将所有属性从attributeManager转换器正确映射到功能类型。如果没有,则会有黄色的连接箭头(如果两者都没有连接,则功能类型上会有红色的连接箭头):
这可以通过右键单击连接线并选择自动连接属性来简单地解决:
一次二者都已检查/映射属性集,保存,然后重新运行工作区。再次检查结果。
这次应该有18个公园特色。所有treeCount属性都将是以前的两倍,门户公园不应该存在。
上述程序在PostGIS上进行了演示。然而,同样的过程也适用于大多数主要的数据库格式,一直以来协调.
如果您的数据库格式有一个不协调的接口,然后必须应用以下内容。
fme_where属性等同于在协调的GUI中设置match columns参数。格式应为[数据库字段][运算符][属性](即数据库字段应该在第一位)。运算符通常是等号运算(=)。
如果工作区更新失败,那么修复错误和重新运行工作区比平常更困难,因为数据库现在已部分更新。
所以,第一步是重置它。使用FME的最简单方法是将表参数更改回insert(用于功能操作)和drop and create(用于表处理)。然后重定向至第一个测试仪:将端口送回表中(绕过其他变压器):
确保正确映射属性(必要时使用自动连接属性),然后重新运行工作区。现在您将回到开始应用更新的位置,并且可以将工作区更改回原来的状态(将测试仪重新连接到测试仪,并设置表参数以便再次更新)。
要解决更新过程中的问题,检查以下内容:
检查模式映射很重要,因为如果没有传入属性映射到parkid,那么,FME将不知道如何将特性与记录进行匹配,以便进行更新。
这里使用的数据来源于温哥华市提供的开放数据,不列颠哥伦比亚(数据.couver.ca)。它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|法律