经纬度距离
两点经纬度→直线/飞行距离
坐标系互转 · 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°,顺时针)走指定距离,球面推算落点
半径包围盒 + UTM 区段
电商 / LBS"附近 N 公里"查询场景:先在数据库用矩形 bounding box 粗筛,再用 Haversine 精算
边界经纬度(数据库 WHERE 子句直接可用)
| 方向 | 坐标 | 用法 |
|---|
UTM 区段(通用横墨卡托)
| 项目 | 值 | 说明 |
|---|
批量坐标转换
粘贴多行坐标(每行一个,lat,lon 或 lat lon),一次性批量转换。最多 200 行
常用城市坐标库(点击填入 A 点)
算法说明
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=正北、顺时针φ₂ = asin(sin(φ₁)cos(δ) + cos(φ₁)sin(δ)cos(θ));
λ₂ = λ₁ + atan2(sin(θ)sin(δ)cos(φ₁), cos(δ) − sin(φ₁)sin(φ₂)),其中 δ = d/Ra = 6378245, ee = 0.00669342),对中国境外坐标不偏移;
反向用迭代逼近,3 次迭代精度可达 1e-9z = √(x² + y²) + 2e-5·sin(y·π·3000/180);
θ = atan2(y, x) + 3e-6·cos(x·π·3000/180);反向用同算式取负偏置D ↔ 度分秒 D° M' S":
D = d + m/60 + s/3600;反向 d = ⌊D⌋, m = ⌊(D−d)·60⌋, s = ((D−d)·60−m)·60。
南纬 / 西经为负· 高德 / 腾讯 / 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.4737 | 1068.32 km | 典型场景:北京到上海的直线距离 |
| 40.7128, -74.0060 | 34.0522, -118.2437 | 3944.23 km | 典型场景:纽约到洛杉矶的跨洲距离 |
| 0, 0 | 0, 0 | 0.00 km | 边界 case:相同坐标(赤道与本初子午线交点) |
| 90, 0 | -90, 0 | 20015.09 km | 边界 case:北极点到南极点的最大经线距离 |
| 39.9042, 116.4074 | 39.9042, 116.4074 | 0.00 km | 易错 case:用户复制了同一组坐标 |
| 39.9042, 116.4074 | 39.9042, 116.4074 | 0.00 km | 易错 case:用户复制了同一组坐标 |
| 39.9042, 116.4074 | 39.9042, 116.4074 | 0.00 km | 易错 case:用户复制了同一组坐标 |
常见错误对照7 个常踩的坑 · 错误 → 修复
1. 经纬度顺序搞反(纬度/经度颠倒)
116.397, 39.90739.907, 116.397工具严格按「纬度,经度」顺序输入(先北后东)。把北京坐标写成(116.397, 39.907)会被当作南纬116°东经40°,结果完全错误。
2. 使用度分秒格式而非十进制
39°54′26″N, 116°23′29″E39.9072, 116.3914工具只接受十进制小数(如 39.9072)。度分秒需先换算:度+分/60+秒/3600。直接粘贴度分秒字符串会导致解析失败或结果异常。
3. 经度/纬度数值超出合法范围
纬度: 100, 经度: 200纬度: 39.9, 经度: 116.4纬度合法范围 -90~90,经度 -180~180。超出范围的值会被工具拒绝或产生错误结果。常见于误输入了带度分秒的数值或复制了错误数据。
4. 用逗号以外的分隔符(空格/分号/竖线)
39.907 116.39739.907, 116.397工具要求两点坐标之间用英文逗号分隔。空格、分号、竖线等分隔符会被当作单个非法坐标,导致解析失败。
5. 误把海拔高度当作经纬度输入
39.907, 116.397, 5039.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)误差可忽略。不适用于地下/高空三维坐标计算。
原理图
开发者集成
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 kmpackage 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 个高频疑问