西班牙
斯潘4
短线是指长度小于规定公差的线。这些可以通过组合测量线的长度然后对滤波变压器应用测试条件。
短线测试是一个很好的qa测试,因为小于一定长度的线通常表示重复的顶点、无效的网络边、悬挂(过冲)和通常较差的线条等问题。
例如,由下面的箭头表示的是两条非常短的线,从道路网被剪裁到不完全匹配的多边形边界的位置开始悬挂:
计算这些坏的特征有多少是很简单的。然而,如下面所讨论的那样,自动固定这样的线更加困难。
此示例的源数据集是表示温哥华市道路的一组线(在autocad dwg数据集中)。
在fme数据检查器中,数据集如下所示:
这里的场景是,我们希望创建一个适当的边缘/节点网络,但要认识到,我们应该添加一些qa检查,以确保没有使用坏的线条。
按照以下步骤学习如何识别短线特征。
一。启动fme workbench并从一个空画布开始。
从菜单栏中选择读卡器>添加读卡器。
将数据格式设置为autodesk autocad dwg/dxf。选择附着的DWG文件作为源数据集。单击参数按钮并将分组实体设置为“属性架构”。
单击“确定”,然后再次单击“确定”以添加读卡器。
2.源数据集由线要素组成。为了测试它们的长度,我们首先必须使用长度计算器变压器来测量它们。
所以,添加一个长度计算器转换器。将所有读卡器功能类型连接到长度计算器输入端口。
三。要评估特征的长度,需要一个可以根据特定条件过滤特征的转换器。最容易使用,也是最常见的变压器是测试仪。
所以,添加一个测试变压器并将其连接到长度计算器:输出端口。
四。一条线在被怀疑前需要有多短是一个主观的决定。然而,短于宽的道路连接似乎是一个明显的候选者。维基百科告诉我们,一条普通的车道3米宽是的。温哥华的大多数道路由两条车道组成。因此,我们应该标出所有长度小于6米的路段。
因此,打开测试参数对话框。设置测试条件,检查实测长度小于6的路面特征:
5.添加两个检查器转换器——每个测试器输出端口各一个——并运行工作区。当输出出现时,在FME数据检查器中调整特征颜色,使短行更突出。
检查红色的特性,看看这些是否真的是问题特性,以及原因。你会发现一些孤立的问题散布在整个城市。
6.假设我们要识别受影响的道路类型;即。它们是私人的、住宅的、次级的等等。这样做的第一步是将该信息作为属性公开。
所以,点击[…] button on any of the source feature types to open its properties dialog.单击格式属性选项卡并定位属性fme_feature_type。
在属性上放置一个复选标记来公开它(使其在工作区中可用)。
7.打开连接到测试器的检查器的参数对话框:已通过的端口。
通过设置单击组的browse按钮并选择新公开的组fme_feature_type
重新运行工作区。在数据检查器中,每一种类型的路都将被分成它自己的层。你会看到这14个不好的特征;主干道4条,住宅7条,次干道3条。
计算坏的特性的数量是很容易的,因为我们已经过滤掉了它们。例如,甚至工作台特性计数也显示了所涉及的数字:
使用StatisticsCalculator转换器创建存储在属性中的计数非常简单。
按照以下步骤学习如何计算短行特性。
8.在测试器:通过的端口和它的检查器转换器之间添加一个统计计数器。打开参数对话框。
首先,选择_length作为要分析的属性。实际上,我们选择哪个属性并不重要,因为我们只想要特性的数量。
从Calculate Attributes字段中删除所有值,然后在Total Count字段下添加“BadFeatures”。这将提供一个坏特性的计数。单击OK关闭对话框。
重新运行工作区。这一次,输出应该包含一个属性,该属性表示每种类型有多少不好的特性。
注:如果将StatisticsCalculator:Summary输出端口连接到检查器,则只有一个输出特性。要获得所有输出特性,请确保连接了完整的端口。
9.如果您希望根据道路类型对不好的特性(作为属性)进行计数,请重新打开StatisticsCalculator parameters对话框,并将Group By parameter设置为Group By属性fme_feature_type
运行工作区,您将看到每种道路类型的坏特性的数量。
没有一种简单的解决方案可以自动修复短行,因为短行可以以多种不同的方式出现。最简单的处理方法是使用LineMerger转换器将一条短线与相邻的短线合并;但是,正如下面的示例所示,有时尝试自动修复短行可能会引入比它修复的更多的错误,并且可能成为一个相当复杂的过程。
12.添加一个LineJoiner transformer(在FME2018或更新版本中称为LineCombiner),并将其插入reader功能类型和LengthCalculator transformer之间:
13.打开LineJoiner transformer的参数对话框。这个变压器有许多参数来控制它的工作方式。这里的一个危险是不必要的连接,因为没有方法告诉它应该只连接简短的特性。
因此,将Group By参数设置为“HBLOCK”,将Consider节点的海拔参数设置为“Yes”。
现在,除非它们是同一条道路的一部分,或者它们在不同的海拔高度上相互交叉,否则它们不会被连接起来。
14.即使使用LineJoiner参数,有些行也可能会不经意地连接在一起。例如,在同一块中的两个段应该被一个传入的连接分开,但现在连接在一起:
为了避免这种情况,在LineJoiner和LengthCalculator变压器之间添加一个扇区间变压器。
15.重新运行工作区。
您将看到一些问题特性已经被清除。例如,查找StreetId为11255的特性。在运行清理工作区之前,这是一个不必要的简短部分。随后,LineJoiner和Intersector合并了feature,并在与StreetId 11342相交的交界处与block相交。
但是,其他特性被不必要地交叉了(见StreetId 13545):
在这种情况下,交集解决了一些问题,但引发了其他问题。
16.我们现在需要做的是重新联接那些错误交叉的特性,留下那些交叉的特性,因为它们是原始合并的一部分。这是事情开始变得更复杂的地方,但是我们可以通过比较一个特征被分解成的部分的数量和它在linejoiner之后拥有的部分的数量来区分另一个特征。
打开线条连接符的“参数”对话框。选中标记为generate list的框并输入列表名称(例如mylist)。这将创建一个fme列表-一个具有多个值的属性-它告诉我们哪些(和多少)路段正在连接。
17岁。添加listelementcounter和tester transformers,以及第二个linejoiner,它们都连接在工作区的末尾,如下所示:
打开listlementcounter参数对话框并将list属性设置为mylist{}。它将记录最初连接在一起的每个特征的零件数。
打开“检测仪参数”对话框。为元素计数为段设置测试条件。这将告诉我们是否将功能重新连接到一起。即。如果细木工和交线工对零件数量没有影响,则不应更改,应予以固定。
最后,打开“LineJoiner参数”对话框并将“按参数分组”设置为StreetID。这样做的目的是将基于streetid的线路连接起来,将不必要连接的街道重新连接起来。
18岁。连接inspector transformers(您需要linejoiner和tester:failed output)并重新运行工作区。
如果愿意,您可以添加第二个长度计算器/检测仪组合,以查看是否还有任何剩余的短行:
请注意,输出现在已修复了大部分原始短线。
你可能也注意到现在的短线比原来多了!这是因为该技术在以前没有节点的交叉点处分割了线。换言之,它发现了一些被错误点头的线条,并修正了这些线条——在这个过程中暴露出一些短线。
对短线的另一个解决方案是识别和删除短线和过冲线。[链接到超调消除文章]
2-您可能想知道为什么第一个linejoiner不只是使用streetid来分组,而是先使用hblock,然后再使用streetid进行第二次迭代。这是因为短链接在流程开始时具有不同的ID号,并且只有在第一个行连接符之后才获得匹配的StreetID。
这里使用的数据来源于不列颠哥伦比亚省温哥华市提供的公开数据(data.vancouver.ca)中。它包含根据开放的政府许可证-温哥华许可的信息。
?2019安全亚搏在线软件公司|合法的