RU:Создание файлов GPX
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