Как выполнить массовый импорт файлов gpx в QGIS и объединить их в один шейп-файл?

11

Я хочу создать свою собственную «тепловую карту» для всех поездок на велосипеде, которые я записал, используя приложение Strava в QGIS.

У меня более 450 отдельных файлов gpx, и я хотел бы объединить слои точек треков в один единственный шейп-файл, чтобы я мог соединить их со слоем многоугольника и обозначить символом join_count, как показано в этом примере:

введите описание изображения здесь

Некоторые из моих файлов gpx содержат «ride» в имени файла, а другие «run», я хотел бы отфильтровать файлы, оставив только те, которые имеют «ride».

Как я могу добиться этого эффективно, используя QGIS?

MFBawls
источник

Ответы:

13

Используйте инструмент командной строки ogr2ogr, который распространяется вместе с QGIS. В Windows откройте оболочку OSGeo4W из группы программ QGIS и введите

for %p in (path_to_gpx_files\*ride*.gpx) do ogr2ogr path_for_output\gpx.shp -append %p track_points -fieldTypeToString DateTime

Эквивалентная команда в оболочке Unix bash будет

for file in path_to_gpx_files/*ride*.gpx; do ogr2ogr path_for_output/gpx.shp -append "${file}" track_points -fieldTypeToString DateTime; done

Убедитесь, что выходной файл (gpx.shp) не существует раньше, тогда ogr2ogr создаст один единственный шейп-файл из всех файлов gpx с надписью "ride". Есть некоторые заметки о драйвере gpx ogr на http://www.gdal.org/drv_gpx.html .

Redoute
источник
3

Я знаю, что уже поздно, но это может помочь другим. Существует плагин QGIS под названием Batch GPS Importer, который я объяснил больше в этом ответе .

Последняя версия может отфильтровывать файлы, используя префикс и текст суффикса. Пакетный GPS-импортер

Я надеюсь, что это помогает.

wondim
источник
2

Вы можете импортировать несколько файлов GPX одновременно, хотя вам будет предложено каждый файл для нужного слоя данных. С более чем 400 следами это не будет весело.

Вы можете посмотреть на ogr2ogr . Это швейцарский армейский нож преобразования геофайлов, он преобразует практически любой геоформат в любой другой совместимый (векторный / растровый) геоформат.

вызов ogr2ogr выглядит примерно так

ogr2ogr -f "ESRI Shapefile" example.shp example.gpx

Вы можете вызывать его программно (например, из скрипта Python, файла .bat или скрипта bash), чтобы перебирать каждую поездку * .gpx и преобразовывать ее, например, в шейп-файл.

Сказав это, я не смог заставить это работать на нескольких случайных трассировках gpx, которые я скачал с OpenStreetMap (ogrinfo их тоже не любил, хотя QGIS их загрузил). Но я смог открыть файлы GPX из другого источника.

Попробуйте запустить

ogrinfo example.gpx tracks

и посмотреть, если вы получите какой-либо полезный вывод. Если вы получили список драйверов, это не удалось.

Ваш пробег может варьироваться, это стоит того.

Обратите внимание, что у каждого шейп-файла будет свой собственный каталог, поэтому, если вам не нужны хлопоты по написанию кода, вместо этого вы можете попробовать CSV-файл ... см. Этот пост в блоге .

Чтобы выполнить объединение, вы можете (используя код) скопировать все шейп-файлы в один каталог, а затем использовать Инструменты вектора> Управление данными> Объединить шейп-файлы в один

Если вам нравится стиль hexbin, который вы иллюстрировали, вы можете посмотреть на плагин MMQgis . Это позволяет создавать гексагональные сетки, которые затем можно использовать для анализа «точек в многоугольнике».

Стивен Кей
источник
4
В Windows я открыл оболочку OSGeo4W из группы программ QGIS и попробовал for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp не должен существовать раньше, тогда ogr2ogr создает один шейп-файл.
Повтор
1
Вы должны написать это как ответ @Redoute!
Алекс Лейт
@Redoute Да, пожалуйста, вы можете написать как полный ответ? Спасибо
MFBawls
1
перевод замечательного предложения @Redoute для пользователей Linux, он работает как шарм ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Стивен Кей