В наших аэрофотосъемках мы обычно генерируем десятки файлов GPX и обычно конвертируем большинство из них в шейп-файлы для отображения в приложении ГИС. 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'
Однако при этом каждый сохраненный трек импортируется как линия - теряется информация о времени и местоположении для каждого трека!
Кто-нибудь знает какие-нибудь умные способы создания базы данных tracklog, которая сохранит эту информацию?
РЕДАКТИРОВАТЬ :
Журналы треков - это не просто линии - это наборы последовательных точек, каждая из которых имеет атрибуты высоты и времени. Каждая точка принадлежит сегменту трека, который, в свою очередь, принадлежит данному треку, и точки в каждом сегменте трека были взяты без перерыва и могут быть предположены связанными. Например:
<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
. Этот набор инструментов предназначен для проекта «DrawingLife» (и поэтому содержит некоторую «городскую» информацию, которая, вероятно, не нужна большинству из нас); главная страница gpx2spatialite ничего не объясняет, но вики-жизнь с рисунками лучше. Тем не менее, множество недокументированных функций - как удаление дубликатов!
Создайте пространственную базу данных для файлов GPX, которая будет содержать сегменты треков, треки, трекпоинты и путевые точки. У него также есть настроенные «пользователи» (что кажется странным, поскольку sqlite не является системой доступа пользователей, а предназначена для рисования), предназначенной для маркировки различных дорожек:
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]
Ответы:
ptrv / gpx2spatialite делает это замечательно, сохраняя временные метки для всех точек и получая данные скорости и длины для треков. Он также не будет импортировать дубликаты дорожек, так что вы можете кормить его огромной кучей файлов GPX, и он будет соответствующим образом обрабатывать их.
Обновление : примеры использования по запросу:
Инициализируйте новую базу данных:
Добавьте один файл gpx:
(Если имя пользователя user не существует в базе данных, запросит, хотите ли вы его создать. База данных построена с треками / путевыми точками / маршрутами, назначенными одному или нескольким пользователям.)
Добавьте все файлы gpx в папку / :
Использование: это пространственная база данных, со столом Маршрут следования проведения дорожек в качестве полилинии, точки треков , содержащих отдельные точки (со временем, высота, и т.д.), а также точек маршрута для любых заданных точек. Есть также многочисленные индексы, некоторые определения городов мира и, возможно, также встроенная информация о стиле SLD, которую я еще не исследовал. В качестве тривиального примера, вот карта того, как мой родной город (Торонто) определяется через ~ 7 лет отслеживания:
При использовании линий с прозрачностью 75% наиболее часто используемые маршруты становятся темнее.
источник
easy_install gpx2spatialite
что на самом деле установит его как скрипт, доступный из командной строки! Этаuser
опция также сбивала с толку, они не объясняют ее на главной странице, а Spaceite - это система без ограничений доступа.user
опция имеет смысл для проекта Drawinglife, поскольку она позволяет нескольким участникам добавлять свои треки в одну базу данных. Спасибо за подсказки об исключении тегов City и за поиск причин сбоев. Если у вас есть файлы GPX без меток времени, вы можете синтезировать данные времени, используя опцию faketime GPSBabel .gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
В продолжение вашего комментария - "есть ли у FME особый метод для сохранения файлов GPX?"
Да, у вас есть полный контроль над маршрутами, путевыми точками, треками и метаданными
FME - очень достойный и мощный инструмент для совместной работы с ГИС-данными и непространственными данными.
см. для получения более подробной информации http://evangelism.safe.com/fmeevangelist26/
источник
Есть некоторые идеи здесь для создания собственной программы для извлечения GPX данных в Python или Perl. Отсюда нет ничего сложного в том, чтобы поместить данные в пространственную базу данных. Вам нужно будет подумать о подходящей схеме для хранения в пространственном пространстве - какие атрибуты вы хотите сохранить?).
источник
Если вы хотите пойти по маршруту OGR, лучшим подходом будет сначала экспортировать в Shapefile, который будет экспортировать несколько шейп-файлов, представляющих различие между путевой точкой / трекпоинтом / путём / треком и соответствующими метаданными, а затем объединить каждый набор файлов в ваш основной SQLite. база данных.
источник
Попробуйте добавить
на вашу команду ogr2ogr
источник