span8
span4
重叠和间隙是无效多边形覆盖时出现的问题。一个多边形的覆盖范围应该是一个单一的,连续的表面。然而,情况并不总是如此。
当两个或多个多边形相交时,就会产生重叠,从而形成一个被多个多边形覆盖的区域。例如,这里红色的特征延伸到橙色的特征上:
当两个或多个多边形未能在边界处相交时,就会产生一个缺口,从而在覆盖层上造成一个洞。例如,这里红色和绿色的特征没有满足,在覆盖范围中创建了一个白色的空白:
一般来说,这些重叠和间隙非常小,很窄——否则它们很容易被检测到,不需要特殊的数据验证技术——这种常见的形状和大小就是它们有时被称为a的原因条子.
方法可定位重叠部分小多边形方法,但该方法不能同时识别空白,也不能使用相同的方法修复。因此,为了处理切片和间隙,FME有一个特殊的变压器,称为SliverRemover.
在FME2018或更新版本中,SliverRemover被一种名为AreaGapAndOverlapCleaner的变压器取代。一定要检查Fill gap参数,该参数的默认值在2018.0到2018.1之间发生了变化
注:除银器同时处理间隙和重叠部分。它不允许只修复一个或另一个。即。如果不修复重叠部分,就无法修复间隙,反之亦然。
本例中的数据集是一组表示温哥华城市规划区域的多边形特征(在MapInfo选项卡数据集中)。
数据集看起来像这样在FME数据检查:
从逻辑上讲,一块土地不能分成两个区域(即这些区域不应重叠),但同样,一块土地也不能被分割。在分区范围内不应有任何差距)。
这里的场景是简单地定位、计数并修复我们覆盖范围中的任何重叠或空白。
除银变压器,虽然设计来处理的差距和重叠只会修复他们。它将不会突出或定位他们将被固定在其他地方。为了简单地定位这些特性,我们将使用AreaOnAreaOverlayer转换器,并结合溶解器和DonutHoleExtractor。
按照以下步骤学习如何识别重叠和空白。
1.启动FME工作台,并从一个空画布开始。
从菜单栏中选择Reader >添加Reader。
将数据格式设置为MapInfo选项卡(MITAB)。选择附加的选项卡文件作为源数据集,然后单击OK添加阅读器。
2.定位间隙和重叠的想法是创建一个覆盖感兴趣区域的单一表面,然后将数据与一个AreaOnAreaOverlayer进行比较。
因此,放置一个溶解变压器连接到区域数据。这将创建一个单一的表面特征。然而,它可以被创建为一个甜甜圈功能,这不是我们需要的。因此,在溶解器变压器后接一个多环提取变压器,连接到溶解器:区域输出端口:
当前练习的默认参数是正确的。
3.现在放置一个AreaOnAreaOverlayer变压器。将DonutHoleExtractor:Outershell端口和zone数据连接到其输入端口:
同样,对于这个练习,任何参数都可以保持默认状态。
注意,在FME2018或更新版本中,AreaOnAreaOverlayer变压器有一个额外的剩余输出端口。
4.将检查变压器连接到AreaOnAreaOverlayer:Area输出端口。检查检查器的参数,并通过选择_overlaps属性设置组。
现在运行工作区。输出中的显示控制窗口如下所示:
当重叠的数量等于1时,我们知道这些是间隙(因为溶解器创建的表面不会被区域数据重叠)。
当重叠的数量大于2时,我们知道这些是重叠的(因为溶解器创建的表面至少与区域数据中的其他两个多边形重叠)。
只有当重叠的数量等于2时,数据才是正确的。
要确认问题,请添加原始源区域数据作为背景并放大其中一个问题特性:
这里的灰线是两个多边形之间的空隙。它只有0.0022米(2毫米或1/12英寸),所以你必须非常近地放大才能看到它。
现在我们已经分离出了非常小、非常窄的多边形,它们代表了多边形覆盖范围内的间隙和重叠。
计算坏的特性的数量是很容易的,因为我们已经过滤掉了它们。我们只需要使用StatisticsCalculator转换器创建它们的计数。
按照以下步骤学习如何计算重叠和空白特性。
5.在区域onareaoverlayer变压器和检查器之间添加一个统计计数器。检查统计计算变压器的参数。
为Group By参数和要分析参数的属性选择_overlaps属性。
将Total Count属性参数设置为NumFeatures并接受更改。
6.在检查器转换器中关闭组并重新运行翻译。输出现在将对每个重叠数的特性进行计数。这将告诉我们有多少功能在每个类别:
在这个例子中,我们有6个间隙,6个重叠,430个正确的特征。
注:如果您将StatisticsCalculator:Summary输出端口连接到检查器,那么每个组将只有一个输出特性。要获得所有输出特性,请使用完整端口。
使用SliverRemover转换器修复重叠和间隙是一项简单的任务,为了确认它已经工作,我们可以简单地重复上面的定位过程。
因此,按照以下步骤学习如何使用SliverRemover转换器修复重叠和空白。
7.SliverRemover的帮助信息表明,它需要干净、有效的数据,自交或退化的多边形将无法修复。
因此,为了确保我们首先清理这些问题的数据,需要放置一个GeometryValidator转换器。将其连接到专区功能类型的新输出:
检查GeometryValidator参数,并对“退化或损坏的几何图形”和“2D中的自交”进行检查。确保设置尝试修复设置为Yes。
8.放置一个移银变压器。将其连接到GeometryValidator转换器上已通过和已修复的端口:
检查除银器参数。唯一重要的是修理方法。有多种方法,transformer文档更详细地解释了这些方法。现在,将修复方法保留为“最长边界”。
9.将检查变压器连接到除银器:修复端口并运行翻译。
输出将是修复了所有间隙和重叠的多边形,以创建一个单一的、连续的表面。但是,如果不仔细检查数据,就很难证明这一点。因此,让我们重新创建先前的数据检查,以确保没有遗留问题。
为此,请选择现有的溶解器、DonutHoleExtractor和AreaOnAreaOverlayer变压器。按Ctrl+D创建这些的副本。
现在将它们连接到上面相同配置的SliverRemover(即从SliverRemover到Dissolver有一个输出,到AreaOnAreaOverlayer有一个输出):
10.将检查器变压器连接到新区域onareaoverlayer并运行转换。这一次,您将能够看到没有重叠的特性,也没有空白。
您还可以看到输出特性的数量与以前相同。根据SliverRemover中选择的方法,重叠和间隙被分配到其他特性。
另外,请注意,AreaOnAreaOverlayer会导致属性无效。所有输出都采用一个特性的属性。因此,仅取修复后的除银器输出供以后使用;除了验证多边形覆盖率外,不要使用AreaOnAreaOverlayer输出。
这里使用的数据来源于不列颠哥伦比亚省温哥华市(data.vancouver.ca).它包含在开放政府许可下的信息-温哥华。
©2019安全亚搏在线软件公司法律