Bagaimana cara mengimpor file gpx secara massal ke QGIS dan bergabung menjadi satu shapefile?

11

Saya ingin membuat 'peta panas' saya sendiri dari semua wahana sepeda yang telah saya rekam menggunakan aplikasi Strava di QGIS.

Saya memiliki lebih dari 450 file gpx individual dan ingin menggabungkan layer track points menjadi satu shapefile tunggal sehingga saya dapat bergabung dengan mereka ke layer poligon dan melambangkan dengan join_count seperti yang terlihat dalam contoh ini:

masukkan deskripsi gambar di sini

Beberapa file gpx saya mengandung 'ride' di nama file dan lainnya 'run', saya ingin memfilter file yang hanya menyisakan 'naik'.

Bagaimana saya bisa mencapai ini secara efisien menggunakan QGIS?

MFBawl
sumber

Jawaban:

13

Gunakan alat baris perintah ogr2ogr, yang didistribusikan dengan QGIS. Di Windows, buka OSGeo4W Shell dari grup program QGIS dan masuk

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

Perintah yang setara dalam shell bash Unix adalah

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

Pastikan file output (gpx.shp) tidak ada sebelumnya, maka ogr2ogr akan menghasilkan satu shapefile tunggal dari semua file gpx dengan "ride" di dalamnya. Ada beberapa catatan tentang driver ogr gpx di http://www.gdal.org/drv_gpx.html .

Redoute
sumber
3

Saya tahu ini terlambat tetapi mungkin bisa membantu orang lain suatu hari. Ada plugin QGIS bernama Batch GPS Importir yang saya jelaskan lebih lanjut dalam jawaban ini .

Versi terbaru dapat memfilter file menggunakan awalan dan teks sufiks. Importir GPS Batch

Saya harap ini membantu.

keajaiban
sumber
2

Anda dapat mengimpor beberapa file GPX sekaligus, meskipun Anda akan diminta masing-masing dan setiap file untuk lapisan data yang Anda inginkan. Dengan lebih dari 400 jejak yang tidak akan menyenangkan.

Anda mungkin ingin melihat ogr2ogr . Ini adalah Swiss-Army-Knife konversi file geo, ini akan mengkonversi hampir semua geoformat menjadi geoformat lain yang kompatibel (vektor / raster).

panggilan ogr2ogr terlihat seperti

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

Anda dapat menyebutnya secara terprogram (misalnya dari skrip python, file .bat, atau skrip bash) untuk beralih pada setiap perjalanan * .gpx dan mengonversinya menjadi shapefile, misalnya.

Karena itu, saya tidak bisa menjalankan ini pada beberapa jejak gpx acak yang saya unduh dari OpenStreetMap (ogrinfo juga tidak suka, meskipun QGIS memuatnya). Tapi saya bisa membuka file GPX dari sumber lain.

Coba jalankan

ogrinfo example.gpx tracks

dan lihat apakah Anda mendapatkan hasil yang bermanfaat. Jika Anda mendapatkan daftar driver, itu gagal.

Jarak tempuh Anda mungkin bervariasi, ada baiknya dicoba.

Perhatikan bahwa setiap shapefile akan berakhir dengan direktori sendiri, jadi jika Anda tidak ingin repot menulis kode, Anda dapat mencoba CSV sebagai gantinya .. lihat posting blog ini .

Untuk melakukan penggabungan, Anda dapat (menggunakan kode) menyalin semua shapefile ke dalam satu direktori, lalu menggunakan Vector> Alat Manajemen Data> Menggabungkan shapefile menjadi satu

Jika Anda menyukai gaya hexbin yang Anda ilustrasikan, Anda mungkin ingin melihat plugin MMQgis . Ini memungkinkan kisi heksagonal dibuat, yang kemudian dapat Anda gunakan untuk melakukan analisis 'titik dalam poligon'.

Steven Kay
sumber
4
Di Windows saya membuka OSGeo4W Shell dari QGIS Program Group dan mencoba for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp tidak harus ada sebelumnya, maka ogr2ogr menghasilkan shapefile tunggal.
Redoute
1
Anda harus menuliskan ini sebagai jawaban @Redoute!
Alex Leith
@Redoute Ya, bisakah Anda menulis sebagai jawaban lengkap? Terima kasih
MFBawls
1
terjemahan saran luar biasa oleh @Redoute untuk pengguna Linux, berfungsi seperti pesona ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay