span8
span4
小多边形是指其面积小于指定公差的多边形。这些可以通过组合找到测量多边形的面积然后对滤波变压器应用测试条件。
对小多边形进行测试是一种很好的QA测试,因为低于一定尺寸的多边形通常表示存在重叠、条块和未对齐的线形等问题。
计算这些不好的特性的数量也很简单。然而,正如下面所讨论的,自动修复这样的多边形比较困难。
本例中的第一个源数据集是一组线条(在AutoCAD DWG数据集中),它们表示温哥华市的房地产边界轮廓。
第二个数据集(Esri地理数据库格式)是一组表示地址的点特征。
数据集看起来像这样在FME数据检查:
这里的场景是,我们希望将这些线转换为真正的多边形特性。这在FME中非常简单,但是我们将添加一些QA检查来确保没有创建过小的多边形。特别是,一个尺寸过小的多边形包含一个地址点是非常坏的消息。
按照以下步骤学习如何识别小多边形特征。
1.启动FME工作台,并从一个空画布开始。
从菜单栏中选择Reader >添加Reader。
将数据格式设置为Autodesk AutoCAD DWG/DXF。选择附加的dwg文件作为源数据集。单击Parameters按钮,将组实体设置为“Attribute Schema”。
单击OK并再次单击OK以添加阅读器。
2.源数据集由行特性组成。要创建多边形需要一个单独的FME转换器:AreaBuilder。
所以,添加一个变压器。将其连接到ParcelLines功能类型。
3.为了测试小多边形,我们首先需要测量每个多边形的面积。这是用计算变压器完成的。
因此,添加一个AreaCalculator变压器并将其连接到AreaBuilder:Area输出端口。
4.在大多数情况下,我们现在会添加一个过滤变压器来测试该区域。但是在这个例子中,我们要加入一个额外的细节:地址点。
同样,从菜单栏中选择Reader >添加Reader。
这次将数据格式设置为Esri Geodatabase(文件Geodb Open API)。选择附加的地理数据库作为源。出现提示时,仅选择要添加到工作区的postaladdress表。PostcodeBoundaries表不是必需的。
5。要将地址点属性传输到多边形上,我们将使用PointOnAreaOverlayer转换器。
因此,在reaoverlayer transformer上放置一个点。
将PostalAdress功能类型连接到PointOnAreaOverlayer:Point输入端口,将AreaCalculator:Output端口连接到PointOnAreaOverlayer:Area输入端口。
通过向PointOnAreaOverlayer:Area输出端口添加检查器转换器来测试运行工作区。结果应该是一组多边形特征,具有多边形区域(_area)的属性,如果与地址点重叠,则为定义地址的属性。
六现在让我们过滤掉不好的特性。温哥华州建筑法规:
微型住宅的建筑面积必须至少为29.7平方米
我们关注的是地块边界,而不是建筑物的足迹,但30平方米似乎是一个很好的分割点,在这个点下,多边形很可能是错误的。
我们要测试三种情况:
测试这种多个条件的最佳方法是使用testfilter转换器。
因此,添加一个连接到pointonareaoverlayer:area输出端口的testfilter转换器。
7。打开TestFilter参数对话框。双击“测试条件”列下的第一行。这将为我们打开一个条件编辑器。
在这个编辑器中,为面积小于(或等于)30设置一个测试子句。为重叠大于(或等于)1设置第二个测试子句:
如果这两个子句都为true,则多边形将太小并包含地址点。但要同时测试这两个子句(而不仅仅是其中一个),请将pass criteria参数设置为“all tests(and)”。
最后,在对话框底部,将输出端口名设置为“Small with Address Point”,然后单击“确定”返回到上一个对话框。
现在单击第一个测试条件,然后单击对话框上的复制按钮。这将复制我们的第一组子句并打开它们进行编辑。
通过单击第二个子句,然后单击“-”按钮,删除第二个子句(用于重叠)。我们不需要测试重叠,因为任何具有重叠的内容都将被过滤掉。
将输出端口名设置为“small without address point”,然后单击“确定”。现在定义应该如下:
如果是,请单击“确定”返回主画布。
8个。将检查器变压器连接到每个TestFilter输出端口(如果需要,请重命名检查器):
运行工作区。结果将是FME数据检查器中代表三种不同状态的三层。检查标记为小的功能,以确保它们在某些方面不正确。大多数是多边形,两个边界的线相交,形成一个小银多边形。
计算坏特性的数量非常容易,因为我们已经过滤掉了它们。例如,甚至工作台功能计数也向我们显示了所涉及的数字:
使用StatisticsCalculator转换器创建存储在属性中的计数很简单。
按照以下步骤学习如何计算小多边形特征。
九在第一个testfilter输出端口与其检查器转换器之间添加统计计算器。打开“参数”对话框。
首先选择“区域”作为要分析的属性。事实上,我们选择哪一个属性并不重要,因为我们只需要一些特性。
从CalculateAttributes字段中删除所有值,然后在Total Count字段下添加“BadFeatures”。这将提供一个坏功能的计数。单击“确定”关闭对话框。
10个。复制现有的统计标尺(选择它并按Ctrl +d)。将其连接到第二个TestFilter输出端口及其检查器转换器之间。
因为这是重复的,所以不需要打开它的参数对话框并进行任何更改。
11号。重新运行工作区。这次输出应该包含一个属性,该属性指示每种类型有多少坏特性。
注:如果将StatisticsCalculator:Summary输出端口连接到检查器,则只有一个输出功能。要获取所有输出功能,请确保连接了完整的端口。
固定小多边形不是一个简单的任务。简单地删除这些特征可能会导致拓扑覆盖中的空白,并且并不是所有这些特征都有一个公共的id号来将它们合并(分解)在一起。
但是,也有一些解决方案可以应用:
a)删除小多边形,然后使用除滑变压器以填补任何空白。
b)选择一个与小多边形相邻的特征,并将其融合在一起。
按照以下步骤学习如何使用neighborfinder/solvever修复小多边形特征。
12岁。删除两个统计计算器(如果您在步骤11中添加了它们)和任何剩余的检查器变压器。
十三添加连接到testfilter的计数器转换器:
14岁。添加neighborfinder转换器。将小多边形要素(testfilter的其他两个端口)连接到neighborfinder:base,并将counter:output端口连接到neighborfinder:candidate
在FME2018或更新版本中,合并属性参数默认不设置,必须手动设置。
十五添加溶解变压器。将neighborfinder:matched端口连接到它,并从counter:output端口创建到溶解器的第二个连接。您的工作区现在将如下所示:
16岁。打开“溶解器参数”对话框。将GROUP BY参数设置为“计数”。这将导致小多边形溶解到它们的邻居中。
十七附加检查器转换器并运行工作区。大多数小多边形通过溶解到它们的邻居中而固定:
如果您不想直观地检查数据,可以添加一个最终的面积计算器转换器来帮助证明确实如此。
与使用面积计算器不同,您可以在测试仪这样的过滤器转换器中直接使用@area()函数。我们在这里使用AreaCalculator使最终的工作空间更加清晰。
用于固定数据的解决方案依赖于具有共享边界的小多边形的最近邻居。两个小多边形不会得到固定,因为它们最近的邻居只共享一个顶点,所以不能被分解。
这里使用的数据来源于不列颠哥伦比亚省温哥华市提供的公开数据(data.vancover.ca.温哥华)中。它包含根据开放的政府许可证-温哥华许可的信息。
©2019安全亚搏在线软件公司法律