На Ракете покатался, но фотографии не получились, потому что на устройстве мало места было. Ещё у него отказала загрузка, а сырые фотографии из памяти Android через PC загрузить не удалось, потому что в них не записываются EXIF-теги.
Снёс с карточки карту России для Garmin, и переставил клиент, должно получше пойти.
Придумал ещё одно полезное применение - можно снимать стритвью по разным подъездным железнодорожным путям за гаражами. У нас например собираются закрывать ветки Электрозавода, Ликёро-Водочного завода, Северной и Рублёвской водопроводных станций, а так же перестраивать всё МКМЖД. Хорошо бы по ним пройтись.
Я туда залил несколько тысяч фотографий из окна подмосковных электричек, снятых на цифромыльницу Nikon.
Так же serj_nickel загружает туда фотографии московских улиц, а ungzd - панорамы питерских кладбонов.
Зачем этот сложный процесс привязки фотографий к координатам скриптом на питоне, когда это же самое гораздо удобнее сделать в JOSM, вместе с подгонкой смещения GPS-трека?
Тема интересная, полезная и важная. За труды спасибо.
Есть пожелание (не обязательно к Surly). С учётом комментариев к переводу сделать аналогичный пост, но написанный с нуля - не содержащий замеченных в этом посте ошибок и с учётом отечественных особенностей - видеорегистраторы вместо GoPro, Windows вместо Ubuntu, отечественные дороги и карты вместо зарубежных (последнее - просто воспринимать удобнее).
Хотя вышеупомянутые Ubuntu и GoPro и не столь редкие вещи среди сообщества OSM, использование в инструкции более доступных вещей сделало бы пост актуальным для гораздо большей аудитории.
В идеале бы, конечно, сделать в посте подразделы, с указанием особенностей, если есть, для разного железа и операционных систем.
Так вроде сейчас нету программы, в которую можно было бы скормить видеофайл и GPS-трек, а она бы выдала все кадры с координатами, или точным временем съёмки?
На половину - registratorviewer - Позволяет подключить видео к треку и выгрузить кадр с GPS-данными. Пачку кадров выгрузить в автомате не умеет выгружать. Если сильно попросить автора - может быть и добавит, как добавил OSM подложки.
Преобразование видеофайла в пачку картинок сводит задачу к рассмотренной выше.
Единственный сходу неясный момент - как ставить отдельным картинкам правильное время. Сразу приходит в голову несложный способ - самостоятельно (не руками, конечно, а с помощью самописной программы/скрипта на любом языке, хоть bat/bash/powershell) пройтись по полученным файлам и в цикле, зная номер полученной картинки и время первой (последней), поставить каждому файлу картинки правильное время. Но, возможно, кто-то подскажет готовое решение этой мелкой задачи в каком-либо конвертере видео в набор картинок.
Можно сделать такой скрипт:
на входе видеофайл и обрезанный вручную gpx, который полностью совпадает по времени с видеофайлом с точностью до секунды. GPX вроде бы пишется с точностью до секунды.
Используем ffmpeg для операций с видео, и ogr2ogr/spatialite для операций с геометриями.
-Обрезаем конец видео до целого числа секунд, так что бы оно совпадало с количеством секунд в gpx-треке.
-Считаем количество кадров в видео.
-Загоняем gpx в spatialite
-вытаскиваем каждый кадр, и к нему точку из трека функцией Line_Interpolate_Point. Можно и не каждый, а например через 10.
-Записываем в jpg-файл кадра координаты, генерируем дату, время и другие EXIF-теги, необходимые для mapillary.
Вот только непонятно, как записывать время, если за одну секунду получается несколько картинок.
кроме того может потребоваться пропесочивание gpx, навител к примеру туда скидывает точки каждые сколько милисекунд, даже если координаты не изменились, в итоге файл пухлый, а толку ноль.
Использовать миллисекунды. В exif и атрибутах файла современных файловых систем (ntfs, ext4) не unixtime, а более точный формат, так что никаких проблем нет.
Line_Interpolate_Point же как раз все эти проблемы решает.
Подобное некорректное дублирование координат хоть и принесёт ошибку в конечный результат, но она не особо значительной должна быть. Во многих случаях можно пренебречь. Но всё же подобная запись треков - не есть массовый подход (в том числе и опробованные мною версии Навитела подобной недоработки не имеют). Но если уж от недоработанного ПО никак не уйти, то можно попричёсывать, благо несложно, если о косяке таком в треке известно.
Вытащить из видео по кадру через целое количество секунд (1 кадр за 1, 2, 3… секунды)
Открыть трек, сообразить где на треке находится первый кадр видео, запомнить время в этой точке
Запустить скрипт, который к каждому кадрику припишет время съёмки, начиная с времени, которое нашли в шаге 3
Привязать jpg к координатам в gpsPrune (у меня не получилось, поэтому я использовал JOSM)
Запустить скрипт, который дописывает к фотографиям азимут.
…
profit !
Только теперь оказалось, что библиотека которая разбирает exif на сервере mapillary, не читает теги записанные JOSM. Поэтому я дополнительно прогоняю такие файлы через GeoSetter.
Речь о плагине Photo Geotagging? Насколько я вижу, он направление не записывает, которое нужно для mapillary.
Если нет, то в чём заключается прогонка через GeoSetter?
Хочется что-то попроще GeoSetter-а для простановки данных под mapillary, поэтому и спрашиваю.