多Paht和Ring的Geometry的坐标转换问题
2008-05-23 21:57
232 查看
很久以前就写过坐标转换的程序,原理当然十分简单,通过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条记录。转换质量较高。
我后来也曾经试图通过寻找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条记录。转换质量较高。
相关文章推荐
- 屏幕坐标向OpenGL坐标转换的问题
- 【转】TB(TerraBuilder)转换日志:解决影像数据坐标转换后,在Skyline平台不能显示的问题
- ViewRootImp内部canvas坐标转换的问题
- 百度地图/高德地图大批量坐标转换结果返回顺序问题
- mfc 绘图中的坐标空间转换问题
- opencv编程珠玑——Opencv中模版匹配后得到的坐标与原图像坐标的转换问题
- MFC中画线,坐标转换等问题小结
- opencv的图片显示到控件上坐标转换问题
- 客户区坐标与屏幕坐标之间的转换问题
- opengl坐标转换的问题
- Geometryservice:坐标转换、求多边形面积和周长
- 关于百度地图API的地图坐标转换问题
- Unity坐标转换问题
- mfc 绘图中的坐标空间转换问题
- 百度坐标转换 的异步转码问题
- ArcGIS编程实现自定义坐标转换的问题
- 关于百度地图API的地图坐标转换问题
- 百度地图 坐标转换 顺序问题
- GPS经纬度及谷歌地图坐标转换为百度地图坐标,解决地图显示经纬度的偏移问题
- mfc 绘图中的坐标空间转换问题