知识指南 · 格式

十进制度与度分秒:经纬度格式完全指南

116.397029 与 116°23′49.30″E 是同一个经度。格式本身不复杂, 但半球符号、度分(DM)与度分秒(DMS)混淆、以及批量导入时的编码问题,每年都让无数数据表出错。

三种常见写法

格式示例常见于
十进制度 DD116.397029, 39.917839API、数据库、GeoJSON、绝大多数 Web 地图
度分 DM116°23.82174′E, 39°55.07034′N部分航海与测绘仪器
度分秒 DMS116°23′49.30″E, 39°55′4.22″N纸质地图、测绘成果、地理教材

最容易踩的坑是把 DM 当成 DMS:把「23.82174 分」误读成「23 分 82 秒」, 结果会差出约 1 公里。看到分位带小数,就要警惕它是 DM。

换算规则

1 度 = 60 分,1 分 = 60 秒。十进制度转 DMS:

度 = floor(abs(value))
分 = floor((abs(value) - 度) * 60)
秒 = ((abs(value) - 度) * 60 - 分) * 60
方向 = value >= 0 ? (纬度 ? 'N' : 'E') : (纬度 ? 'S' : 'W')

反过来:

十进制度 = 度 + 分 / 60 + 秒 / 3600
若为 S(南纬)或 W(西经),结果取负

注意先取绝对值再算,否则负号会被重复带入分秒。本站度分秒转换工具已处理这些细节, 并且兼容 116°23'49.3"E 这类用单双引号代替 ′ ″ 的写法。

半球与正负号

  • 北纬 N、东经 E 为正;南纬 S、西经 W 为负。
  • 中国全境位于北纬、东经,很多业务表因此省略了 N/E 与正号,这在与境外数据合并时会出问题。
  • 经度在前还是纬度在前?GeoJSON 规定 [经度, 纬度],而多数地图 SDK 的 LatLng 构造函数是 (纬度, 经度)。这是另一个高频错误来源。

本站的格式校验工具会对「两个值都 ≤ 90」的行给出经纬度写反的提示—— 因为在中国范围内,经度通常大于 90,纬度一定小于 54。

批量处理建议

  1. 先统一成十进制度再入库,DMS 只用于展示。
  2. 保留原始列,不要把换算结果覆盖回去,方便回溯。
  3. 导出 CSV 时加 UTF-8 BOM,否则 Excel 打开中文与 ° ′ ″ 符号会乱码;本站批量工具导出的文件已带 BOM。
  4. 精度按业务需求取:6 位小数约 0.1 米级,7 位约 1 厘米级。存 12 位小数并不代表测得准。

别忘了坐标系

格式解决的是「怎么写」,坐标系解决的是「写的哪个位置」。 一份格式完全正确但坐标系搞错的数据,依然会偏移几百米。 接着读WGS84、GCJ02、BD09 到底有什么区别。

相关阅读

配套工具