斯潘8
斯潘4
短线是指长度小于规定公差的线。这些可以通过以下组合找到:测量线路长度然后用滤波变压器施加一个试验条件。
短线测试是一种很好的质量保证测试,因为小于一定长度的线通常表示存在重复顶点等问题。网络边缘无效,悬挂(超调)一般来说线条不好。
例如,下面的箭头表示两条非常短的线,悬挂在道路网与不完全匹配的多边形边界之间的地方:
计算这些坏特性中有多少是非常简单的。然而,如下文所述,像这样的线自动固定更困难。
本例的源数据集是一组线条(在AutoCAD DWG数据集中),表示温哥华市的道路。
数据集在FME数据检查器中如下所示:
这里的场景是我们希望创建一个适当的边缘/节点网络,但要认识到,我们应该添加一些质量保证检查,以确保没有坏的线条被使用。
按照以下步骤学习如何识别短线功能。
1。启动FME工作台,从一个空画布开始。
从菜单栏中选择“读卡器>添加读卡器”。
将数据格式设置为autodesk autocad dwg/dxf。选择附加的dwg文件作为源数据集。单击参数按钮,并将分组实体设置为“属性模式”。
单击“确定”,然后再次单击“确定”以添加读卡器。
2。源数据集由行功能组成。为了测试它们的长度,我们首先必须用长度计算器变压器测量它们。
所以,添加长度计算器变压器。将所有读卡器功能类型连接到长度计算器输入端口。
三。要评估特征的长度,需要一个能够根据特定条件过滤特征的变压器。最容易使用和最常见的变压器是测试仪。
所以,添加测试变压器并将其连接到长度计算器:输出端口。
4。一条线在被怀疑之前需要有多短是一个主观的决定。然而,一条短于其宽度的道路连接似乎是一个明显的候选者。维基百科告诉我们3米宽.温哥华的大部分道路由两条车道组成。因此,我们应标记所有长度小于6米的路段。
所以,打开“检测仪参数”对话框。设置测试条件以检查测量长度小于6的道路特征:
5。向每个测试仪输出端口添加两个inspector transformers-一个-并运行工作区。当输出出现时,在FME数据检查器中调整特征颜色,使短线更加突出。
检查红色特性,看看它们是否真的是问题特性以及原因。你会发现在整个城市都有一些孤立的问题。
6。假设我们想确定受影响的道路类型;即他们是私人的吗?住宅的,次要的,等。这样做的第一步是将该信息作为属性公开。
所以,单击任何源要素类型上的“…”按钮以打开其属性对话框。单击“格式属性”选项卡并找到属性功能类型。
对属性进行复选标记以公开它(使其在工作区中可用)。
7。打开连接到检测仪:通过端口的检测仪的参数对话框。
单击“按设置分组”的“浏览”按钮,然后选择新显示的功能类型
重新运行工作区。在数据检查器中,每种类型的道路都将被分成自己的图层。你会看到14个坏特性中的一个;4条是主干道,7个是住宅区,三是次要的。
计算坏特性的数量非常容易,因为我们已经将它们过滤掉了。例如,甚至工作台的特性计数也会告诉我们所涉及的数字:
要创建存储在属性中的计数,使用statisticscaleculator转换器很简单。
按照以下步骤学习如何计算短线功能。
8。在tester:passed端口和其inspector transformer之间添加一个统计计算器。打开参数对话框。
第一,选择“长度”作为要分析的属性。事实上,我们选择哪个属性并不重要,因为我们只需要一些功能。
删除“计算属性”字段中的所有值,然后在“总计数”字段下添加“BadFeatures”。这将提供一些坏特性。单击“确定”关闭对话框。
重新运行工作区。这次,输出应该包含一个属性,该属性指示每种类型有多少坏特性。
NB:如果您将StatisticsCalculator:Summary输出端口连接到检查器,只有一个输出特性。要获得所有输出功能,确保连接完整端口。
9。如果您想要基于道路类型的坏特征(作为属性)计数,重新打开StatisticScaleCalculator参数对话框,并将Group By参数设置为Group By属性功能类型
运行工作区,您将看到每种道路类型的不良特征的数量。
没有简单的解决方案可以自动修复短线路,因为短线路有多种不同的发生方式。要解决的最简单的情况是使用线路合并变压器将短线路合并到相邻线路中;但是,如下面的示例所示,有时,尝试自动修复短线路会带来比修复更多的错误,并可能成为一个非常复杂的过程。
12。添加一个线路连接变压器(在FM2018或更新版本中称为线路组合器),并将其插入读卡器功能类型和长度计算器变压器之间:
13。打开LineJoiner Transformer的“参数”对话框。这个变压器有许多参数来控制它的工作方式。这里的一个危险是不需要的连接,因为没有办法告诉它,所以只应该加入简短的特性。
所以,将group by参数设置为“hblock”,将consider node elevation参数设置为“yes”。
现在,除非线路是同一条道路的一部分,否则线路将无法连接,如果它们在不同的高度上互相越过,就不会。
14。即使使用LineJoiner参数,有些线路可能无意中连接在一起。例如,同一块中的两个段应通过传入连接拆分,但现在连接在一起:
为了避免这种情况,在LineJoiner和长度计算器变压器之间添加交叉变压器。
15。重新运行工作区。
您将看到一些问题特性已被清除。例如,查找街道ID为11255的功能。在运行清理工作区之前,这是一个不必要的简短部分。之后,LineJoiner和Intersector合并了该功能,并在与StreetID 11342的交叉路口处与街区相交。
然而,其他特征被不必要地交叉(见街道ID 13545):
所以这是一个交叉口解决了一些问题的例子,但也会引起其他人。
16。我们现在需要做的是重新连接那些错误相交的特性,留下那些交叉的,因为它们是原始合并的一部分。这就是事情开始变得更复杂的地方,但是我们可以通过比较它被分解成的部分的数量来区分一个特征和另一个特征,它在细木工之后拥有的零件数量。
打开LineJoiner的参数对话框。选中标记为“生成列表”的框,然后输入列表名称(如mylist,例如)。这将创建一个FME列表——一个具有多个值的属性——它告诉我们要连接哪些(以及多少)路段。
17。添加列表元素计数器和测试变压器,和第二个线路连接器-所有连接在工作区的末端,就像这样:
打开ListElementCounter参数对话框,将List属性设置为MyList。它将记录最初连接在一起的每个特征的零件数。
打开“检测仪参数”对话框。为_element_count=_段设置测试条件。这将告诉我们是否将特性重新连接在一起。即如果接合线和交叉线对零件数量没有影响,那么它不应该被修改,应该被修复。
最后,打开LineJoiner参数对话框,并将Group By参数设置为StreetId。这将要做的是基于streetID将线路连接起来,把不必要的街道连接起来。
18。连接InspectorTransformers(您需要LineJoiner和Tester:FailedOutput),然后重新运行工作区。
如果您愿意,您可以添加第二个长度计算器/测试仪组合,以查看是否有任何剩余的短线:
请注意,现在输出的大部分原始短线都是固定的。
你可能也注意到现在有比原来更多的短线!这是因为此技术在以前没有节点的交叉点处拆分了线。换句话说,它发现了一些不正确的线条,并纠正了这一点——在这个过程中暴露了一些短线。
1-短线的另一个解决方案是识别和删除短线和超调线。[链接到超调删除文章]
2-你可能想知道为什么第一个线人不只是用streetid分组,而不是先使用hblock,然后使用streetid进行第二次迭代。这是因为短链接在进程开始时有不同的ID号,只有在第一个接线员之后才得到一个匹配的streetID。
这里使用的数据来源于温哥华市提供的开放数据,不列颠哥伦比亚(数据.couver.ca)它包含根据开放政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的