...или как случайно создать комбайн.
Однажды, в одной далёкой-далёкой галактике, прокатившись с трекером по незнакомым местам, я оказался один на один с кучей различных файлов с GPS данными. У меня был трек, были точки (waypoints) и, к некоторым из них, были привязаны фотографии.
"Надо импортировать всё это в Блокнот Картографа", - подумал я и сел за написание своего конвертера, благо, как раз начался отпуск. На всякий случай, чтобы было интереснее, писать стал на Питоне, с которым был совершенно не знаком.
По прошествии одной бессонной ночи появился консольный скрипт gpx2nmap, которому можно было скормить gpx файл меток с привязанными к ним фото и треками, а на выходе получить заветный json файл, который отдать НК для отображения. В процессе отладки скрипта обнаружилось, что на самом деле gpx файлы не очень дружат с внешними данными и для хранения таких данных в процессе переноса с устройства, лучше пользоваться форматом kmz, который, в свою очередь, есть просто zip-архив с упакованными внутрь фото и описанием в формате kml. Параллельно подумалось, что мало кому интересно разбираться в тонкостях установки модулей Питона в консоли и надо бы сделать настоящее приложение.
Сказано - сделано! Скрипт научился понимать оба формата и распаковывать фотографии из архива в папочку, которую можно перенести на Яндекс.Диск и появилось приложение с кнопочками, а я пошел отсыпаться за вторую бессонную ночь.
Вы можете резонно заметить, что делать заметки можно и без фоток, но ведь с ними интереснее. Да и часто так бывает, что проще сфотографировать знак, чем в приложении описывать откуда куда нельзя ехать. И в этот момент меня осенило. А зачем вообще трекер, если фотографии и так содержат GPX данные! Берём фотографии, отдаём их все приложению и оно экспортирует нужные нам данные во всё тот же json файл Блокнота.
В этот момент надо было бы остановиться, но поздно.
Сначала добавить импорт csv файлов. Мало ли откуда у меня может быть список координат, например, всех филиалов компании. Ок, сделано.
Потом подумалось, что иногда хочется данные собранные за несколько дней можно было объединить в один файл. Готово! Приложению можно отдать любую комбинацию файлов всех поддерживаемых форматов и оно сделает один выходной файл. И, на всякий случай, стало можно взять сами файлы блокнота json и тоже их объединить в один или добавить к каким-то другим данным.
К счастью, на этом я решил остановиться. Форматов данных много, но только с этими я реально имел дело. Для всего остального разнообразия gps данных есть GPSBabel.
А вот ещё хорошая идея - треки в Блокноте не имеют подписи, а иногда очень удобно отметить участок дороги в приложении и подписать его, к примеру, "тротуар". Данные то есть, но приложить некуда. Так почему бы не добавить посредине трека ещё одну метку с его названием. Теперь видно, как тот или иной трек называется.
На этом идеи иссякли, отпуск подходил к концу, но приложение было готово!
Да, ему далеко по красоте до Инстаграма, а мои познания Питона слишком скромны, но своё дело приложение делает. Тут ещё надо отметить, что сам я ни разу не видел, как оно выглядит под настоящим Windows. Всё собирается в Wine, а там внешний вид оставляет желать лучшего.
Tl;dr
Any2nmap конвертер - скачать на GitHub.
Понимает: gpx, kml, kmz, csv, jpg, json форматы. Можно одновременно выбрать любые комбинации для экспорта в один файл.
Импортирует: треки, точки (waypoints)
Экспортирует результат работы в любую указанную папку.
Если что-то не работает - жалуйтесь, присылайте примеры файлов, буду багфиксить.