Расчет изменения подшипника по широте / долготе - PullRequest
0 голосов
/ 15 января 2020

У меня под рукой есть набор данных журналов GPS, содержащих также скорости GPS. Вот как выглядит набор данных:

 id   |  gpstime   |    lat     |    lon     |  speed  
--------+------------+------------+------------+---------
 157934 | 1530099776 | 41.1825026 | -8.5996864 | 3.40901
 157934 | 1530099777 | 41.1825114 |  -8.599722 | 3.43062
 157934 | 1530099778 | 41.1825233 | -8.5997594 | 3.45739
 157934 | 1530099779 | 41.1825374 | -8.5997959 | 3.40025
 157934 | 1530099780 | 41.1825519 | -8.5998337 | 3.41673
(5 rows)

Теперь я хочу вычислить изменение bearing для каждой точки относительно истинного севера.

Но у меня есть следующие вопросы: пока не нашел ответов на:

  1. На основании моего прочтения я сталкиваюсь с формулой (как в этом ответе):

    Bearing = atan(y,x)

, где x и y - величины

y = sin (B lon -A lon ) * cosB lat

x = cosA lat * sinB lat -sinA lat * cosB lat * cos (B lon -A lon )

соответственно для точек A и B. Затем из другого источника, формула здесь , формула написана:

Bearing = atan2(y,x)

Так что я запутался, какую формулу я должен использовать?

lat и lon следует преобразовать из градусов в радианы, прежде чем переходить к величинам x и y. Учитывая, что значения lon в моем наборе данных являются отрицательными, я должен взять абсолютное значение каждого?

1 Ответ

0 голосов
/ 18 января 2020

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

Разница широты / долготы составляет ок.

Δlat = 111 км * (широта 1 - широта 2 )

Δlon = 111 км * cos (широта) * (долгота *) 1012 * 1 - lon 2 )

Таким образом, подшипник будет

подшипник = atan (Δlon / Δlat) * 180 / π

подшипник = atan (cos (широта) * (долгота 1 - долгота 2 ) / (широта 1 - широта 2)) * 180 / ACOS (-1)

для лата используйте лат 1 или лат 2 или середину, если хотите.

lat = (lat 1 + lat 2 ) / 2 * π / 180 = (lat 1 + lat 2 ) / 2 * ACOS (-1) / 180

Рассмотрим Δlat или Δlat, которые могут быть 0

...