经纬度距离

两点经纬度→直线/飞行距离

410 次访问

两点经纬度 · 距离 + 方位 + 中点

A 点 起点

B 点 终点

总览(输入坐标视为 WGS-84 / GPS 原始)

SVG 示意图(粗略示意,非真实测绘地图)

A 点 B 点 半径包围盒(区块 4) 虚线 = 大圆航线(球面最短路径)

坐标系互转 · WGS-84 / GCJ-02 / BD-09

中国大陆地图存在三套坐标系:WGS-84 是 GPS / Google Earth / OSM 原始标准;GCJ-02(火星坐标)由国测局加密,高德 / 腾讯 / Google 中国版使用;BD-09 是百度在 GCJ-02 基础上再次加密。下表以 A 点输入为 WGS-84 为基准,全向换算

坐标系经纬度(十进制度)常用场景

格式互转(基于 A 点 WGS-84)

格式纬度 / 经度说明

目标点推算 · 给定起点 / 方位 / 距离 求终点

航海 / 航空 / 测绘场景常用。从 A 点出发,沿 真方位角(北为 0°,顺时针)走指定距离,球面推算落点

0=正北 · 90=正东 · 180=正南 · 270=正西
沿球面大圆走的距离
纬度, 经度(WGS-84)

半径包围盒 + UTM 区段

电商 / LBS"附近 N 公里"查询场景:先在数据库用矩形 bounding box 粗筛,再用 Haversine 精算

以 A 点为中心向外辐射
圆面积 π·r²

边界经纬度(数据库 WHERE 子句直接可用)

方向坐标用法

UTM 区段(通用横墨卡托)

项目说明

批量坐标转换

粘贴多行坐标(每行一个,lat,lonlat lon),一次性批量转换。最多 200 行

(输入后自动显示)

常用城市坐标库(点击填入 A 点)

算法说明

Haversine 距离
a = sin²(Δφ/2) + cos(φ₁)·cos(φ₂)·sin²(Δλ/2)d = 2R·arcsin(√a)。 取 R = 6371.0088 km(WGS-84 平均半径)。短距精度优于 0.3%,万公里以内可信
真方位角
θ = atan2(sin(Δλ)·cos(φ₂), cos(φ₁)·sin(φ₂) − sin(φ₁)·cos(φ₂)·cos(Δλ))。 结果归一到 0-360°,0=正北、顺时针
目标点推算
正向公式 (Direct Vincenty 简化球面版):φ₂ = asin(sin(φ₁)cos(δ) + cos(φ₁)sin(δ)cos(θ))λ₂ = λ₁ + atan2(sin(θ)sin(δ)cos(φ₁), cos(δ) − sin(φ₁)sin(φ₂)),其中 δ = d/R
WGS ↔ GCJ-02
国测局加密:基于 Krasovsky 1940 椭球的偏移函数(a = 6378245, ee = 0.00669342),对中国境外坐标不偏移; 反向用迭代逼近,3 次迭代精度可达 1e-9
GCJ-02 ↔ BD-09
百度在 GCJ-02 之上做极坐标旋转:z = √(x² + y²) + 2e-5·sin(y·π·3000/180)θ = atan2(y, x) + 3e-6·cos(x·π·3000/180);反向用同算式取负偏置
UTM 转换
将地球分为 60 个 6° 经度带,单带内用横墨卡托投影。 zone = floor((lon + 180) / 6) + 1。中国跨 zone 43-53;纬度带字母 C-X(不含 I/O)
DMS ↔ DD
十进制度 D ↔ 度分秒 D° M' S"D = d + m/60 + s/3600;反向 d = ⌊D⌋, m = ⌊(D−d)·60⌋, s = ((D−d)·60−m)·60。 南纬 / 西经为负
坐标系选用建议
· GPS 设备 / 国际地图(Google Earth / OSM / Mapbox 国际版)→ 用 WGS-84
· 高德 / 腾讯 / Google 中国版 / 北斗 → 用 GCJ-02
· 百度地图 / 百度 API → 用 BD-09
把 GPS 原始坐标直接画到高德 / 百度地图会偏移 100-700 米

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

✈️

飞行里程估算

航司常旅客计划中,奖励机票所需里程通常基于两机场间的大圆距离(Great Circle Distance)。乘务员或旅客输入出发地与目的地机场的经纬度坐标,即可快速算出航线直线距离,用于预估所需积分或比较不同航司的兑换标准。避免手动查表或依赖第三方地图的繁琐操作。

🚢

海上救援坐标

搜救协调中心收到遇险船只的卫星定位(经纬度)后,需快速计算其与最近救援站或过往商船的距离,以决策派哪艘船、需多久抵达。本工具输入两个坐标点,秒出直线距离,辅助判断救援优先级与航行时间,无需打开专业海图软件。

🌍

户外徒步规划

徒步爱好者规划穿越路线时,用 GPS 记录关键点经纬度,需估算营地到水源、垭口到下撤点的直线距离。本工具输入两组坐标,直接给出公里数,帮助评估每日行进难度、判断是否需要携带更多补给。比在地图上画线量距更精确、更快捷。

📡

基站覆盖半径

通信工程师在选址或优化网络时,需测量基站经纬度与目标覆盖区域边缘的距离,以验证信号覆盖半径是否达标。本工具输入基站坐标与测试点坐标,立即输出直线距离,辅助判断是否需要调整天线角度或新增站点。无需加载 GIS 系统。

🐾

野生动物追踪

动物学家通过 GPS 项圈获取迁徙鸟类或大型哺乳动物的每日坐标,需计算连续两天位置间的直线移动距离,以分析活动范围与迁徙路径。本工具输入两次定位的经纬度,快速得到位移数据,支撑生态行为研究,省去手动计算或依赖专业统计软件。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A (Great Circle Mapper)传统方法 (地图 + 公式)
数据隐私纯浏览器计算,坐标数据不上传服务器坐标数据需发送至服务器处理数据完全本地,无网络传输
处理速度毫秒级响应,无网络延迟1-3 秒(取决于服务器负载)数分钟至数小时(手动计算)
离线可用完全离线,加载后断网可用必须联网完全离线
坐标格式接受度/分/秒、十进制度、度/分多种格式主要接受十进制度无限制,但需手动转换
批量处理单次两点计算支持多条航线叠加显示可手动批量计算,但效率极低
结果展示仅显示距离数值在地图上绘制大圆航线路径仅有数字结果
学习成本零学习成本,输入即出结果需理解地图交互和坐标格式需掌握球面三角学公式

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
39.9042, 116.4074 | 31.2304, 121.47371068.32 km典型场景:北京到上海的直线距离
40.7128, -74.0060 | 34.0522, -118.24373944.23 km典型场景:纽约到洛杉矶的跨洲距离
0, 0 | 0, 00.00 km边界 case:相同坐标(赤道与本初子午线交点)
90, 0 | -90, 020015.09 km边界 case:北极点到南极点的最大经线距离
39.9042, 116.4074 | 39.9042, 116.40740.00 km易错 case:用户复制了同一组坐标
39.9042, 116.4074 | 39.9042, 116.40740.00 km易错 case:用户复制了同一组坐标
39.9042, 116.4074 | 39.9042, 116.40740.00 km易错 case:用户复制了同一组坐标

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 经纬度顺序搞反(纬度/经度颠倒)

错误
116.397, 39.907
修复
39.907, 116.397

工具严格按「纬度,经度」顺序输入(先北后东)。把北京坐标写成(116.397, 39.907)会被当作南纬116°东经40°,结果完全错误。

2. 使用度分秒格式而非十进制

错误
39°54′26″N, 116°23′29″E
修复
39.9072, 116.3914

工具只接受十进制小数(如 39.9072)。度分秒需先换算:度+分/60+秒/3600。直接粘贴度分秒字符串会导致解析失败或结果异常。

3. 经度/纬度数值超出合法范围

错误
纬度: 100, 经度: 200
修复
纬度: 39.9, 经度: 116.4

纬度合法范围 -90~90,经度 -180~180。超出范围的值会被工具拒绝或产生错误结果。常见于误输入了带度分秒的数值或复制了错误数据。

4. 用逗号以外的分隔符(空格/分号/竖线)

错误
39.907 116.397
修复
39.907, 116.397

工具要求两点坐标之间用英文逗号分隔。空格、分号、竖线等分隔符会被当作单个非法坐标,导致解析失败。

5. 误把海拔高度当作经纬度输入

错误
39.907, 116.397, 50
修复
39.907, 116.397

工具只计算两点间的大圆距离(球面直线),不涉及海拔。输入三个数值会导致第三个值被忽略或解析异常。

6. 混淆地球椭球模型与球面模型结果

错误
用 Haversine 公式的结果质疑工具精度
修复
理解工具默认使用球面模型(Haversine),与 WGS84 椭球模型(Vincenty)存在 0.1%-0.5% 的差异

工具默认采用球面三角法(Haversine),适用于大多数场景。若需高精度(如测绘),应使用 Vincenty 算法或地理数据库,两者结果在长距离上可能有数公里差异。

7. 把城市名当作坐标输入

错误
北京, 上海
修复
39.907, 116.397

工具是纯坐标计算器,不包含地理编码功能。输入城市名不会自动解析为坐标,必须提前查好目标点的十进制经纬度。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

d = 2 × R × arcsin(√(sin²(Δφ/2) + cos(φ1) × cos(φ2) × sin²(Δλ/2)))

变量说明

  • d — 两点间大圆距离(km)
  • R — 地球平均半径,取 6371 km
  • φ1, φ2 — 起点、终点的纬度(弧度)
  • Δφ — 纬度差(φ2 - φ1,弧度)
  • Δλ — 经度差(λ2 - λ1,弧度)

示例

北京(39.9042°N, 116.4074°E)→ 上海(31.2304°N, 121.4737°E)。转弧度:φ1=0.6965, φ2=0.5452, Δφ=-0.1513, Δλ=0.0884。代入公式:sin²(Δφ/2)=0.00572, cos(φ1)×cos(φ2)×sin²(Δλ/2)=0.766×0.855×0.00195=0.00128,和=0.00700,开方=0.0837,arcsin=0.0838,d=2×6371×0.0838≈1068 km。

适用范围

基于 Haversine 公式(1805 年首次提出),适用于球体模型下任意两点的大圆距离计算。误差来源:地球实际为椭球体,赤道与极地半径差约 21 km,长距离(>5000 km)误差可达 0.5%;短距离(<100 km)误差可忽略。不适用于地下/高空三维坐标计算。

原理图

输入坐标纬度1 / 经度1纬度2 / 经度2Haversine 公式浏览器内 JavaScript 计算无需网络请求显示距离公里 / 英里直线距离坐标格式验证度 / 度分秒地球模型计算平均半径 6371 km结果精度提示±0.5% 误差
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import math

# 地球平均半径(千米)
R = 6371.0

def haversine(lat1, lon1, lat2, lon2):
    # 将角度转换为弧度
    phi1, phi2 = math.radians(lat1), math.radians(lat2)
    dphi = math.radians(lat2 - lat1)
    dlambda = math.radians(lon2 - lon1)

    a = math.sin(dphi / 2) ** 2 + math.cos(phi1) * math.cos(phi2) * math.sin(dlambda / 2) ** 2
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))

    return R * c

# 示例:北京(39.9042, 116.4074)→ 上海(31.2304, 121.4737)
dist = haversine(39.9042, 116.4074, 31.2304, 121.4737)
print(f"{dist:.2f} km")  # 约 1067.88 km
package main

import (
	"fmt"
	"math"
)

const R = 6371.0 // 地球半径(千米)

func haversine(lat1, lon1, lat2, lon2 float64) float64 {
	phi1 := lat1 * math.Pi / 180
	phi2 := lat2 * math.Pi / 180
	dphi := (lat2 - lat1) * math.Pi / 180
	dlambda := (lon2 - lon1) * math.Pi / 180

	a := math.Sin(dphi/2)*math.Sin(dphi/2) +
		math.Cos(phi1)*math.Cos(phi2)*
			math.Sin(dlambda/2)*math.Sin(dlambda/2)
	c := 2 * math.Atan2(math.Sqrt(a), math.Sqrt(1-a))

	return R * c
}

func main() {
	// 北京 → 上海
	dist := haversine(39.9042, 116.4074, 31.2304, 121.4737)
	fmt.Printf("%.2f km\n", dist) // 约 1067.88 km
}
const R = 6371; // 地球半径(千米)

function haversine(lat1, lon1, lat2, lon2) {
  const toRad = (deg) => (deg * Math.PI) / 180;

  const phi1 = toRad(lat1);
  const phi2 = toRad(lat2);
  const dphi = toRad(lat2 - lat1);
  const dlambda = toRad(lon2 - lon1);

  const a =
    Math.sin(dphi / 2) ** 2 +
    Math.cos(phi1) * Math.cos(phi2) * Math.sin(dlambda / 2) ** 2;
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

  return R * c;
}

// 北京 → 上海
const dist = haversine(39.9042, 116.4074, 31.2304, 121.4737);
console.log(`${dist.toFixed(2)} km`); // 约 1067.88 km

常见问题

8 个高频疑问

怎么用这个工具计算两个地点的直线距离?
在输入框中分别填入两个地点的经纬度坐标。格式支持十进制度数(如 39.9042)或度分秒(如 39°54'15"N)。填写时注意纬度在前(-90 到 90),经度在后(-180 到 180),北纬东经为正,南纬西经为负。点击计算后,结果会直接显示两点之间的球面最短距离(大圆距离),单位默认千米。如果输入无效坐标(如纬度 100),工具会提示格式错误。
算出来的距离和地图导航上的距离差很多,是不是不准?
这是正常的。本工具计算的是两点间的直线/飞行距离(大圆距离),即地球表面最短弧线长度,而地图导航给出的是沿道路、桥梁的实际行驶距离。例如北京到上海直线约 1080 公里,但驾车实际约 1200 公里。如果对比的是 Google Earth 或其它地图 App 的「测距」工具,结果应一致(均基于相同球面模型)。若有明显偏差,请检查输入的经纬度坐标是否准确。
输入的经纬度坐标需要带小数点后几位?
建议保留到小数点后 4 位,对应约 11 米的精度。保留 6 位可达米级精度(约 1.1 米),保留 2 位则误差约 1.1 公里。本工具内部使用 Haversine 公式计算,输入坐标的精度直接决定输出结果精度。例如输入 39.9042,116.4074(北京天安门)和 31.2304,121.4737(上海人民广场),4 位小数算出的距离已可精确到 100 米以内。如果只需要粗略估算,2-3 位小数够用。
为什么输入了经纬度但点击计算没反应?
常见原因:1)格式不对——经纬度之间必须用逗号或空格分隔,不能写在一串数字里;2)数值超界——纬度必须在 -90 到 90 之间,经度在 -180 到 180 之间;3)使用了中文标点(如逗号用了中文全角)。检查输入框旁边的示例格式,或尝试粘贴一个已知正确的坐标对(如 39.9,116.4)。如果仍然无反应,刷新页面重试,极少数情况可能是浏览器 JS 缓存问题。
这个工具会保存我输入的坐标数据吗?
不会。所有计算完全在浏览器本地执行,不向任何服务器发送数据。可以打开浏览器开发者工具(F12)的网络面板,点击计算按钮后确认没有任何 HTTP 请求发出。关闭页面后,输入的数据和计算结果立即从内存清除。如果对隐私敏感,可以断网后再使用,工具依然能正常计算。
用这个工具算飞机航程够用吗?和航空公司给的飞行距离一样吗?
基本一致。本工具计算的是球面大圆距离,航空公司规划航线时也使用相同原理(但实际航路会因空域限制、风向等因素略有调整)。例如北京首都机场(40.080,116.585)到上海浦东机场(31.144,121.808),本工具算出的约 1085 公里,与航司公布的飞行距离偏差通常在 1% 以内。如果用于精确燃油规划或空管用途,建议使用 WGS84 椭球模型(如 Vincenty 公式),本工具默认用球面模型,误差约 0.5%。
支持批量计算多个点之间的距离吗?
当前版本一次只计算两点之间的距离。如果需要批量计算(如多点连线总长、两两配对),可以逐对计算后手动累加,或复制结果到 Excel 等工具中处理。未来版本不排除增加批量功能。如果只是算几十个点,手动操作也很快——每次计算只需几毫秒,结果即时显示。
为什么有的在线距离工具算出来的结果和这个不一样?
差异通常来自三个方面:1)地球模型不同——本工具使用球面 Haversine 公式,部分工具用更精确的椭球模型(如 Vincenty),后者在长距离(>2000 公里)上可能差几十米到几百米;2)坐标系统不同——部分工具使用 WGS84 坐标,少数使用 GCJ-02(国测局加密坐标),后者与真实经纬度偏移约 100-700 米;3)单位换算误差——有些工具默认英里或海里。建议确认对比工具使用的模型和单位,本工具结果与多数国际通用计算器(如 Movable Type 脚本)一致。
选择 打开 +新窗口 esc关闭