GPS Треки

Nikolya
Вам нужно в такой формат переводить?


<trkpt lat="51.7703323" lon="128.087662">
  <time>2010-10-11T07:24:04Z</time>
</trkpt>

ну не то чтобы мне, я треки заливаю на ОСМ, и по ним отрисовываю федеральную трассу чита-хабаровск ну и по пути некотрые поселки да города захватываю, когда конеш время есть
на которой и работаю )))

Для ситигада ? Есть целый класс CSV фильтров, адаптировать не сложно.

Nikolya

Прошу протестировать и сильно не пинать ежели что, лежит тут.

то что доктор прописал, спасибо

Nikolya
Ну, ежели чего, то того, пишите.

Написал.
Пока ждал ответ - наваял скрипт на баше. Не ахти, но работает :slight_smile:

Т.е. Скрипт конвертирует файлы экспорта (*.track) из системы мониторинга “Скаут” в gpx-формат.

В нижеприведённом скрипте быть может нужно будет поправить +10:00 на ваш сдвиг от UTC.

Сам скрипт (конечно надо бы причесать, но делал на скорую руку):

#!/bin/bash

if [ -z “$3” ]
then
echo “Использование:”
echo “$0 имя_трека входной_файл.track выходной_файл.gpx”
exit
fi

name=“$1”
input=“$2”
output=“$3”

tmp=mktemp /tmp/XXXXXX

fgrep “<RoutePoint Lat=” “$input” > “$tmp”

echo '<?xml version="1.0" encoding="UTF-8"?>
](http://www.topografix.com/GPX/1/1/gpx.xsd\>)

’ > “$output”

echo "$name

" >> “$output”

cat “$tmp”|while read text
do
time=“echo $text|sed 's/.*DateTime=\"//'|sed 's/\+10:00.*//'
echo “$text”|sed ‘s/RoutePoint/trkpt/’|sed ‘s/DateTime/time/’|sed ‘s/+10:00/Z/’|sed ‘s/Lat/lat/’|sed ‘s/Lon/lon/’|sed ‘s/Time/time/’|sed ‘s//>/>/’ >> “$output”
echo “${time}Z
” >> “$output”
done

echo "



" >> “$output”

rm “$tmp”

Можно привернуть проверять директорию на предмет файлов *.track и конвертировать их в gpx в случае появления онных:

#!/bin/bash

log=“/var/log/scout_track_converter.log”

path=“$1”

if [ -z “$path” ]
then
echo “Использование:”
echo “$0 путь_к_директории_где_лежат_треки_для_конвертирования_в_формате_track”
exit
fi

cd “$path”
mkdir old
for file in *
do
echo “Обрабатываю $file”
if [ -z “echo $file|egrep '.*\.track$'” ]
then
echo “Не *.track файл - пропуск”
continue
fi
name=echo $file|sed "s/\.track$//"
if [ -f “$name.gpx” ]
then
echo “Файл $file уже сконвертирован - пропуск”
else
echo “Ковертирую $file в $name.gpx” >> “$log”
/scripts/gps/scout_track2gpx “$name” “$file” “$name.gpx”
mv “$file” “./old/$file”
# Импорт трека на OSM:
#/scripts/gps/scout_track_upload_to_osm “$name.gpx”
fi
done

Ну а загрузка в OSM командой:
curl -u “$user”:“$password” -H “Expect: " -F “file=@$name_file” -F description=”$description" -F tags=“$tags” -F visibility=public http://www.openstreetmap.org/api/0.6/gpx/create

где нужно подставить нужные переменные…

Не знаете как будет это на PHP выглядит (загрузка на OSM через API)

Ну просто достаточно: file_put_contents или curl тот же, в гугле полно примеров.
Если life пример нужен могу начирикать, как раз себе надо в проект где треки хранятся сделать бота-заливалку с модерацией.

Самое смешное, что у меня есть свой проект страничка где пользователи могут выкладывать свои треки для просмотра их на сайтах yandex и google. Просто хотелось бы это еще и автоматом выкладывать в osm.

Ну я именно про кнопочку типа “залить в OSM”, только я не тупо право заливки буду давать, а отправлять в модерацию и там уже админ проверив трек жмёт “отправить в OSM”, а то и так мусорных треков навалом у нас.

Господа, подскажите как правильно чистить треки для заливки на OSM?

Сейчас делаю так:

  1. Открываю трек в JOSM
  2. Конвертирую в слой данных
  3. “Упростить линию”
  4. Конвертирую в слой GPS-треков
  5. Сохраняю/заливаю.

Результат ТУТ.
Размер результата разумный - 55кб против 7Мб оригинала. Но трек получился “рваный”. Это нормально?

Какой смысл от таких треков, учитывая настройки “упрощения” по умолчанию…
Треки лучше чистить в специализированном софте и ничего не сглаживать - тогда это по-настоящему сырые данные.

http://forum.openstreetmap.org/viewtopic.php?pid=166866#p166866
http://forum.openstreetmap.org/viewtopic.php?pid=111071#p111071

Насчет размера файлов не бойтесь - при загрузке сервер сам выберет в базу то что нужно. Загружать можно в ZIP-архиве (но надо учесть, что все файлы в одном архиве слипнутся в один трек)

(added)
Ага, понял, у вас исходник NMEA ! Вообще замечательно, конвертируйте их в GPX программой GPSBabel

(del)

Я после упрощения честно просмотрел весь маршрут - нигде отклонение упрощенки от сырых данных не превышает 0.5 метра.
Если в специализированном - в каком именно? У меня есть GPSBabel, но чота по-быстрому запилить нормальную фильтрацию в нем не получилось.
Собстна ВОТЪ.

Не надо ничего фильтровать :slight_smile: Если вы имеете в виду отрезать “звёздочки” в местах стояния, то можно сделать это в графическом софте. После конвертации nmea–>gpx, откройте получившийся файл программой GPXEditor, она немного тормозная, но зато есть возможность посмотреть трек на гугле и решить что отрезать (стоянку около своего дома в целях анонимности, или подъезды к любовнице и пр.), а что оставить…

Вообще конечно вам решать. Трек у вас получился красивый, единственное можете уменьшить в JOSM параметр simplify-way.max-error (по умолчанию он 2.5 метра или вообще отсутствует). В JOSM используется алгоритм Douglas–Peucker, он только прореживает точки, и очень бывает обидно когда он оставляет случайный вылет координат, а удаляет нормальные данные…

Случайные вылеты я убираю ручкаме. Упрощения только при уверенности что все точки “хорошие”. Ну в общем понятно. Получается, что если трек “адекватный”, то чистить вощемта можно. Но не нужно :slight_smile:

Может кто посоветует, какой программой удобнее смотреть и нарезать gpx файлы в линукс, чтоб без ущерба для качества трека?