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