Измерение расстояния по координатам GPS - PullRequest
6 голосов
/ 27 мая 2011

Как рассчитать расстояние между двумя точками с помощью GPS-координат?

Ответы [ 2 ]

10 голосов
/ 27 мая 2011

Вы должны использовать формулу haversine: Формула haversine:

R = радиус Земли (средний радиус = 6 371 км)long2 - long1

a = sin² (Δlat / 2) + cos (lat1) .cos (lat2) .sin² (Δlong / 2)

c = 2.atan2 (√a, √(1-a))

d = Rc

Где d - расстояние (ваше решение), и все углы должны быть в радианах

Найдите библиотеку haversine, ив С:

#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;
}
3 голосов
/ 27 мая 2011

http://en.wikipedia.org/wiki/Great-circle_distance

(теорема Пифагора будет недостаточной из-за сферичности Земли)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...