RU:Convert GPS tracks
OpenStreetMap использует для загрузки и публикации GPS-треков так называемый GPS Exchange Format (GPX,RU:GPX), основанный на XML. Большинство GPS-приёмников имеют собственные форматы данных, но многие из них позволяют сохранять данные в GPX.
См. также, как записывать треки и как закачивать.
Какие форматы поддерживаются?
Сервер понимает обычный формат GPX версий 1.0 и 1.1 (за исключением того, что тег <time>
должен быть проставлен на каждом треке или точке (waypoint). Как загрузить треки с отсутствующими временными метками – см. здесь.
На OpenStreetMap используется датум WGS-84, поэтому, пожалуйста, убедитесь в том, что ваши треки именно в формате WGS-84 lat/lon (широта/долгота). GPX-файлы всегда должны быть в WGS-84, но нужно быть внимательным, если треки конвертируются из других форматов или датумов.
Несколько треков в одном GPX-файле
Не нужно закачивать несколько треков в одном файле. Формат GPX это поддерживает, но сервер свяжет их все в один большой трек. Скажем, если у вас в одном GPX-файле был трек по Москве и трек по Хабаровску, то OSM соединит их в один гигантский трек через всю страну. В общем, закачивайте разные треки в отдельных файлах.
Конвертация форматов
Список форматов данных GPS и методы конвертирования их в GPX и обратно можно найти здесь. Большинство соответствующего софта для различных платформ (в т.ч. для мобильных) перечислено на странице Software.
GpsMapEdit подходит для Garmin и Ozi — форматов. Исправляет ошибки (в отличие от gpsBabel).
g7toWin [1] — достаточно всеядная (и бесплатная) софтина.
Кодировку в русских названиях точек они, к сожалению, портят.
Треки PocketGIS конвертируем с помощью LMTtoGPX: [2]
Конвертация треков в GpsBabel (командная строка)
Простейший способ:
gpsbabel.exe -w -i mapsource -f MyFile.mps -o gpx -F Tracks.gpx
(остальные форматы искать в справке gpsbabel: [3])
Склейка всех MPS-файлов папки в GPX
Требуется Python и GpsBabel
convertMpsGpx.py
from glob import glob
import os
os.system("del Tracks.mps");
fs=glob("*.mps")
s=""
for fname in fs:
s=s+" -f "+"\""+fname+"\""
print "found file %s"%fname
fs="gpsbabel.exe -w -i mapsource"+s+" -o gpx -F Tracks.gpx";
print fs
os.system(fs);
fs="gpsbabel.exe -t -i mapsource"+s+" -o mapsource -F Tracks.mps";
print fs
os.system(fs);
Конвертация точек c использованием GPSBabel (командной строки)
BAT — файл Windows, переводит в gpx пачку wpt, plt и gdb (OziExplorer, ГисРусса, Гармин)
@echo off
SETLOCAL
FOR %%i in (%*) do (
IF "%%~xi"==".gdb" (
echo %%i ".gdb(mapsouce)" %%~dpni.gpx
gpsbabel.exe -i gdb -o gpx %%i %%~dpni.gpx
)ELSE IF "%%~xi"==".plt" (
echo %%i ".plt(ozi)" %%~dpni.gpx
. gpsbabel.exe -i ozi -c CP1251 -f %%i -o gpx -F %%~dpni.gpx
)ELSE IF "%%~xi"==".wpt" (
. echo %%i ".wpt(ozi)" %%~dpni.gpx
gpsbabel.exe -i ozi -c CP1251 -f %%i -o gpx -F %%~dpni.gpx
)ELSE (
echo %%i -- skip
)
)
(прочие исходные форматы добавляются по вкусу) [автор zgremlin, с форума]
Попроще (poi2gpx.bat):
gpsbabel -w -i gdb -c cp1251 -f %1 -o GPX -c UTF-8 -F %1.gpx