В наших аэрофотосъемках мы обычно генерируем десятки файлов 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]