У наших повітряних обстеженнях дикої природи ми, як правило, генеруємо десятки файлів GPX, і зазвичай перетворюємо більшість у формати файлів для відображення в GIS-додатку. Файли GPX - це надзвичайний спосіб зберігати всі (або майже всі) ваші GPS-дані в одному місці - це XML-файли, які зберігають інформацію про трек, точку та інформацію про маршрут в одному зручному форматі. Вони зберігають кілька треків, навіть старі збережені треки від Garmin.
Я хотів би зберігати всі ці дані треку в просторовій базі даних, паралельно з іншими таблицями, які містять точкові дані спостереження з одного опитування.
ogr2ogr дозволить мені перетворити трек у базу даних простору:
ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
-dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'
Однак це імпортує кожну збережену доріжку як лінію - втрачаючи інформацію про час / місцеположення для кожної точки треку!
Хтось знає про будь-які розумні способи створення бази даних треків, які зберігатимуть цю інформацію?
Редагувати :
Tracklogs - це не просто лінія - це сукупність послідовних точок, кожна з яких має атрибут висоти та часу. Кожна точка належить до відрізка треку, який, в свою чергу, належить даній доріжці, а точки всередині кожного відрізка треку приймаються без перешкод і можуть вважатись пов'язаними. Наприклад:
<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>
Таким чином, для збереження журналу треків вам потрібно зберегти цю колекцію точок із пов’язаними з ними даними.
Одним із варіантів рішення може бути завантаження цих треків у вигляді точок з додатковими стовпцями для назви треку, відрізка, висоти та часу; Я не думаю, що ogr перетворить треки у точки, однак.
Рішення
Завдяки @scruss, який вказав на gpx2spatialite , який я встановив (OS X 10.9) sudo easy_install gpx2spatialite
. Цей набір інструментів розроблений для проекту "малювання життя" (і, таким чином, має деяку "міську" інформацію, яка, мабуть, не потрібна більшості з нас); головна сторінка gpx2spatialite не дуже пояснює, але вікі малювання краще. І все-таки багато недокументованих функцій - як видалення дублікатів!
Створіть просторову базу даних для файлів GPX, в якій будуть зберігатися сегменти доріжок, доріжок, точок треку та точок. У ньому також встановлено "користувачів" (що здається дивним, оскільки sqlite не є системою доступу користувачів, але призначений для малювання lifelife), призначений для позначення різних треків:
gpx2spatialite create_db MyGPXArchive.db
Завантажте цілу папку файлів GPX, включаючи всі підпапки, перевіряючи та видаляючи дублікати попутно:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Параметри:
-s
= не перевіряйте, чи є точки доріжок у міській базі даних (прискорює її багато)-d MyGPXArchive.db
= база даних для використання;-u SL25
= додати користувача SL25 (просто мітку, яку я використовував для набору зібраних треків);Selous2013
= папка (з підпапками), яка містить треки, які мене цікавлять.
Помилки:
Якщо ви зберегли доріжки на старшому Garmin, який відкидає інформацію про часові позначки, імпорт перерве (видаліть ці збережені доріжки за допомогою утиліти, наприклад GPSU). Якщо у вас є gpsbabel , спершу відфільтруйте файл чимось на зразок:
gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x доріжка, старт = 20000101 -o gpx -F [OUTPUT.gpx]