#include <stdio.h>
#include <math.h>
#define EARTH_RADIUS 6378137 //m
#define PI 3.1415926
static double rad(double d) //deg2rad
{
return d * PI / 180.0;
}
struct gpsinfo
{
double latitude;
double longitude;
};
int main()
{
gpsinfo lastpos = {23.542879, 113.929671};
gpsinfo nowpos = {23.542879, 113.929671};
//gpsinfo nowpos = {22.543299, 114.926437};
double radLat1 = rad(lastpos.latitude);
double radLat2 = rad(nowpos.latitude);
double radLong1 = rad(lastpos.longitude);
double radLong2 = rad(nowpos.longitude);
double a = radLat1 - radLat2;
double b = radLong1 - radLong2;
double s = 2 * asin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
s = s * EARTH_RADIUS;
s = round(s * 10000) / 10000;
int distance = (int)s;
printf("calcDistance %f,%f => %f,%f distance %dm\n", lastpos.latitude, lastpos.longitude, nowpos.latitude, nowpos.longitude, distance);
return 0;
}
如何根据GPS坐标计算两地之间的距离
GPS距离计算算法
最新推荐文章于 2023-04-08 14:32:22 发布
本文介绍了一种使用经纬度计算两点间距离的算法,通过将经纬度转换为弧度,并运用球面三角公式计算地球表面上任意两点间的最短路径。代码实现了从给定的经纬度坐标计算两点间距离的功能。

1126

被折叠的 条评论
为什么被折叠?



