Расчет кратчайшего расстояния с использованием координат GPS - PullRequest
0 голосов
/ 16 декабря 2011

Я хочу знать формулу расчета с помощью GPS-координат для расчета кратчайшего расстояния с точностью> = 5 метров.

Я проверил формулу Хаверсайна и формулу расстояния Великого круга.Но они хороши для расчетов на большие расстояния.Если говорить о точности в mtrs, какую формулу следует использовать?

Ответы [ 2 ]

5 голосов
/ 16 декабря 2011

Формулы Винсенти точны с точностью до миллиметра в приближении WGS84 к форме Земли (что, очевидно, будет чрезмерным, поскольку Земля не согласна с WGS84 в этом отношении).

AНесколько лет назад я реализовал некоторые алгоритмы для вычисления расстояния в Javascript .Не стесняйтесь спрашивать, есть ли у вас какие-либо вопросы об алгоритмах, поскольку в коде отсутствуют комментарии.

Одна потенциальная проблема заключается в том, что эти алгоритмы работают на уровне моря и не учитывают различия в высоте.Лучше было бы преобразовать в геоцентрические декартовы координаты и использовать вместо этого прямолинейное расстояние ...

Прямое выражение для линейного расстояния d точекс долготой φ, широтой λ и высотой h задается как

k = √(a²·cos²φ + b²·sin²φ)
r = (a²/k + h)·cosφ
z = (b²/k + h)·sinφ
d = √((z - z')² + r² + r'² - 2·r·r'·cos(λ - λ'))

со следующими значениями для параметров

a = 6378137m
b = (a·297.257223563)/298.257223563
2 голосов
/ 16 декабря 2011

Если (long0, lat0) - одна точка, а (long1, lat1) - другая:

Для небольших расстояний вы можете использовать:

x0 = long0 * r_earth * cos(lat0)
y0 = lat0  * r_earth
x1 = long1 * r_earth * cos(lat1)
y1 = lat1  * r_earth
dx = x0 - x1
dy = y0 - y1
d = sqrt(dx*dx + dy*dy)

long = долгота в радианах
lat = широта в радианах
r_earth = радиус Земли

Вы можете еще больше упростить эту формулу, выделив r_earth и / или предположив, что cos (lat0) ==соз (LAT1).

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