Làm cách nào để nhập hàng loạt tệp gpx vào QGIS và hợp nhất thành một shapefile?


11

Tôi đang tìm cách tạo ra 'bản đồ nhiệt' của riêng mình cho tất cả các chuyến đi xe đạp tôi đã ghi lại bằng ứng dụng Strava trong QGIS.

Tôi có hơn 450 tệp gpx riêng lẻ và muốn hợp nhất các lớp điểm theo dõi thành một shapefile duy nhất để tôi có thể nối chúng với một lớp đa giác và tượng trưng bằng jo_count như trong ví dụ này:

nhập mô tả hình ảnh ở đây

Một số tệp gpx của tôi chứa 'đi xe' trong tên tệp và các tệp khác 'chạy', tôi muốn lọc các tệp chỉ để lại những tệp có 'đi xe'.

Làm thế nào tôi có thể đạt được điều này một cách hiệu quả bằng cách sử dụng QGIS?

Câu trả lời:


13

Sử dụng công cụ dòng lệnh ogr2ogr, được phân phối với QGIS. Trong Windows, mở Shell OSGeo4W từ nhóm chương trình QGIS và nhập

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

Lệnh tương đương trong shell bash Unix sẽ là

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

Đảm bảo rằng tệp đầu ra (gpx.shp) không tồn tại trước đó, sau đó ogr2ogr sẽ tạo một shapefile duy nhất từ ​​tất cả các tệp gpx có "đi xe" trong đó. Có một số lưu ý về trình điều khiển ogr gpx tại http://www.gdal.org/drv_gpx.html .


3

Tôi biết điều này là muộn nhưng nó có thể giúp đỡ người khác một ngày nào đó. Có một plugin QGIS được gọi là Batch GPS Importer mà tôi đã giải thích thêm trong câu trả lời này .

Phiên bản mới nhất có thể lọc các tệp bằng văn bản tiền tố và hậu tố. Nhập khẩu hàng loạt GPS

Tôi hy vọng nó sẽ giúp.


2

Bạn có thể nhập nhiều tệp GPX cùng một lúc, mặc dù bạn sẽ được nhắc từng tệp cho lớp dữ liệu bạn muốn. Với hơn 400 dấu vết sẽ không vui chút nào.

Bạn có thể muốn xem ogr2ogr . Đây là Swiss-Army-Knife về chuyển đổi tệp địa lý, nó sẽ chuyển đổi gần như mọi geoformat thành bất kỳ geoformat tương thích (vector / raster) nào khác.

một cuộc gọi ogr2ogr trông giống như

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

Bạn có thể gọi nó theo chương trình (ví dụ: từ tập lệnh python, tập tin .bat hoặc tập lệnh bash) để lặp lại qua mỗi chuyến đi * .gpx và chuyển đổi nó thành shapefile, ví dụ.

Phải nói rằng, tôi không thể làm điều này hoạt động trên một vài dấu vết gpx ngẫu nhiên mà tôi đã tải xuống từ OpenStreetMap (ogrinfo cũng không thích chúng, mặc dù QGIS đã tải chúng). Nhưng tôi đã có thể mở tệp GPX từ một nguồn khác.

Hãy thử chạy

ogrinfo example.gpx tracks

và xem nếu bạn nhận được bất kỳ đầu ra hữu ích. Nếu bạn nhận được một danh sách các trình điều khiển, nó đã thất bại.

Số dặm của bạn có thể thay đổi, nó đáng để đi.

Lưu ý rằng mỗi shapefile sẽ kết thúc với thư mục riêng của nó, vì vậy nếu bạn không muốn gặp rắc rối khi viết mã, bạn có thể thử CSV thay vì .. xem bài đăng trên blog này .

Để thực hiện việc hợp nhất, bạn có thể (sử dụng mã) sao chép tất cả các shapefiles vào một thư mục, sau đó sử dụng Vector> công cụ quản lý dữ liệu> Hợp nhất các shapefiles thành một

Nếu bạn thích phong cách hexbin mà bạn đã minh họa, bạn có thể muốn xem plugin MMQgis . Điều này cho phép các lưới lục giác được tạo, sau đó bạn có thể sử dụng để thực hiện phân tích 'điểm trong đa giác'.


4
Trong Windows, tôi đã mở OSGeo4W Shell từ Nhóm chương trình QGIS và thử for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp không được tồn tại trước đó, sau đó ogr2ogr tạo ra một shapefile.
Redoute

1
Bạn nên viết nó lên như một câu trả lời @Redoute!
Alex Leith

@Redoute Có, xin vui lòng bạn có thể viết lên như câu trả lời đầy đủ? Cảm ơn
MFBawls

1
bản dịch gợi ý tuyệt vời của @Redoute cho người dùng Linux, nó hoạt động như một cơ duyên ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.