科数网
题库
在线学习
高中数学
高等数学
线性代数
概率统计
数学分析
复变函数
离散数学
实变函数
数论
群论
高中物理
词条搜索
科数
试题
高中数学
高数
线代
more
你好
游客,
登录
注册
在线学习
高中数学
第十三章:立体几何
已知经纬度求球面上两点间的距离
最后
更新:
2025-02-08 15:52
查看:
194
次
高考专区
考研专区
公式专区
刷题专区
词条搜索
已知经纬度求球面上两点间的距离
## Haversine公式 在[球体](https://kb.kmath.cn/kbase/detail.aspx?id=185) 一节介绍了可以利用圆的弧计算两点间距离,但是地区并不是正圆,而是一个椭圆,因此使用他计算会差生误差。 Haversine公式是一种在球面三角学中用于计算两个地理坐标(经纬度)之间最短距离(大圆距离)的数学公式。它考虑了地球的球形形状,因此能够比简单的欧几里得距离计算提供更准确的结果。这个公式考虑了地球的曲率,能够比较准确地计算两点间的最短距离(大圆距离)。 {width=200px} 假设我们有两点P和Q,它们的经纬度分别是(lat1, lon1)和(lat2, lon2)。以下是使用Haversine公式计算两点间距离的步骤: 1. **将经纬度转换为弧度**: 因为Haversine公式使用的是弧度制,所以我们需要将经纬度从度数转换为弧度。 $ \text{lat1\_rad} = \text{lat1} \times \frac{\pi}{180} $ $ \text{lon1\_rad} = \text{lon1} \times \frac{\pi}{180} $ $ \text{lat2\_rad} = \text{lat2} \times \frac{\pi}{180} $ $ \text{lon2\_rad} = \text{lon2} \times \frac{\pi}{180} $ 2. **计算两点间的角度差**: $ \Delta \text{lat} = \text{lat2\_rad} - \text{lat1\_rad} $ $ \Delta \text{lon} = \text{lon2\_rad} - \text{lon1\_rad} $ 3. **计算Haversine公式中的a**: $ a = \sin^2\left(\frac{\Delta \text{lat}}{2}\right) + \cos(\text{lat1\_rad}) \cdot \cos(\text{lat2\_rad}) \cdot \sin^2\left(\frac{\Delta \text{lon}}{2}\right) $ 4. **计算c**: $ c = 2 \cdot \text{atan2}\left(\sqrt{a}, \sqrt{1-a}\right) $ 5. **计算地球半径R**(通常使用平均值6371公里或3959英里): $ R = 6371 $ (单位:公里) 6. **计算两点间的距离d**: $ d = R \cdot c $ 这样,我们就得到了两点间的距离d。 ### 示例计算 假设点P的经纬度是(34.0522, -118.2437)(洛杉矶),点Q的经纬度是(40.7128, -74.0060)(纽约)。 1. 将经纬度转换为弧度: $ \text{lat1\_rad} = 34.0522 \times \frac{\pi}{180} \approx 0.5944 $ $ \text{lon1\_rad} = -118.2437 \times \frac{\pi}{180} \approx -2.0636 $ $ \text{lat2\_rad} = 40.7128 \times \frac{\pi}{180} \approx 0.7078 $ $ \text{lon2\_rad} = -74.0060 \times \frac{\pi}{180} \approx -1.2904 $ 2. 计算角度差: $ \Delta \text{lat} = 0.7078 - 0.5944 \approx 0.1134 $ $ \Delta \text{lon} = -1.2904 - (-2.0636) \approx 0.7732 $ 3. 计算a: $ a = \sin^2\left(\frac{0.1134}{2}\right) + \cos(0.5944) \cdot \cos(0.7078) \cdot \sin^2\left(\frac{0.7732}{2}\right) \approx 0.0087 $ 4. 计算c: $ c = 2 \cdot \text{atan2}\left(\sqrt{0.0087}, \sqrt{1-0.0087}\right) \approx 0.1763 $ 5. 使用地球半径R: $ R = 6371 $ 6. 计算距离d: $ d = 6371 \cdot 0.1763 \approx 1122 $ 公里 所以,洛杉矶和纽约之间的距离大约是1122公里。 ## 附近的人 在现代手机软件里,“附件的人”功能使用极其常见,这种基于位置基础服务LBS(Location-Based Services)软件,如何实现附近的人呢? 基本思路: 1.以 “我” 为中心,搜索附近的用户 2.以 “我” 当前的地理位置为准,计算出别人和 “我” 之间的距离 3.按 “我” 与别人距离的远近排序,筛选出离我最近的用户或者商店等 {width=500px} 只要知道“我的经纬度”和“他的经纬度” 就可以算出“我们”之间的距离,在求距离时,再给出一个限制(例如距离超过2km的“他”舍去),然后把距离从小到大排序,即可获得“附近的人” 但是,从Haversine公式可以看出,利用经纬度实时计算附近的人的**计算量非常大**,为此,人们想到的对地球进行切片。 我们把地球想象为一个西瓜,使用横向和竖向平面进行切割地球,这样地球会被切成一个个小块。然后给地球小块编号,0,1,2,3... {width=300px} 这样,原来地球上每一点的经纬度都会被映射为“地球小块”。 同时,在附近的人里,使用圆的外接正方形替代圆,这样,原本附近的人,要进行海量计算,经过“映射”后,要计算附近的人变成只要进行坐标上两点的加减即可,性能大幅度提升。 
上一篇:
空间的直线方程与球面方程
下一篇:
祖暅原理
在线学习仅为您提供最基础的数学知识,
开通会员
可以挑战海量
超难试题
, 分享本文到朋友圈,邀请更多朋友一起学习。
本文对您是否有用?
有用
(
0
)
无用
(
0
)
评论
更多
初中数学
高中数学
高中物理
高等数学
线性代数
概率论与数理统计
复变函数
离散数学
实变函数
数学分析
数论
群论
纠错
高考
考研
关于
赞助
留言
科数网是专业专业的数学网站。