Конвертировать данные GPS Cello-CANiQ - PullRequest
0 голосов
/ 10 сентября 2018

Я получаю данные от GPS-трекера.
Документация гласит:
Таблица с выравниванием байтов:

[1] -> System Code, byte 1 – ASCII "M"
[2] -> System Code, byte 2 – ASCII "C"
[3] -> System Code, byte 3 – ASCII "G"
[4] -> System Code, byte 4 – ASCII "P"
...
[45] -> Longitude
[46] -> Longitude
[47] -> Longitude
[48] -> Longitude
[49] -> Latitude
[50] -> Latitude
[51] -> Latitude
[52] -> Latitude
...

У меня есть следующие (шестнадцатеричные) данные:

...
[45] -> 09
[46] -> 36
[47] -> 4b
[48] -> f8

[49] -> a7
[50] -> 70
[51] -> 7b
[52] -> 00
...

Долгота, Широта Долгота и широта координаты текущей позиции исправить. Обе координаты отправляются как 32-разрядные целые числа со знаком, представляющие координаты в разрешении 10 -8 радиан. Возможный значения от -Π до + Π для долготы или от -Π / 2 до + Π / 2 для широты. Координаты относятся к WGS-84 наносит на карту данные и эллипсоид.

Как я могу преобразовать это в координаты вокруг долготы ~ -74, широты ~ 4?

1 Ответ

0 голосов
/ 11 сентября 2018

Я могу основать свой ответ только на том, что вы написали выше.

То, что у вас есть два 32-битных целых числа, где "1" представляет 10e-8 рад.

Так что вы можетеdo умножить на 1e-7, чтобы получить радианы.Чтобы преобразовать в градусы (которые обычно используются для представления координат WGS84), умножьте на 180 / pi.

Примерно так:

const oneRadMultiplier = 1e-7 * 180 / pi;

latitudeDeg  = 0x09364bf8 * oneRadMultiplier; 
longitudeDeg = 0xa7707b00 * oneRadMultiplier; 

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

...