计算两个GPS坐标的距离

原文地址为: 计算两个GPS坐标的距离

场景:已知两个GPS点的经纬度坐标信息。计算两点的距离。

1. 距离/纬度关系

  GPS: 22.514519,113.380301

  GPS: 22.511962,113.380301

距离: 284.6439379583341  

jl_wd=284.6439379583341/(22.51451-22.511962)

= 111712.69150641055729984301412873 (/)

2. 距离/经度关系

GPS: 22.514866, 113.388444

GPS: 22.514866, 113.379378

距离: 932.2997762326453

jl_jd =932.2997762326453/(113.388444-113.379378)

=102834.74258026089786013677476285(/)

3.勾股定理

 

勾股定理:a2+b2 =c2

 

 

看上图中已知道AB的坐标后,就可以求得A点与B点的纬度差值的绝对值

wd_c=|(N1,-N2)|

A点与B点的经度差值的绝对值

jd_c=|(E2-E1)|

知道了经度、纬度和距离的关系,又知道了A点与B点的经度差和纬度差,那么就可以求出b的长度和a的长度,ab求出来后就可以用直三角形的勾股定理求出c边的长度也就是A点也B点的距离。

b=wd_c*jl_wd

a=jd_c*jl_jd

c=(a2 +b2)

 

C#实现代码:

 

961ddebeb323a10fe0623af514929fc1.jpe 计算两点GPS坐标距离
    ///   <summary>
     
/// 计算两点GPS坐标的距离
     
///   </summary>
     
///   <param name="n1"> 第一点的纬度坐标 </param>
     
///   <param name="e1"> 第一点的经度坐标 </param>
     
///   <param name="n2"> 第二点的纬度坐标 </param>
     
///   <param name="e2"> 第二点的经度坐标 </param>
     
///   <returns></returns>
         public   static   double  Distance( double  n1,  double  e1,  double  n2,  double  e2)
        {
            
double  jl_jd  =   102834.74258026089786013677476285 ;
            
double  jl_wd  =   111712.69150641055729984301412873 ;
            
double  b  =  Math.Abs((e1  -  e2)  *  jl_jd);
            
double  a  =  Math.Abs((n1  -  n2)  *  jl_wd);
            
return  Math.Sqrt((a  *  a  +  b  *  b));

        }

 

 


转载请注明本文地址: 计算两个GPS坐标的距离
### 回答1: 在MATLAB中,可以使用以下函数计算两个GPS坐标之间的距离: ```matlab function distance = calculateDistance(lat1, lon1, lat2, lon2) R = 6371; % 地球半径,单位:千米 phi1 = deg2rad(lat1); phi2 = deg2rad(lat2); delta_phi = deg2rad(lat2 - lat1); delta_lambda = deg2rad(lon2 - lon1); a = sin(delta_phi/2)^2 + cos(phi1) * cos(phi2) * sin(delta_lambda/2)^2; c = 2 * atan2(sqrt(a), sqrt(1-a)); distance = R * c; % 距离结果,单位:千米 end ``` 上述代码为一个自定义的MATLAB函数,输入参数为两个GPS点的纬度和经度,输出为这两个点之间的距离(以千米为单位)。具体计算过程如下: 首先,将传入的纬度和经度转换为弧度,然后计算纬度差和经度差的弧度值。根据大圆距离公式,利用三角函数计算距离公式中的a值和c值,最后利用地球半径R将距离公式中的c值转换为实际距离。 使用该函数,可以如下计算两个GPS坐标之间的距离: ```matlab lat1 = 39.9083; % 第一个GPS点的纬度 lon1 = 116.3975; % 第一个GPS点的经度 lat2 = 31.2304; % 第二个GPS点的纬度 lon2 = 121.4737; % 第二个GPS点的经度 distance = calculateDistance(lat1, lon1, lat2, lon2); disp(['两个GPS坐标之间的距离为:', num2str(distance), '千米']); ``` 以上代码使用了一个简单的例子,将计算得到的距离打印出来。根据输入坐标的不同,可以反复调用`calculateDistance`函数来计算不同GPS坐标之间的距离。 ### 回答2: 在MATLAB中,计算两个GPS坐标之间的函数可以使用以下代码: ```matlab function distance = calculateDistance(lat1, lon1, lat2, lon2) % 将GPS坐标转换为弧度 lat1 = deg2rad(lat1); lon1 = deg2rad(lon1); lat2 = deg2rad(lat2); lon2 = deg2rad(lon2); % 计算两个坐标之间的距离 dlat = lat2 - lat1; dlon = lon2 - lon1; a = sin(dlat/2)^2 + cos(lat1) * cos(lat2) * sin(dlon/2)^2; c = 2 * atan2(sqrt(a), sqrt(1-a)); distance = 6371 * c; % 地球半径为6371千米 end ``` 上述代码定义了一个名为`calculateDistance`的函数,接受四个参数:`lat1`,`lon1`,`lat2`,`lon2`,分别代表两个GPS坐标的纬度和经度。这个函数会将这四个参数转换为弧度,然后利用Haversine公式计算两个坐标之间的距离。最后,将距离乘以地球半径6371千米,得到以千米为单位的最终距离。 ### 回答3: 要计算两个 GPS 坐标之间的距离和方位角,可以使用 MATLAB 中的 `geodistance` 和 `bearing` 函数。 `geodistance` 函数可以通过给定的经纬度坐标计算它们之间的大圆距离。函数的语法如下: ```matlab distance = geodistance(lat1, lon1, lat2, lon2) ``` 其中,`lat1` 和 `lon1` 是第一个 GPS 坐标的纬度和经度,`lat2` 和 `lon2` 是第二个 GPS 坐标的纬度和经度。`distance` 单位是米。 `bearing` 函数可以计算第一个 GPS 坐标指向第二个 GPS 坐标的方位角。函数的语法如下: ```matlab angle = bearing(lat1, lon1, lat2, lon2) ``` 其中,`lat1` 和 `lon1` 是第一个 GPS 坐标的纬度和经度,`lat2` 和 `lon2` 是第二个 GPS 坐标的纬度和经度。`angle` 的单位是度(°),以北方向为基准。 使用这两个函数,可以很方便地计算任意两个 GPS 坐标之间的距离和方位角。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值