RU:Convert GPS tracks

From OpenStreetMap Wiki
Jump to navigation Jump to search

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