众所周知,国内在线地图中,大部分使用的坐标都与标准的WGS 1984之间有偏差(除了天地图)。以之前分享的 WMTS服务 为例,其中就有不少图层采用 GCJ02 坐标,与采用标准WGS 1984的图层之间存在数百米的偏差。具体可参考维基百科 中华人民共和国测绘限制
几种坐标之间的差别简要概括如下:

WGS84:即最广泛使用的、国际通用的地理坐标系,由经、纬度确定地球表面的点的位置。因GPS设备采用该坐标系,因此也将采用WGS84坐标系的坐标称为GPS坐标。
GCJ02:由中国国测局制定,在WGS84坐标的基础上,其所采用的混淆算法会在经纬度中加入看似随机的偏移,号称可以促进national安全。坊间也有称火星坐标。高德地图、谷歌中国地图等采用。
BD09:百度地图使用的经纬坐标系统,其在GCJ02上多增加了一次变换,号称“有助保护用户隐私”。

以本人愚见,这种坐标加偏除了给开发者、研究人员造成麻烦以及加深封闭之外,实在与安全和保护隐私无关。保护安全,应该是在数据层面,不要在地图上公开出现机密信息即可,也还没见哪些地方测绘部门使用这种坐标加偏来“保护安全”的,更何况由国家测绘地理信息局监制的天地图使用的还是标准的WGS84坐标系。“保护用户隐私”更是无稽之谈,在非必要情况下不要使用精确坐标以及确保数据加密传输和存储才是正道,坐标加偏实属掩耳盗铃。

不过既然“上有政策”,自然“下有对策”,毕竟不同数据源之间匹配是个硬需求。相关转换算法在业内已是公开的秘密,相信很多人也用过相关的转换算法或转换软件。不过这些软件一般是对输入的x,y坐标值计算处理后输出转换后的坐标值,只能处理表格,并不能处理空间数据。远见很早前也曾发布过一个转换工具,但当时的版本只能够处理点数据。而本次发布的版本,全面支持点、线、面要素,对多部件、有孔洞的要素也能完整处理,并且原样保留属性表

另外,本工具内置的转换函数在部分公开代码的基础上,也进行了一定的修改,理论上能提高互转的精度。但由于高德API和百度API中对于WGS84转GCJ02的返回结果还不一样,所以也很难找到个“绝对准确”的参考,只是希望能够尽可能的减小误差,肯定要比在ArcGIS内肉眼比对进行空间校正要精确得多。这里不对具体的转换算法做过多讨论。
除了WGS84、GCJ02、BD09的互转,软件还支持输入自定义转换函数(python脚本),因此可以作为一个通用的空间数据坐标转换工具使用。

下载地址见文末,使用前请先阅读下文使用说明。

使用说明

下载压缩包后,将解压出的tbx文件放在任一文件夹内,只要能够在ArcMap的目录窗口内找到即可,否则可能需要添加新的文件夹连接。
双击tbx文件,展开工具箱。

工具箱
工具箱

再双击工具“xdc坐标转换工具”打开输入界面。
输入界面
输入界面

如果没有显示右侧帮助栏,请点击右下角的“显示帮助>>”按钮展开帮助信息。
点击每个输入框,均会在帮助侧栏内显示相应的帮助信息。

输入必需的参数后,点击确定即可运行。

重要提示:如果运行窗口较小,请手动调整窗口大小,以便查看运行过程中的提示信息。

以下为示例数据转换前后的情况。
转换前的示例数据,包含点、线、面(多部件面、带孔洞面),WGS84坐标系,底图为天地图。

转换前(WGS84)
转换前(WGS84)

示例数据坐标转GCJ02后,底图为高德地图。可以看到与原图形之间有数百米的偏移。

转换后(GCJ02)
转换后(GCJ02)

使用场景示例

1)高德地图数据转WGS84
从高德地图获取到的点数据(如POI)、线数据(如导航路径)、面数据(如行政边界面)等其坐标均为GCJ02,可利用该工具转为标准的WGS84坐标。

注意:GCJ02和BD09只是在WGS84的基础上进行了坐标值的偏移,并不是两种新的ArcGIS内概念的“坐标系”,相关空间数据在存储时坐标系选择GCS_WGS_1984即可。
亦即:内置的6种转换方式只是坐标值之间的偏移,不涉及“坐标系”的变化,转换前后的shp文件的坐标系(空间参考)都应是GCS_WGS_1984

2)地方坐标转WGS84再转GCJ02
一般该需求来源于将地方测绘相关数据放到Web平台上,使用高德地图作为底图。
地方坐标转WGS84这一步使用ArcGIS的投影工具即可完成,根据各地情况不同,可能需要选择合适的地理变换。可借助之前分享的 WMTS服务 添加WGS84的底图来检验投影结果。
将投影的数据再进行WGS84转GCJ02,即可放到Web平台上与高德地图匹配。

3)百度像素坐标转BD09再转WGS84
以抓取百度地图建筑轮廓为例,从百度地图17级上获取到的建筑轮廓点坐标为像素坐标,因此由轮廓点集构建的面数据需先进行一次转换将像素坐标转为百度BD09经纬坐标。该步转换所需的自定义转换函数已包含在提供下载的压缩包内,另外注意此步输出要素的坐标系(空间参考)应选择GCS_WGS_1984
再将转换得到的BD09坐标的面数据使用内置转换方式转为WGS84坐标即可。

下载地址

在远见(@farsightj)公众号内回复 坐标转换 获取下载地址。
软件虽经过一定的测试,但因系统环境和ArcGIS版本等原因,仍有可能出现无法正常使用的情况。理论上,Windows 最低版本要求为 Windows 7,ArcGIS 最低版本为10.1 。
使用过程中遇到问题请先参照运行提示进行处理,如仍无法解决可联系邮箱 i@xdc.at,反馈问题时请提供操作系统版本、ArcGIS版本等信息,并附上运行截图。