Language: Русский English

AsTrk2GpxConverter v.1.1 (2016.02.18)

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

Скриншот

В заполнении полей 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 трек неадекватный. А ещё после появления хоть одного спутника (ещё до фиксации) - тоже идут старые координаты со старым временем. Вобщем надо вырезать те точки которые идут подряд с одинаковым временем (особенно с разделением сегментов в середине их потока - Автоспутник пишет этот мусор и до и даже после разделения сегментов).