原文发布时间:2015-01-29
作者:Tenniwdy
重复节点在大多数据格式中都不能构建,例如shp和dwg,但在dgn中重复节点是存在的。在作图的过程中可能导致节点的重复,而导致一系列的问题。在对dgn数据重复节点的检查或修改,FME Workbench都是非常方便的,但有些需要注意的细节。
FME Workbench能对dgn数据中的重复节点进行检查,也能去掉重复节点。但FME Workbench对dgn重复节点的读取也并不是完全读取的,读取某类要素将无法读取此类要素的重复节点。
首先看看我们的测试数据,在dgn中查看重复节点。
再通过FME Universal Viewer读取我们的测试数据,查看重复节点。
在这里可以看到带岛洞的要素没有重复节点了,这是因为FME Universal Viewer读取的时候就已经去掉带岛洞要素的重复节点,所以在处理重复节点的时候可以不用考虑带岛洞的要素。
当数据被读取到FME Workbench中后,还其他一些要素面和线要素可能存在重复节点。一开始想着通过什么方式去把重复节点给检查出来,但最后却发现本来存在的重复节点的数据,没被检查出重复节点。
下面是一个检查重复节点的自定义转换器,我们可以看到我们的测试数据中存在一个重复节点。
我们添加一个CoordinateRounder转换器,对要素的坐标精度进行截取,保留小数位后三位,然后再次检查重复节点。
添加CoordinateRounder转换器后自定义转换器就没有检查出节点的重复了,这是因为CoordinateRounder转换器会去掉重复节点,通过此转换器的的要素也就不会存在重复节点了。
在FME Workbench中大多数的转换器都不会自动去掉要素的重复节点,只有很少数的转换器有这样的处理方式,例如:CoordinateRounder、GeometryCoercer和AreaOnAreaOverlayer等等。
此博客内容只是在处理重复节点过程中发现的一些情况,希望能帮助到处理dgn重复节点问题的朋友,能提醒朋友们检查重复节点的时候避免使用可能会自动去掉重复节点的转换器;能在数据中存在重复节点需要去掉的时候换用某个转换器实现工作空间的功能的同时去掉重复节点。