个人工作经验分享

坐标系基础

2026-09-10 · 技术笔记

为什么会有这么多坐标系

在中国做地图相关的开发,绕不开坐标系的问题。同一个位置, 在不同地图上显示会出现几百米的偏差,原因就在于它们使用了不同的坐标系。

三种坐标系对比

名称 全称 应用 加密
WGS84 World Geodetic System 1984 GPS、国际标准
GCJ02 国测局坐标系 高德、腾讯、Google 中国 一次加密
BD09 百度坐标系 百度地图 二次加密

偏差有多大

在中国大陆范围内,WGS84 和 GCJ02 之间的偏差大约在 50~500 米之间, 具体大小与地理位置有关。GCJ02 和 BD09 之间的偏差大约 100~700 米

这个偏差在市区可能只是一两条街的距离,在野外则可能完全偏出道路。 所以做地图应用时,坐标系转换是必须要处理的问题。

常见转换路径

工程实践建议

1. 明确数据源

首先要搞清楚输入数据是什么坐标系。国内很多 GPS 设备默认输出 WGS84, 但也有一些设备已经内置了偏移。数据源搞错了,后面转换都是白搭。

2. 尽量在后端转换

前端转换虽然可行,但有性能和安全上的问题:

推荐做法:后端统一存储 WGS84,展示时按底图类型转换一次。

3. 缓存转换结果

对于固定点位(如围栏、站点),转换结果可以缓存,避免重复计算。

4. 注意境外坐标

GCJ02 加密算法只对中国境内坐标有效。中国境外的坐标不需要转换, 直接使用原坐标即可。判断逻辑一般是经纬度是否在 73°E~135°E, 3°N~54°N 范围内。

开源工具

参考资料