Як створити географічну базу даних журналів GPS?


13

У наших повітряних обстеженнях дикої природи ми, як правило, генеруємо десятки файлів 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]


Ми використовуємо FME safe.com/fme/fme-technology/fme-desktop/features, і він зберігає всю необхідну атрибуцію до бази даних Oracle
Mapperz

1
@Mapperz - чи має FME певний метод збереження файлів GPX? Я дійсно після рішення FOSS.
Simbamangu

Відповіді:


6

ptrv / gpx2spatialite робить це надзвичайно добре, економлячи часові позначки для всіх точок і отримуючи дані про швидкість і довжину для треків. Він також не імпортує повторювані доріжки, тому ви можете подати йому величезну купу для файлів GPX, і це належним чином з’єднає їх.

Оновлення : приклади використання, як вимагається:

Ініціалізуйте нову базу даних:

gpx2spatialite_create_db db.sqlite

Додати один gpx-файл:

gpx2spatialite -d db.sqlite -u user file.gpx

(Якщо користувача користувача не існує в базі даних, він запитає, чи бажаєте ви створити його. База даних будується з доріжок / шляхових точок / маршрутів, призначених одному або декільком користувачам.)

Додайте всі файли gpx у папку / :

gpx2spatialite -d db.sqlite -u user folder/

Використання: це просторові дані, зі столом Маршрут прямування проведення доріжок в якості полилинии, точки треків , що містять окремі точки (згодом, висота, і т.д.), а також точок маршруту для будь-яких заданих точок. Також є численні індекси, деякі визначення у світі та, можливо, також вбудована інформація про стилістику SLD, яку я ще не досліджував. Як тривіальний приклад, ось карта того, як визначається моє рідне місто (Торонто) через ~ 7 років журналів треків:

GPS-журнали Торонто

Використовуючи лінії з прозорістю 75%, маршрути, які найчастіше подорожують, стають темнішими.


Ага, не зрозумів, що easy_install gpx2spatialiteнасправді встановить його як сценарій, доступний з командного рядка! userВаріант був також заплутаним, вони не пояснюють його на головній сторінці, і SpatiaLite є відсутність доступу з обмеженням системи.
Simbamangu

Цей userваріант має сенс для проекту Drawinglife, оскільки дозволяє декільком учасникам додавати свої доріжки до однієї бази даних. Дякуємо за підказки про виключення мітки міста та за пошук причин збоїв. Якщо у вас є файли GPX без часових позначок, ви можете синтезувати дані про час, використовуючи опцію факету GPSBabel .
scruss

1
FYI, синтаксис просторового gpx2 змінився. Типова команда імпорту заразgpx2spatialite import -u user -s -d db.spatialite file1.gpx …
scruss

3

Для подальшого коментаря - "чи має FME певний метод збереження файлів GPX?"

Так, ви маєте повний контроль над маршрутами, шляховими точками, треками та метаданими введіть тут опис зображення

FME - це дуже гідний та потужний інструмент для маніпулювання даними GIS та непросторовими даними.

дивіться детальніше http://evangelism.safe.com/fmeevangelist26/


2

Є деякі ідеї тут для створення власної програми для вилучення GPX даних в Python або Perl. Звідси не надто велике розтягнення, щоб розмістити дані в просторовій базі даних. Вам потрібно буде подумати про підходящу схему для зберігання в просторі - які атрибути ви хочете зберегти?).


1

Якщо ви хочете пройти маршрут OGR, найкращим підходом є спочатку експорт до Shapefile, який експортує декілька файлів форм, що представляють розрізнення точки / треку / шляху / доріжки та пов'язані з ними метадані, а потім об'єднає кожен набір файлів у ваш основний SQLite база даних.


-1

Спробуйте додати

-lco GPS_USE_EXTENSIONS=YES

до вашої команди ogr2ogr


Я спробував це в новій таблиці - без впливу на отримані поля чи дані. Що ви очікуєте від цього?
Simbamangu

Я очікував отримати розширені атрибути. Читаючи своє запитання, я не думаю, що все одно можна отримати кожен окремий час треку, окрім експорту треку як балів.
Micha
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.