span8
span4
当一个几何图形有一个或多个顶点在一个特征中多次出现时,就会出现一个重复顶点(重复点)。重复的顶点是那些具有相同的X、Y和Z坐标值的顶点,其小数点位数与数据中存在的位数相同。
重复的顶点不仅是低质量数据的标志,也可能是数据格式的问题。有些格式允许重复的顶点(例如,MicroStation DGN允许零长度的行),而其他格式禁止重复的顶点(例如Oracle Spatial)。
重复顶点可能在几何图形中顺序出现(例如,A、B、C、C、D、E),也可能不按顺序出现(A、B、C、D、C、E)。它可能只复制一次(A、B、C、C、D),也可能复制多次(A、B、C、C、C、D、C、E、C)。
当然,有时复制顶点是有效的;例如,一个多边形的起点和终点应该是相同的,如果它要正确关闭(a,B,C,D,E, a),有时一个线性特征应该循环并重新连接中点(a,B,C,D,E,C);因此,仅在此基础上识别无效的特性并不总是容易的。
有各种各样的FME变形器可以用来识别重复的顶点,但是有些变形器——或者变形器的组合——会比其他变形器更有效率。
通常,使用GeometryValidator的频率更高,因为连续重复的顶点是一个更明显的问题。
然而,坐标提取器更适合于检测出顺序之外的重复顶点,以便进行进一步的研究。
本例使用GeometryValidator转换器来标识连续重复的点。第二个例子使用了closedefilter和CoordinateExtractor的组合来识别未排序的重复点。
源数据是一个微站设计文件,包含代表建筑轮廓的线条特征:
我们希望在将数据投入生产使用之前对其进行验证和清理。
按照这些步骤学习如何使用GeometryValidator转换器定位连续重复的顶点。
1.启动FME工作台,并从一个空画布开始。从菜单栏中选择Reader >添加Reader。将数据格式设置为Bentley MicroStation Design (V8)。选择附加的MicroStation数据集作为源。如果你点击参数按钮,你会发现有一个先进的参数删除重复点:
确保这个参数是关闭的,因为我们想要确定在哪里和有多少重复的顶点。因此,只需单击OK来添加阅读器。如果/当出现提示时,选择buildingfootprint级别作为要读取的数据。
2.单击画布上的reader特性类型。在弹出的菜单中,选择Inspect选项以查看数据检查器中的数据。检查数据。数据看起来是正确的,很难确定哪里可能有重复的顶点。
3.回到FME工作台,添加一个连接到阅读器特性类型的GeometryValidator转换器。检查参数对话框:
在重复连续点数选项旁边打勾。您可以(可选地)检查此问题的参数。唯一的参数是处理3D点,这在本例中不适用。
在下面的对话框中,关闭修复问题选项:
虽然重复的点是固定的,但现在,我们只检查它们的位置。
4.将检查器转换器附加到每个GeometryValidator输出端口并运行工作区。检查输出,根据随机的颜色生成,你可能不得不对GeometryValidator_Failed特性着色来区分结果:
注意,有两个特性被标记为无效,重复的点被突出显示。
计算无效特性和缺点的数量非常简单,因为我们已经过滤掉了它们。例如,甚至工作台特性计数也显示了所涉及的数字:
使用StatisticsCalculator转换器创建存储在属性中的计数非常简单。
按照这些步骤来学习如何计算重复的顶点特征。
5.在GeometryValidator:Failed port和它的Inspector transformer之间添加一个统计计算器。还可以在GeometryValidator:IssueLocations端口及其检查器转换器之间添加一个统计计算器。
对于这两个统计计算器,选择任何属性作为要分析的属性。实际上,我们选择哪个属性并不重要,因为我们只想要特性的数量。
从Calculate Attributes字段中删除所有值。对于第一个StatisticsCalculator,在Total Count字段下添加“坏特性”,以提供坏特性的计数。对于第二个StatisticsCalculator,在Total Count字段下添加“duplicatever”,以提供重复特性的计数。
重新运行工作区。这一次,输出应该包含一个属性,该属性表示每种类型有多少不好的特性。
注:如果将StatisticsCalculator:Summary输出端口连接到检查器,则只有一个输出功能。要获取所有输出功能,请确保连接了完整的端口。
通过删除其中一个副本,可以很容易地修复无效的重复顶点。几何校准仪有一个选项可以做到这一点。
6.打开GeometryValidator parameters对话框,将尝试修复参数更改为Yes。重新运行工作区。当然,这一次不会有失败的特性,但是仍然会输出问题位置来显示重复点的位置。
这里使用的数据来源于不列颠哥伦比亚省温哥华市(data.vancover.ca.温哥华)。它包含在开放政府许可下的信息-温哥华。
©2019安全亚搏在线软件公司法律