Конвертер 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 трек неадекватный. А ещё после появления хоть одного спутника (ещё до фиксации) — тоже идут старые координаты со старым временем. Вобщем надо вырезать те точки которые идут подряд с одинаковым временем (особенно с разделением сегментов в середине их потока — Автоспутник пишет этот мусор и до и даже после разделения сегментов).
Скачать “AsTrk2GpxConverter_v11.rar” – 9,11 КБВерсия 1.1, 2016-02-18 20:06