两点距离怎么算:平面坐标距离与经纬度大圆距离实战
平面两点用勾股算欧氏距离,经纬度两点用 Haversine 算大圆距离。这篇讲清两种距离的差别、地图测距怎么避坑,并给出北京到上海约 1067 公里的真实算例。
两点距离怎么算:平面坐标距离与经纬度大圆距离实战
算两个点之间的距离,听起来是中学几何,但真到了地图和导航场景,一不小心就会算出离谱的数字。问题出在,"距离"在平面坐标系和地球表面上是两回事。这篇把这两种情况拆开讲,顺带说说我自己踩过的坑。
平面两点:欧氏距离就是勾股定理
如果你的两个点在一张平面图纸上,比如设计稿的两个锚点、棋盘上的两格、或者一张笛卡尔坐标图,那距离就是直线段的长度。设 A 点是 (x1, y1),B 点是 (x2, y2),欧氏距离公式是:
d = √((x2 - x1)² + (y2 - y1)²)
这其实就是勾股定理:横向差是一条直角边,纵向差是另一条直角边,两点间的直线是斜边。举个具体例子,A = (1, 2),B = (4, 6),横向差是 3,纵向差是 4,代入得 √(9 + 16) = √25 = 5。这是最经典的 3-4-5 直角三角形,结果干净利落。平面欧氏距离对几何作图、像素布局、游戏里的碰撞判断都够用,因为这些场景本来就活在一个平的坐标系里。
经纬度两点:平面公式会算错
可一旦坐标变成经纬度,平面公式就不能直接套了。地球是个球(更准确说是略扁的椭球),纬度每 1 度对应的实际地面距离大致固定,约 111 公里;但经度每 1 度对应的距离会随纬度变化,在赤道约 111 公里,到了高纬度收窄,接近两极时趋近于零。如果硬把经纬度当成平面 x、y 套勾股,跨纬度越大,误差越夸张。
正确的做法是求大圆距离,也就是沿球面的最短路径,正是飞机实际飞行的那条弧线。常用的公式是 Haversine,它用两点经纬度直接算球面距离,对真实点对产生的小角度数值上很稳定,比朴素的余弦定理精度更高。Haversine 假设球面地球,平均半径取 6371 公里。
一个真实算例:北京到上海
光说公式不直观,看一组真实输入输出。把北京和上海两组坐标填进经纬度距离计算器:
- A 点(北京):纬度 39.9042,经度 116.4074
- B 点(上海):纬度 31.2304,经度 121.4737
Haversine 算出来约 1067 公里,和公开的城市间距离相差不到一个百分点。同一个米结果还会同时换算成公里、英里和海里,所以你不用手动倒腾单位。除了距离,工具还顺带给出从 A 到 B 的初始方位角,带 16 方位的罗盘标注(比如 SSE),以及两点的大圆中点经纬度。这三个值放一起,基本覆盖了导航规划要看的东西。需要把这些原始数字再做加减换算时,我会顺手开一个科学计算器来核对中间步骤。
想自己跑一遍这个例子,直接用经纬度距离计算器填入上面四个坐标即可,分享链接会把坐标写进网址,对方打开就是同一对点。
地图测距最容易踩的三个坑
我刚开始拿经纬度算距离时,结果总是对不上,后来发现错的都不是公式,而是输入。这里把最常见的三个坑列出来。
第一,把纬度和经度填反。纬度范围是 -90 到 90 且写在前面,经度范围是 -180 到 180。把 116 当纬度填进去不可能成立,工具会拦下;但要是两栏都填了像 40 这种合法值,它会悄悄指到错误位置而不报错。所以养成习惯,先确认纬度再填经度。
第二,把度分秒和十进制度混用。这类工具要的是十进制度,北纬 40 度 42 分应当写成 40.7,而不是 40.42。把"分"直接接在小数点后面,位置会大幅偏移,距离能差出几百公里。
第三,忘了给西经和南纬加负号。西经为负,南纬为负。洛杉矶经度漏掉负号,写成 118.24 而不是 -118.24,点就被放到了错误的半球,距离随之暴涨。这三个坑里,坐标顺序和正负号最隐蔽,因为它们不会报错,只会给你一个看着像模像样的错误答案。
跨赤道和跨日界线的特殊情况
还有两种边界情况值得单独说。跨赤道其实很普通,南纬 1 度到北纬 1 度约 222 公里,Haversine 直接算就对。真正的难点是 180 度经线附近的日界线:东经 179 度到西经 179 度,实际只差 2 度经度,在赤道约 222 公里,而不是绕地球大半圈。靠谱的公式会自动取短的那一边,中点的经度也会归一化回 -180 到 180 区间。如果你看到跨日界线的距离突然变成几万公里,那基本可以断定用的是没处理好绕回问题的实现。
该选哪种距离
回到最初的问题,选平面欧氏距离还是大圆距离,只看一件事:你的坐标活在平面里还是地球表面上。设计稿、像素图、游戏地图这类纯平面坐标,用 √((x2-x1)²+(y2-y1)²) 的勾股距离即可;一旦是带经纬度的地理点,就得上 Haversine 大圆距离。Haversine 相对 Vincenty 这类椭球模型,最坏情况下约有 0.3 到 0.5 个百分点的误差,对出行规划、地理藏宝和一般地图完全够用;只有测绘级精度才需要换椭球算法。把这条记牢,坐标距离基本不会再算偏。
Made by Toolora · Updated 2026-06-13