转载
https://mp.weixin.qq.com/s?__biz=MzI2MzA2OTcwNQ==&mid=2652419011&idx=1&sn=abffd8829d34595fed0c1e78865a7d5f&chksm=f1ad9aa5c6da13b3264486979640b9d722e650449495781b4531b2284e29d3f6b99cb2b1d377&mpshare=1&scene=23&srcid=0801JZxtLNGAurE4nOOOifcj#rd
今年随着自然资源部成立,各部门间有大把的多源异构数据需要交互、清理、处理、整合、融合,CGCS2000坐标系的推广,大把的多源异构存量数据需要完成坐标转换。很荣幸我们所使用的FME平台在去年的国土资源部坐标转换评测也是顺利通过的,当然坐标转换不过是FME的九牛一毛、冰山一角,FME的强大我就不再打广告了,接下来我们来看下dwg数据这种较为复杂的格式,在坐标转换过程中有哪些注意点,今天先讲两点。
以下这些问题往往是在dwg转换坐标生成dwg格式时发生的问题,若坐标转换后生成非dwg格式是不会遇到这些问题,究其原因,还是dwg各种格式属性惹的祸。
首先文字需要注意的主要是两个方面的问题:对齐点定位坐标与旋转角度。
我们使用fme模板完成了二维四参数的转换,参数设置如下:
通过参数可以看到要素进行了平移。
首先来看下第一个问题:对齐点定位坐标属性
可以看到坐标转换之后,部分文字和对齐标注的位置并未变化,但是我们在FME datainspecter中进行重定向查看并未发现此问题,且输出非dwg的其他矢量格式(例如mdb、gdb)都是正常的。
通过分析发现文字若存在下图属性,则在输出到dwg时,会优先根据该属性的点坐标进行定位。
而对其标注、半径标注等标注类的要素,则是下图的一些属性进行控制。
对于不同类型的要素我们就需要重新对这几个属性进行赋值才能保证顺利转换。
我们使用fme模板完成了二维四参数的转换,参数设置如下:
通过参数可以看到要素进行了旋转。主要关注文字与块的旋转角度,为了方便看清变化,每个图形都画了个外接矩形。
通过上图可以看到转换后输出的文字和块参照其旋转角度存在问题,而我们在FME datainspecter中进行重定向查看并未发现此问题,如下图:
重定向到FMEdatainspecter中角度正确
原始的文字定位属性与旋转属性
坐标转换后文字定位属性与旋转属性
坐标转换后输出的dwg文字定位属性与旋转属性
通过以上3张图片分析可以发现其实就是这个属性导致的,同时可以看到fme_rotation这个属性值转换后在FME里面看是对的,但是输出到dwg后就出现了问题,那么如何来解决这个问题,这里提供一种方法,使用vertexcreator+textadder的方式重新生成文字可以暂时解决这个问题,如下图,当然也可以通过python去修改几何定义属性,或者还有其他方法待大家去发掘。
先来看下原始数据,主要是一个带弧的多段线与圆弧,如下图:
在FMEdatainspecter中查看格式属性如下:
带弧多段线为IFMEPath,由直线与弧线构成,另一个图形是圆弧,其autocad_original_entity_type为autocad_arc。
我们使用Reprojector转换器进行坐标转换,再看下坐标转换之后输出到dwg的情况
问题来了,我们发现圆弧变成了椭圆,然后带弧多段线的弧没有了,变成了折线。
通过分析发现主要是圆弧几何属性导致的,如下图:
原始的弧属性
转换坐标后的弧属性
我们发现所有的圆弧这里多了PrimaryRadius与SecondaryRadius属性,且值相同,这就导致了我们输出到dwg产生问题。
带弧多段线也是同样的原因
为此我们的解决方法是利用pythoncaller重构属性,具体方法和模板如下图
处理后我们就可以保持原有图形定义输出到dwg中了。