斯潘8
斯潘4
注:内容已更新为FME 2018.1,但视频仍然显示2016.1,有一个稍微不同的例子。
存储在数据库中的信息不太可能保持不变。当这些更改的源是其他地方的数据集时,必须进行批量更新。
此示例执行混合更新-首先是插入,然后更新和删除操作-使用更改检测来确定要执行的操作。
注:尽管这个例子使用了PostGIS数据库,同样的技术也适用于其他数据库。
源数据是温哥华市公园的数据集:
地图平铺方式雄蕊设计,在下面CC-BY-3.0型.数据依据开放式街道地图,在下面CC-BY-SA公司.
首先,必须将数据上载到PostGIS数据库(已经存在用于此目的的工作区)。然后,由于各种更新和重新评估,更新的数据集变得可用。然后必须将更新应用于Postgis表。
1。创建数据库连接
如果您还没有准备好数据库连接(如本教程中的其他几个练习中所用),则必须立即创建它。
启动FME工作台。从菜单栏中选择工具>FME选项,然后从选项列表中选择数据库连接。
如果您已经有一个名为postgis培训数据库的连接,然后您可以跳到步骤2。否则,单击+按钮添加新连接:
在打开的对话框中,输入连接参数:
…然后单击“保存”保存新连接。
2。打开工作空间
启动FME工作台,打开附件模板进行数据加载。
注:如果“导航器”窗口的“数据库连接”部分有红色突出显示,然后你要么跳过第1部分,或者您的连接名称不正确:
如果你根本没有联系,确保执行步骤1。如果创建了连接,但是它有一个不同的名字,然后您可以双击此参数来选择不同的版本。
三。运行工作区
工作区如下所示:
请注意,它只是从mapinfo选项卡格式读取公园数据(用于市中心区域),并将其加载到Postgis上的数据库表中。表处理处于拖放和创建模式(即它将被删除并完全替换为这个新的数据集)。
运行工作区。一旦完成-并检查数据以确保它是正确的-工作区可以关闭。
4。生成工作区
使用生成选项(快捷方式ctrl+g)生成新工作区。使用以下参数:
因为我们要写入的表已经存在,我们应该将它的模式(数据模型)导入工作区。所以还要检查按钮导入要素类型定义:
单击“确定”关闭对话框并生成工作区。导入选项将提示您选择要导入的表。将格式设置为邮政地理信息系统并选择先前定义的数据库连接。然后单击参数按钮。选择故障模式与影响分析演示模式和下游停车场表:
再次单击“确定”和“确定”关闭对话框并完成工作区生成过程。
5。添加PostGIS阅读器
我们需要将每个传入功能标记为更新,删除,或插入,根据需要采取的行动。为了确定操作,我们必须将记录与原始数据库表进行比较,为此我们需要一个PostGIS阅读器。
因此,从菜单栏中选择“读卡器>添加读卡器”。
就像上一步一样,将格式设置为邮政地理信息系统并选择先前定义的数据库连接。然后单击参数按钮。选择故障模式与影响分析演示模式和下游停车场表。
现在,当您关闭这些对话框时,此表将作为读卡器添加到工作区。出于最佳实践目的,您可能希望在其周围添加书签,或扩展现有书签:
6。添加更新检测器变压器
为了检测变化,添加一个更新检测器变压器。
注:这个变压器是变化检测器的扩展。虽然它存储在FME集线器上,它仍然可以使用快速添加来添加。对于FME2019,变更检测器已更新,以包含所需功能。
将PostGIS读卡器功能类型连接到更新检测器:原始输入端口,以及更新检测器的mapinfo parksupdate功能类型:修改后的输入端口:
请注意,在上面的屏幕截图中,修改后的/原始端口已被反转,以避免连接重叠。
7。设置更新检测器参数
现在检查更新检测器参数。key属性参数应设置为parkid。要匹配的属性是那些可能已更改的属性。在本练习中,访客号码已更新为新信息,种植了更多的树木,所以选择VisitorCount和TreeCount:
同时确保“匹配几何体”设置为“二维”。
更新检测器现在将根据所做的更改分离我们的数据。现在您可以运行工作区并在数据检查器中检查结果-但请确保不要连接编写器功能类型!
现在,您可以看到在新的数据集中更新了14个功能,1已被删除,4个不变。
注意到故障模式与后果分析这些功能已经设置了属性!因此,我们不需要为自己设置:
如果-当然-另一个变压器被用来检测变化,然后每个输出端口都可以连接到一个属性管理器,和故障模式与后果分析手动设置。
8。更新PostGIS编写器
现在,将updatedetector:updated和updateddetector:deleted输出端口连接到PostGIS编写器功能类型。注意,不需要连接未更改的输出端口,因为这些特性不需要在数据库表中更新。事实上,如果已连接,则结果将是一组重复功能:
现在检查编写器功能类型参数。将功能操作设置为故障模式与后果分析,确保桌子处理设置为使用现有.
选择parkid作为更新的匹配列:
将功能操作设置为故障模式与后果分析表示的属性值故障模式与后果分析该功能将指导在数据库表中更新或删除该功能。匹配列是WHERE子句用于确保在数据库表中更新或删除适当的行。
9。检查数据并运行工作区
在运行工作区之前,检查下游停车场表。记下探视人数和重新计数多个记录的字段。这将确保我们可以比较结果以证明更新过程是成功的。
现在运行工作区。重新检查数据。你会发现在帕尔奇比赛,这个重新计数和探视人数字段可能已更新:
另外,请注意,修订后的表中的停车位少了一个。大教堂广场公园已被拆除。
上述程序在PostGIS上进行了演示。然而,同样的过程也适用于大多数主要的数据库格式,一直以来协调.
如果您的数据库格式有一个不协调的接口,然后必须应用以下内容。
fme_where属性等同于在协调的GUI中设置match columns参数。格式应为[数据库字段][运算符][属性](即数据库字段应该在第一位)。运算符通常是等号运算(=)。
如果工作区更新失败,那么修复错误和重新运行工作区比平常更困难,因为数据库现在已部分更新。
所以,第一步是重置它。最简单的方法是重新打开数据加载模板并重新运行它。这将把表重置回原始状态。
要解决更新过程中的问题,检查以下内容:
不连接未更改的端口很重要,因为这些功能已经存在,并且这些数据将被添加到表中。
这里使用的数据来源于温哥华市提供的开放数据,不列颠哥伦比亚(数据.couver.ca)它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的