span8
span4
线性网络应该由相交于一点而不相交的线组成。然而,情况并非总是如此。会出现各种各样的问题。
当两条线相交于一个已知点,但其中一条线没有正确连接时,就会出现不对齐点:
超调发生在两条线相交于一个已知点,但有一条线超出了交点:
两条线相交于一个已知点,但有一条线无法相交,这就发生欠冲:
缺失节点发生在两条线相交于一个已知点,但其中只有一条线包含交点:
在本例中,红色(水平)线有一个结束节点,但绿色(垂直)线在相同位置没有节点或顶点。
一般来说,这些问题非常小,通常肉眼看不见——否则,不需要特殊的数据验证技术就可以很容易地检测到它们。在这些场景中没有特定的变压器,但我们可以使用一般几何处理变压器的组合来完成这项工作。
虽然我们使用“网络”这个术语,但这些问题也适用于任何意在形成封闭结构的线性特征,例如,下面示例中使用的包裹边界线……
本例中的数据集是一组线条特征(在一个微站DGN数据集中),表示温哥华城市中的地产地块边界。
数据集看起来像这样在FME数据检查器:
这里的场景是清理线条特征,确保所有财产包裹正确关闭。我们将通过使用AreaBuilder转换器将它们转换成多边形特征来证明这一点。
为了评估线性几何状态,最简单的方法是使用扩容变压器。如果几何图形可以转化为多边形特征,那么所有的连接都正确。
更复杂的方法是使用TopologyBuilder转换器。这就把网络变成了一系列节点和边。如果我们可以定位只被一条边使用的节点,那么这表示一条未连接的线。如果线本身很短(或节点与相邻线之间的距离很短),那么这表示一个超调、欠调或未对齐的点。
对于本例,我们将坚持使用更简单的AreaBuilder方法。
按照以下步骤学习如何识别过冲、欠冲、未对齐的点和丢失的节点。
1.启动FME工作台,并从一个空画布开始。从菜单栏中选择Reader >添加Reader。
将数据格式设置为Bentley MicroStation Design (V8)。选择附加的dgn文件作为源数据集,然后单击OK添加读取器。
2.放置一个连接到线路数据的变压器。连接它的每个输出端口到一个检查变压器。
3.为了清晰起见,在AreaBuilder:Area输出端口添加一个featurecolsetter转换器:
设置参数来给区域特征一个明显的颜色。运行工作空间。不完整的特征(那些以某种方式无效的)将出现在一个单独的层和颜色:
检查特征,放大接近它们的端点。您将看到这些特性是过冲、欠冲、未对齐的点还是缺少节点。
在路网中,有些特征可能是亮点,但也不是不正确的,比如死胡同或死胡同。因此,要么需要一些手动评估,要么可以使用另一个FME变压器;例如,LineOnAreaOverlayer或SpatialFilter将显示线条是否与多边形重叠——如果它们重叠,那么它们更有可能是不正确的。
假设我们所隔离的特性实际上是不正确的,那么使用StatisticsCalculator transformer可以很容易地对它们进行计数。
遵循这些步骤来学习如何计数糟糕的线性几何。
4.在变压器和检查器之间添加一个统计计数器。检查统计变压器的参数。
为要分析的属性参数选择任何属性。如果没有可用的属性,那么在源特性类型上公开一个属性,或者使用AttributeManager来创建一个属性。价值观对我们来说并不重要。
将Total Count属性参数设置为NumFeatures并接受更改。
5.重新运行转换。输出现在将有一个不正确特性的计数,尽管它将是一个总数,而不是每种类型的错误。
注:如果将StatisticsCalculator:Summary输出端口连接到检查器,则每个组将只有一个输出特性。要获得所有输出特性,请使用完整的端口。
修复糟糕的线性几何图形可能需要反复试验。有一个特定的容差值是很好的,但是也要按照给定的顺序使用变压器。当在一个不同的顺序使用的结果可能是完全不同的,可能引入不需要的线的小块。
所以,按照这些步骤来学习如何修复糟糕的线性几何。
6.在源数据和AreaBuilder之间的转换中添加一个Snapper转换器。将Snapper的已拍和未触碰输出连接到AreaBuilder:
检查Snapper参数。对于大多数参数,默认值都可以,但是必须设置一个捕捉容忍值。在本例中,将值设置为0.2
将一个检查器附加到Snapper: snap端口(这样我们就可以看到发生了什么)并重新运行工作区。其结果是减少了两个无效特性。这两个都是不对齐的点,现在被拉回原位。
有几个有趣的地方。首先,欠冲值和过冲值也可以通过snap来修复,但是在规定的公差范围内没有明显的偏差。Snapper可以处理这些场景,但它的主要用途是处理未对齐的点。
其次,对于其中一个特征,不对齐的特征是被固定到它的特征,而不是被固定到其他的特征。这就是为什么只有两个功能需要修复,而三个功能却被卡住了。这不是理想的,但容忍参数保证这样的掰断不会太极端。
7.在Snapper和abuilder之间添加一个LineExtender转换器。确保LineExtender:拉伸的输出端口是连接的端口:
检查参数并将扩展设置为0.5。这将导致所有线路延长0.5米。它应该处理任何不足之处。当然,它会把它们(和所有其他特性)变成过冲,但是我们可以很快处理这个问题。
8.现在在LineExtender和AreaBuilder之间添加一个扇区间变压器。Intersected output port是我们要保存的数据:
应该不需要设置参数,尽管在FME2018或更新版本中,现在有一个允许模式,如果设置为自动,会产生更好的结果。
这个转换器将在它们的交点上切断过冲,并创建丢失的节点。
现在重新运行工作区。将会有大量的“不完整”特征,但这些只是被切断的过冲。如果你查询所有其他特征,你会注意到多边形是正确的,现在没有过冲、欠冲、未对齐的点或丢失的节点。
9.如果数据仍然需要作为线的网络使用,那么线性特征可以通过使用一个部门间转换数据回正确的节点线来重新创建。
在一些不完整的线仍然需要的情况下——例如,死角——那么一个LengthCalculator/Tester组合可以用来过滤掉那些不完整的线比通常预期的要短(即,它们要么是超调,要么是应用的扩展,而不是真正的特性):
这里使用的数据来源于不列颠哥伦比亚省温哥华市提供的公开数据(data.vancouver.ca)。它包含在开放政府许可证下的信息-温哥华。
谢谢这篇好文章@mark2at亚搏在线safe。
然而,如果你可以用TopologyBuilder transformer提供你的解决方案来定位糟糕的线性几何图形,这将是非常有趣的。对于在公用事业网络工作的我们来说,不幸的是,扩音器不是解决问题的办法。
提前谢谢,。
这是一个很好的观点。这就是在区域拓扑中寻找线性特征的问题,不一定是线性的。
对于线性拓扑,您可以使用一个NetworkTopologyCalculator。这将为单独网络的每个比特创建一个网络ID。如果所有的东西都应该是一个单独的、连接的网络,那么多个id会告诉您在某个地方一定存在缺口。
另一个要尝试的东西是扇区间变压器。它会在交叉的地方切断线。然后你可以使用这个技巧来寻找短线(https://knowledge.亚搏在线safe.com/articles/32747/identifying-small-line-features-with-fme.html)来寻找过度。
对于不达标的企业,跨部门部门本身将解决这些问题。只要将容错参数设置为适合您的数据的容错即可。如果一条线很短,那么它将——假设它在容忍范围内——是固定的,并创建一个交集。
这有帮助吗?如果您可以指定数据的其他“不好”之处,那么我也许可以建议另一种方法来清理它。
谢谢你的快速回答@mark2at亚搏在线safe
在实用网络迁移中,我通常使用锚定Snapper来保持节点和边缘的连接。我相信你明白这些网络良好的连接是至关重要的。使用锚定的Snapper是重要的,因为点通常被精确地测量,并被认为是静态的,而线可以移动在一些抓拍容忍。每一行的末端必须有节点对象。
现在我有一个巨大的天然气网络,其中源系统的连通性并不好,我必须执行截取网络中大约10%的边缘,以保持良好的连通性。因为我工作与数以百万计的对象,它需要相当长的时间,直到所有的对象被正确地使用锚定的Snapper。90%的边缘去变压器未接触,但被变压器分析。
我的想法是,我执行一些更快的预抓取分析(性能比抓取本身更好),并尽量减少锚定抓取器内的节点和边的数量。换句话说,想法就是以某种方式识别出有问题的物体,然后专注于对它们的编辑。
对我来说,理想的情况是识别网络中所有的边,它们的任何端点上都没有点对象。然后我可以把它们带到锚定的鲷鱼,并试着把它们咬到适当的点。如果你能对我如何完成这项任务提出建议,那将是很有帮助的。
©2019安全亚搏在线软件公司法律