首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用GPS坐标进行测距

利用GPS坐标进行测距
EN

Stack Overflow用户
提问于 2011-05-27 14:52:55
回答 2查看 1K关注 0票数 5

如何利用GPS坐标计算两地之间的距离?

EN

回答 2

Stack Overflow用户

发布于 2011-05-27 14:57:29

你必须使用哈维正弦公式:哈维正弦公式:

R=地球半径(平均半径=6,371千米)

lat lat=Δ2−lat1

Δlong =long 2−long1

A=sin²(长整度/2)+ cos(lat1).cos(lat2).sin²(Δlong/2)

C= 2.atan2(√a,√(1−a))

D= R.c

其中d是距离(您的解决方案),所有角度都必须是弧度。

查找haversine库,在C:

代码语言:javascript
复制
#include <math.h>
#include "haversine.h"

#define d2r (M_PI / 180.0)

//calculate haversine distance for linear distance
double haversine_km(double lat1, double long1, double lat2, double long2)
{
    double dlong = (long2 - long1) * d2r;
    double dlat = (lat2 - lat1) * d2r;
    double a = pow(sin(dlat/2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong/2.0), 2);
    double c = 2 * atan2(sqrt(a), sqrt(1-a));
    double d = 6367 * c;

    return d;
}

double haversine_mi(double lat1, double long1, double lat2, double long2)
{
    double dlong = (long2 - long1) * d2r;
    double dlat = (lat2 - lat1) * d2r;
    double a = pow(sin(dlat/2.0), 2) + cos(lat1*d2r) * cos(lat2*d2r) * pow(sin(dlong/2.0), 2);
    double c = 2 * atan2(sqrt(a), sqrt(1-a));
    double d = 3956 * c; 

    return d;
}
票数 9
EN

Stack Overflow用户

发布于 2011-05-27 14:56:47

http://en.wikipedia.org/wiki/

(由于地球的球形性,毕达哥拉斯定理是不够的)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6148814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档