百度坐标、火星坐标与WGS-84坐标转换(纠偏加偏)工具及其开发思路
目录
一、杂言
百度坐标(BD-09)、火星坐标(GCJ-02)坐标与WGS-84坐标相关说明这里不再赘述,其他博客文章对于三类坐标系的说明已经比较详细,可以自行搜索了解,本篇文章主要对本人开发的各类转换工具进行说明(注:本人主要使用Python脚本进行开发)。文章末会将工具下载页面附上,工具为我在读研期间学习与实践的成果,可以提供数据服务,请尊重知识成果,欢迎提供意见或建议。转换源码为GitHub开源代码,想自己尝试开发的可以看下文链接下载自行开发,工具与工具算法暂不提供,伸手党请绕行。转载请注明原文,谢谢。
二、正题
注意:开发过程中坐标单位均为十进制度
(一)ArcGIS环境下开发Toolbox工具箱
在软件的计算代码使用GitHub开源代码,提供者为wandergis,地址为(https://github.com/wandergis/coordTransform_py)。我对代码修改优化,刚开始在ArcGIS平台进行开发,主要为Toolbox工具箱开发,开发成果只要为三类:坐标转换工具矢量版Toolbox、坐标转换工具Excel版Toolbox、坐标转换工具CSV版Toolbox,三类工具均进行过优化与测试,力求达到最精简界面实现工具功能。下面对三类工具进行简要说明:
1、坐标转换工具矢量版Toolbox,主要功能利用Arcpy游标函数或Arcpy.da游标函数实现点、线、面矢量数据的转换,主要思路:点要素最简单,直接获取坐标转换保存为新点要素;线要素与面要素较为复杂,我在开发中强制将原要素变为单部件要素,然后获取构成线或面要素的点集坐标转换后逆向构造线或面要素,最后保存为新要素。以上均保持原有要素的属性表信息不变。截图:
优点:(1)在ArcGIS环境中,可以调用现有的函数组合,省去逻辑设计消耗脑细胞,同时减少代码书写量;(2)工具界面利用脚本添加到Toolbox中,省去界面脚本编写的烦恼;(3)实现大批量点、线、面矢量数据的转换,保留原始输入要素的属性值,只对组成图形节点的坐标转换与更新。
缺点:(1)ArcGIS运行环境,数据处理效率一般,数据量大会增加处理时间;(2)ArcGIS环境中Python编程无法支持多部件要素,且对于孔洞与孤岛多边形我还在进行探索解决方案。
2、坐标转换工具Excel版Toolbox,主要功能利用Openpyxl模块读写Excel记录坐标进行转换,该模块仅支持后缀为*.xlsx的文件读写,主要思路:建立Excel文件模板,编写代码读取并转换,输出结果写入新文件。截图:
优点:处理速度快。缺点:Excel数据量很多时效率低,使用文件时出现严重卡顿。
3、坐标转换工具CSV版Toolbox,主要功能利用CSV模块读写CSV(*.csv)记录坐标进行转换,主要思路:建立CSV文件模板,编写代码读取并转换,输出结果写入新文件,注意以二进制方式(‘wb’)进行读写,否则肯能会出现空白行问题(参考:https://blog.csdn.net/zzzjojo123/article/details/53303605)。截图:
优点:CSV支持百万级数据读写操作,且处理速度快。
(二)脱离ArcGIS环境的exe程序
1、坐标转换工具矢量版exe程序
这个部分考虑到ArcGIS运行环境问题,利用基于Python的OSGeo、GeoPandas、Shapely等开源模块,通过算法设计实现与上文矢量版相同功能,从要素几何构成方面设计多部件要素与孔洞、孤岛多边形处理算法,解决无法转换的问题。至该文章发出时,该算法脚本已经通过数据测试,处于界面设计阶段。我在对脚本打包为exe可执行文件时,使用的是py2exe包,简单快速。
优点:(1)支持多部件要素以及孔洞、孤岛多边形;(2)脱离ArcGIS运行环境,处理效率相较于ArcGIS工具箱高。
2、坐标转换工具Excel与CSV版集成exe程序
Excel与CSV文件均属表格类型文件,因此进行集成,通过设计类模块与函数进行调用,最后打包为exe可执行程序。界面如下:
(三)链接
坐标转换工具矢量版Toolbox:抱歉,伸手党举报没有了,不过可以联系我(E-mail:602168676@qq.com);
坐标转换工具Excel版Toolbox:https://download.csdn.net/download/yhiki/10563183;
坐标转换工具CSV版Toolbox:https://download.csdn.net/download/yhiki/10563227;
坐标转换工具矢量版exe:抱歉,可以联系询问情况;
坐标转换工具Excel与CSV版exe:抱歉,可以联系询问情况。
转载自:https://blog.csdn.net/yhiki/article/details/86476276