如何将gpx文件批量导入QGIS并合并为单个shapefile?


11

我希望为自己使用QGIS中的Strava应用程序记录的所有自行车骑行创建自己的“热图”。

我有450多个单独的gpx文件,想将轨迹点图层合并到一个单个shapefile中,因此我可以将它们连接到多边形图层,并通过join_count进行符号化,如以下示例所示:

在此处输入图片说明

我的某些gpx文件的文件名中包含“ ride”,其他文件“ run”,我想过滤文件,仅保留那些带有“ ride”的文件。

如何使用QGIS有效地实现这一目标?

Answers:


13

使用随QGIS分发的ogr2ogr命令行工具。在Windows中,从QGIS程序组中打开OSGeo4W Shell,然后输入

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

Unix bash shell中的等效命令为

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将从所有带有“ ride”的gpx文件中生成一个单个shapefile。在http://www.gdal.org/drv_gpx.html上有一些有关ogr gpx驱动程序的注释。


3

我知道这很晚了,但有一天可能会帮助别人。有一个名为批处理GPS导入器的QGIS插件,我在此答案中对其进行了详细说明。

最新版本可以使用前缀和后缀文本过滤掉文件。 批量GPS导入器

希望对您有所帮助。


2

您可以一次导入多个GPX文件,尽管系统会提示您每个文件用于所需的数据层。超过400条痕迹将变得不那么有趣。

您可能要看看ogr2ogr。这是地理文件转换的“瑞士军刀”,它将几乎将任何地理格式转换为任何其他兼容的(矢量/栅格)地理格式。

一个ogr2ogr呼叫看起来像

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

您可以通过编程方式调用它(例如,从python脚本,.bat文件或bash脚本),以遍历每个ride * .gpx并将其转换为shapefile。

话虽这么说,但我无法从OpenStreetMap下载的一些随机gpx跟踪上使用此跟踪(ogrinfo也不喜欢它们,尽管QGIS已将其加载)。但是我能够从另一个来源打开GPX文件。

尝试跑步

ogrinfo example.gpx tracks

看看是否有任何有用的输出。如果获得驱动程序列表,则失败。

您的里程可能会有所不同,值得一试。

注意,每个shape文件将结束自己的目录,所以如果你不想写代码的麻烦,你可以尝试CSV代替.. 看到这个博客帖子

要进行合并,您可以(使用代码)将所有shapefile复制到一个目录中,然后使用“ 向量”>“数据管理工具”>“将shapefile合并到一个目录”

如果您喜欢所示的hexbin样式,则不妨查看MMQgis插件。这样就可以创建六边形网格,然后可以用来进行“多边形中的点”分析。


4
在Windows中,我从QGIS程序组打开了OSGeo4W Shell,然后尝试了for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime。gpx.shp一定不能存在,然后ogr2ogr会生成一个shapefile。
Redoute

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
Steven Kay
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.