span8
span4
存储在数据库中的信息是不太可能保持不变。当这些变化的根源是一个数据集的其他地方,散货更新必须发生。
在某些情况下,有必要更新数据库中只有特定的领域;即使列在更新源改变时,他们不应该全部被应用到数据库。
避免的方式更新字段是简单地从写入到数据库中的特征中删除它,如下面的实例证明。
注意:虽然这个例子使用的PostGIS数据库,相同的技术也适用于其他数据库。
源数据是温哥华市的公园的一个数据集:
地图瓦片通过雄蕊设计下CC-BY-3.0。通过数据OpenStreetMap的下CC-BY-SA。
首先必须将数据上传到数据库的PostGIS(工作区已经存在这一点)。然后一个更新的数据集变得因为各种更新和重新评估的可用。然后,更新必须应用到PostGIS的表。
然而,意图是仅更新的功能,而不是列值的几何形状。
注意:这本质上是相同的目的为这个练习除了属性更新被排除在外。
1。创建数据库连接
如果您还没有准备好一个数据库连接(如本教程中其他几个练习中使用),你必须现在创建它。
启动FME工作台。选择Tools>从菜单栏FME选项,然后从选项列表然后选择数据库连接。
如果您已经有一个名为连接PostGIS的培训数据库,则可以跳过步骤2。否则,请单击+按钮添加一个新的连接:
在打开的对话框中,输入连接参数:
...,然后单击保存以保存新的连接。
2。开放数据加载工作区
启动FME Workbench和打开数据加载附加的模板。
注意:如果Navigator窗口的数据库连接部分有一个红色的亮点,那么你要么跳过第1部分,或者连接具有不正确的名称:
如果你没有在所有的连接做,一定要执行步骤1。如果你没有创建连接,但它有一个不同的名字,那么你可以双击这个参数来选择不同的版本。
3。运行工作空间
工作区是这样的:
请注意,这仅仅是从MapInfo的TAB格式读取公园数据(Downtown地区),并将其加载到上PostGIS的数据库表。该表处理在删除并创建模式(即它会被删除并通过这个新的数据集完全替换)。
运行工作区。一旦完成 - 和数据检查,以确保它是正确的 - 在工作空间可以被关闭。
4。开放数据更新工作区
现在,打开数据上传模板。工作区是这样的:
工作区设置,以确定在现有PostGIS的数据库表和差异存储在MapInfo的TAB公园更新的数据集。这是两个读卡器功能类型。
的差异写成回PostGIS的数据库表的更新。
检查AttributeManager参数。为了避免更新字段它是简单地移除所述匹配的属性的情况。在这种情况下,我们要避免更新visitorcount和treecount领域,所以消除在AttributeManager那些属性:
这确保根据存储在操作该特征被更新fme_db_operation(由UpdateDetector变压器创建)其中parkid属性parkid字段匹配。
7号。检查数据并运行工作区
运行工作区之前,检查的当前内容市中心公园表。记的visitorcount和treecount几个记录的字段。这将确保我们可以比较的结果证明,更新过程是成功的。
还检查ParksUpdates数据被读入工作区。你应该看到一些ParksUpdates功能已更新treecount和visitorcount相比于数据库表的属性:
运行工作空间,检查修改后的数据库表。请注意,要素的几何形状的地方被改变(例如大教堂广场公园已被删除,Helmcken公园有比以前少了一个顶点):
以上描述的方法表现出对PostGIS的。但是确切的过程也适用于大多数主要的数据库格式,已协调的。
如果你的数据库格式有一个非统一接口,则必须按下列应用。
该在哪里属性是一个统一的GUI设置的匹配列参数的等价物。它应该是格式为[数据库字段]的[操作] [属性](即数据库中的字段应该先)。操作者通常将是一个等于操作(=)。
如果工作区更新失败,那么修复错误并重新运行工作区就比通常困难,因为数据库现在已部分更新。
所以,第一步是重置它。最简单的方法是重新打开数据加载模板并重新运行它。这会将表重置回原始状态。
要修复更新过程中的问题,请检查以下内容:
这里使用的数据由温哥华市,不列颠哥伦比亚省(提供开放的数据起源data.vancouver.ca)。它包含了开放政府许可协议进行许可信息 - 温哥华。
©2019安全亚搏在线软件公司|法律