我讨论了数据库更新最近,提到有两个一般的场景。

一种方法是当你收到的更新日志,更新的列表,和将它们应用于控制数据库。这是一个简单的人,因为你提前知道什么发生了改变,因此哪些功能需要更新。

更新的第二种方式是当你收到一个全新的数据集,没有什么是新的或变更的迹象。你需要做变化检测。以前一个FME变压器的中心UpdateDetector是常用的。但在2019年,我们有一个伟大的更新ChangeDetector变压器应将它作为常备的变压器从现在开始…

变化检测方法:有什么新鲜事吗?

2018年ChangeDetector变压器相比早些时候,一个“原始”数据集对“修订”版本,把功能分为添加、删除,不变。

然而,它做了什么做的是识别记录,改变了。如果一个记录存在于原始和修订,但现在它的属性之一是一个不同的值,然后,算作一个新的(添加)特性。这使得很难执行“插入”(数据库更新记录已经存在),因为它是难以判断是否真正全新的一个特征。

2019年然而,变压器能够处理更新记录。事实上新变压器设计显示通过一个更新的输出端口:

这是非常重要的。它极大地扩大了范围的变化检测变压器。

然而,有匹配的原始特性的问题修正。FME不能决定修订记录已经更新,没有比较的原始记录。这是通过使用一个关键属性值,这意味着2019 ChangeDetector新的参数来处理:

差异ChangeDetector变压器帮助在2019年与变化检测

我们来看一个例子。现在只是注意到参数对话框中有一个参数称为更新检测关键属性,通过选择一个ID或键值。

不管怎样,如果功能听起来很熟悉,那可能是因为我们已经包括它FME中心在一个变压器称为UpdateDetector…

取代FME UpdateDetector中心

填补空白的创建UpdateDetector ChangeDetector的功能。从下载的数量,这是非常受欢迎的变压器。但现在是弃用FME中心:

UpdateDetector变压器用于变化检测,但现在ChangeDetector优先。

新的ChangeDetector不仅取代这个中心变压器,超过它的功能和性能。UpdateDetector仍将函数在一个现有的工作区,但是我们建议你用新的ChangeDetector取而代之。

现在,让我们看看一个例子新ChangeDetector是如何工作的…

ChangeDetector例子

假设有一个地址数据库:

此外,我得到了一个新版本的数据。我现在必须确定哪些地址记录已经改变了,这样我就能推动这些变化数据库。我只需添加一个读者对于每个数据集,并将它传递给一个ChangeDetector:

在2019年FME变化检测

从那里我可以看到35之间改变原始记录,修改后的数据集,有两个新的补充道。也从最初的13个记录数据缺席修订。大多数记录不变。让我们来看看我以前的参数:

  1. GlobalID更新检测是关键。这个属性告诉FME如何匹配记录的原始数据记录修改后的数据。
  2. 选中的属性是我检查的变化。即在两个记录匹配GlobalID,检查这些属性的差异。
  3. 这个标志还告诉变压器检查空间数据集的几何。几个先进的参数控制那些确切的检查(见下文)。
  4. 这个参数定义了一个列表,在其中保存发生的变化;例如,属性值以及不同。

正如参数略有不同,所以输出可以…

新的变化检测输出

因为现在ChangeDetector变压器检查匹配——但不一定每个属性——可能是原始和修改可能算是一个匹配,而不是完全相同的。例如,属性一个,b,c是一场比赛,但d是不同的。的功能仍然是一个匹配虽然因为你没有选择d在选定的属性。

处理这种情况下一个参数允许您输出-或两者匹配的特点:

如果你输出特性,然后添加一个匹配ID属性,这样你就可以算作一个匹配识别哪些特性。

另外,通过设置名称列表,输出特性记录原始之间的差异和修订。这个记录(例如)有两个差异:

告诉我,两个属性列表(OWNERNM1和OWNERNM2)和新的值被修改,而这个列表:

…告诉我,被修改的几何特性。

——正如UpdateDetector——这个变压器设置fme_db_operation属性。这是一个例子的删除记录(原始,但不修改后的):

这意味着我可以简单的通过特性数据库的作家,指定功能操作(fme_db_operation)和匹配列(这里GlobalID)…

…和我的地址数据库自动修改与更新、添加和删除。

新的公差算法

您可能已经注意到一个先进的几何参数向量宽容:

尽管这个名字,这是不一样的我前面讨论的公差设定FME 2018。为什么这个公差不同?因为它不是试图找到两条线相交,这不是试图调整现有的点。相反,它发现两个特性是否在公差,使用所谓的邻的距离

邻的距离度量相似度的两个空间特性(通常是“曲线”)派生使用两个特性之间的距离。

普通和简单的解释是,走一条狗。说你用你的狗沿着一条路径(皮带)。你走在一个相对直线(红线,下面),但你的狗从一边到另一边移动,为了嗅树(蓝线,B):

用邻距离几何变化检测

问题是,领导需要多长时间你走各自的路?在上面的图中最宽的狗和沃克是差距明显F。如果我的狗至少铅F长度,然后我们可以走各自的路没有彼此。

这个概念是一个伟大的变化检测的解决方案。FME而言一个特性不变,如果邻原始和修订之间的距离小于指定的公差值。

我们觉得这个算法是一种改进在过去的方法。它作用于更多的几何形状和它还允许应用宽容仁慈的匹配模式,这是不可能的。

f ?f ?

请跳过这一部分如果你不进入计算几何。然而,对于你的邻距离,你会发现这是一个真正的邻,而不是离散的邻(只计算顶点点之间的距离)。还有一个弱邻FME使用,当宽容几何匹配和参数是积极的:

弱邻当你说,沃克和狗不得放弃他们的步骤。在一个真正的邻每个必须继续前进。

在这个例子中狗沃克(A)一直走在一条直线。这只狗在第一个(直走b1)然后向右转向,(b2)。他们仍然前进沿着他们的道路,但他们的路径是在一个不同的方向:

在真正的邻沃克不能反向路径占这个偏差。最他们所能做的就是停止在他们当前的位置。例如这里的沃克最小化铅长度通过停止等待点a1,而狗是蜿蜒的路径:

也许,就是类比有点崩溃。邻距离计算提前知道路径,而在现实生活中是不可能知道狗需要什么课程!

无论如何,在弱邻,沃克是允许改变他们的课程。当狗开始从b1, b2,步行者可以循原路折回说a2,为更短的f:

如果你不懂,你真的不应该担心。看看这两个路径和记住,宽容的匹配选项意味着两个特性更有可能被归类为匹配。

更多的变化检测信息

上面的例子看新变化检测的行为。然而,在某些情况下,您可能需要执行相同的添加/删除/不变的过程,旧ChangeDetector。即你不一定需要寻找修改记录。

如果是这样的话,那么简单地离开更新检测关键参数空:

那么你的功能被分配到插入或删除,根据他们是否原始或修正输入:

——当然,如果你没有2019,那么你仍然可以下载UpdateDetector。术语“UpdateDetector”现在只出现在工作台作为ChangeDetector别名;所以通过FME访问变压器中心,确定检查的选项显示接口中弃用。

此外,匹配器2019年的变压器有一个小的改造。它的参数对话框被刷新,也得到了相同的公差ChangeDetector参数和算法。

总结

这就是即将到来的变化检测。现在你已经读过这篇文章你不会惊讶地看到全新的当你升级到FME2019 ChangeDetector对话框。

我相信这是一个非常有用的更新和我期待着使用它。哦,如果你是挣扎(!)这是答案犬发现不同点图片:

fme快乐,

关于FME 变化检测 FME传教士 空间分析

马克爱尔兰

马克,又名iMark, FME传教士(est。2004),对FME训练的热情。他喜欢能够帮助人们理解和使用技术在新的和有趣的方式。他的另一个爱好是足球(又名。足球)。他喜欢技术和足球,他写了一篇关于这两个在一起!谁会想到呢?(答案:iMark)

评论

8反应”插入和遛狗:有什么新的变化检测FME 2019”

  1. 布鲁斯 说:

    伟大的增强,一个简单的销售!

  2. 尤纳B。 说:

    谢谢你的头。刷新和信息。

  3. 网卡 说:

    伟大的博客。喜欢遛狗比喻!

  4. 聪明的改善和博客文章。谢谢马克,你可能为数不多的人使计算几何可以理解的

  5. 安妮 说:

    我在哪里可以找到如何编写出来的记录信息的“更新”港口?似乎只有fme_db_operation属性通过。我必须手动设置,AttributeManager吗?谢谢

    • 这很有趣。我发现如果我的原始数据有一个额外的属性,那么它不出现在更新端口输出。我怀疑这是因为我们假设它是一个删除属性(即是一个变化),即使这不是选择。如果你想让他们,那么也许FeatureMerger将帮助一起加入这一信息。

      我希望这可以帮助。如果没有,也许你可以把这个问题我们的社区论坛knowledge.safe.com,在那里我们可以更好亚搏国际在线官网的交谈可能会发生什么。亚搏在线

  6. 海登 说:

    我认为这里有一些重要的事情了,我用这个变压器有问题:

    除非你选择“匹配所选属性”类型,甚至探测器匹配无属性。举个例子,如果你是匹配两个excel文件,它将匹配excel格式隐藏属性的行号。这些隐藏的属性不列为可选的属性匹配或排除匹配。这使得我很困惑,直到我看到了改变列表引用隐藏属性。

    当你给一个列表名称,但是让他们隐藏它创建列表属性。所以你必须采取额外的步骤显示列表更改后改变探测器应用变压器。

    • 嗯。我看到文档说:

      “匹配所有属性:匹配上执行的所有属性,包括未曝光的格式属性。”

      我认为这是有点极端,但是至少我们知道它作为设计的工作。事实上,一个开发人员说:

      “我们经常有很多属性是不接触的情况下,或不知道,直到运行时,因此需要有一种模式,它匹配未曝光的属性。”

      再次,我认为格式属性有点极端,但是正当。你总是可以尝试BulkAttributeRemover摆脱所有格式属性之前进行变化检测。或者切换到选定的属性,如果可能的话。

      我试着2020年的列表选项和它公开列表(尽管不是每一个元素的列表——这通常不会这么做)。也许这是一种新的修复和你使用老FME吗?或者,如果你看不到更新的列表功能,它可能是更好的把这作为FME社区(knowledge.safe.com),其他问题:可以帮助我们可以有一个适当的交谈。亚搏国际在线官网亚搏在线

留下一个回复匿名取消回复

你的电子邮件地址将不会被发表。必填字段标记*

相关的帖子