AsTrk2GpxConverter – конвертер GPS-треков (из .trk в .gpx) навигационной программы Автоспутник v3.

Конвертер TRK треков от навигационной программы Автоспутник v3 в формат XML GPX (используемый большинством картографического софта, в частности OziExplorer и GoogleEarth). Поскольку у Автоспутника формат TRK свой собственный, и многочисленные зарубежные конвертеры открывающие *.trk – его не признают, а онлайновый конвертер на сайте Автоспутника тормозной и глючный (по состоянию на 2010.06) – пришлось исследовать формат и написать собственный конвертер…

Скриншот AsTrk2GpxConverter

В заполнении полей XML могут быть ошибки, спецификации XML GPX то я читал, но реальных примеров использования всех полей не нашёл, известный мне софт импортирует из GPX только поле «Описание трека». Так что проверить адекватность всех полей нечем (да и они вобщем не нужны, заполнять их не обязательно).


Описание формата TRK от Автоспутника v3 (вычислено самостоятельно, так что могут быть разные непредвиденные ошибки!). В начале файла:
+0 – bytes 0xBAh 0xADh 0x03h 0x00h – видимо опознавательная сигнатура – у меня на всех треках такое.
+4 – dword – кол-во точек (причём на 1 большее), однако пользы от него нет, по причине наличия всякого мусора временами. Кол-во точек видимо надо просто подсчитывать по мере парсинга файла.

Далее 9 байт – нули. С +0x11h начинаются блоки по 0x10h байт – на каждую точку:

+0 – dword – latitude. Десятичные градусы, 6 знаков после точки.
+4 – dword – longtitude.
+8 – word – неизвестно – там разные цифры постоянно (но в целом значения соседние между собой, не рандомные). На высоту или скорость не похоже.
+0xA – dword – кол-во секунд с 1970-01-01 00:00:00, время в UTC всегда
+0xE – word – неизвестно – там всегда либо 0x0001 либо 0x0003 (похоже, битовые флаги), при потере сигнала – бывает 0x0000.

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

Ещё иногда встречаются кривые данные – некоторые GPS-чипы (например у тошибы) после потери сигнала продолжают ежесекундно выдавать координаты но координаты все одинаковы и время у всех тоже одинаковое (старое). Автоспутник однако такой мусор пишет в TRK-лог, и если его не вычистить – то например у OziExplorer трек неадекватный. А ещё после появления хоть одного спутника (ещё до фиксации) – тоже идут старые координаты со старым временем. Вобщем надо вырезать те точки которые идут подряд с одинаковым временем (особенно с разделением сегментов в середине их потока – Автоспутник пишет этот мусор и до и даже после разделения сегментов).

Скачать “AsTrk2GpxConverter_v11.rar” – 9,11 КБВерсия 1.1, 2016-02-18 20:06