多Paht和Ring的Geometry的坐标转换问题

很久以前就写过坐标转换的程序,原理当然十分简单,通过IPointCollection接口取出每一个Geometry的组成节点,转换为新点后再次组合起来即可。但在刚开始的时候没有考虑Polyline的多Path和Polygon的多Ring情况,以至于一出现有洞的面或多路径的线时,转换的数据就是乱七八糟。

我后来也曾经试图通过寻找Polygon的外环和外环中的内环等方法来解决,这个玩意就两个字:复杂,尚若洞中还有环,这个Geometry的解析就无比复杂。拖拖拉拉半年之后,刚刚数据部接到一个宁波坐标转WGS84的任务,用以前的工具一转,点和大部分线还马马虎虎,那些面就真见了鬼了。

由于时间不多,思量之下,突然想到使用IGeometryCollection接口的方法,譬如对一个有两个洞的Polygon,可以这样处理:
IGeometryCollection pGeoCol=pPolygon as IGeometryCollection;
console.writeline(pGeoCol.GeometryCount);
我们会发现结果为3,即两个内环和一个外环都同时取出了。

如果将三个环分别转换生成,当然还是用IPointCollection的接口,然后使用IGeometryCollection的方式进行组合,就刚刚好:
IGeoemtryCollection pNewGeo=new PolygonClass();
pNewGeo.AddGeometry(......)

立刻修改程序,4小时15分41秒,成功转换了大约1146889条记录。转换质量较高。

你可能感兴趣的:(多Paht和Ring的Geometry的坐标转换问题)