计算经纬度点之间的距离

本文介绍了计算球面上两点(经纬度)之间距离的方法,主要关注Haversine公式,因为它在短距离计算中避免了余弦函数导致的舍入误差。通过Haversine公式,可以详细推导出从经纬度坐标计算距离的步骤,并给出了计算函数的实现。

球面上任意两点之间的距离计算公式可以参考维基百科上的下述文章。

值得一提的是,维基百科推荐使用Haversine公式,理由是Great-circle distance公式用到了大量余弦函数, 而两点间距离很短时(比如地球表面上相距几百米的两点),余弦函数会得出0.999...的结果, 会导致较大的舍入误差。而Haversine公式采用了正弦函数,即使距离很小,也能保持足够的有效数字。 以前采用三角函数表计算时的确会有这个问题,但经过实际验证,采用计算机来计算时,两个公式的区别不大。 稳妥起见,这里还是采用Haversine公式。

 

其中

 

  • R为地球半径,可取平均值 6371km;
  • φ1, φ2 表示两点的纬度;
  • Δλ 表示两点经度的差值。

根据2个经纬度坐标,距离计算函数

下面就是计算球面间两点(lat1, lon1) - (lat2, lon2)之间距离的函数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HarvenSin
{
    class Program
    {
        /// <summary>
        /// 根据经纬度,计算2个点之间的距离。
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值