问题描述
一个房屋面的图层和一个交通线的图层,存在线面压盖的情况。这种肯定是不允许的,那么往往就需要去调整交通线,使其避开房屋面。到达如下图所示效果:
解决思路
当线和面压盖时,压盖那部分线用面的边缘那部分代替线部分如下图所示:(图片来源于:https://blog.csdn.net/fmechina)
但是为了稍微使线挪动之后更加“美观”可对面向外进行一定缓冲,截取缓冲的部分作为替换部分如下图所示:(图片来源于:https://blog.csdn.net/fmechina)
在截取面部分边线的时候,需要选择线切割后面积较小的部分,此时需要用线去切割面,而FME没有转换器能直接实现,实现思路是将面转成线,再用线去切割面的边线,然后对切割后的面边线进行重新构面。
获取切割后面积较小的部分后,还需要将获取的面转成线,再用线去切割面的边线,移除切割后重复的部分后将线连接起来。使用LineOnLineOverlayer转换器后,重复部分的_overlaps的值大于1,可使用Tester转换器进行筛选。
模板截图
核心转换器
Bufferer:在几何对象的外部或者内部创建指定距离的缓冲区
GeometryCoercer:重新设置要素的几何类型(这里主要用于将面转换为线)
Sorter:根据某个属性值对要素排序
Sampler:根据Sampling Type选项的选择进行抽样(这里与Sorter配合使用,用于获取切割后面积较小的部分)
LineOnLineOverlay:线与线的压盖操作(要注意设置容差值,容差不同,结果不同)
LineCombiner:把线连接成更长的线