gpxファイルをQGISに一括インポートして単一のシェープファイルにマージする方法は?


11

QGISのアプリStravaを使用して記録したすべての自転車の「ヒートマップ」を作成したいと考えています。

450以上の個別のgpxファイルがあり、トラックポイントレイヤーを1つのシェープファイルにマージして、これらをポリゴンレイヤーに結合し、この例に示すようにjoin_countでシンボル化したいと思います。

ここに画像の説明を入力してください

私のgpxファイルには、ファイル名に「ride」が含まれているものと、「run」が含まれているものがあります。「ride」が付いているファイルのみを残してファイルをフィルタリングしたいと思います。

QGISを使用してこれを効率的に実現するにはどうすればよいですか?

回答:


13

QGISと共に配布されるogr2ogrコマンドラインツールを使用します。Windowsで、QGISプログラムグループからOSGeo4Wシェルを開き、次のように入力します。

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は「ride」が含まれるすべてのgpxファイルから単一のシェープファイルを生成します。http://www.gdal.org/drv_gpx.htmlに ogr gpxドライバーに関する注意事項があります


3

私はこれが遅いことを知っていますが、いつか他の人を助けるかもしれません。この回答で詳しく説明したBatch GPS ImporterというQGISプラグインがあります

最新バージョンでは、プレフィックスとサフィックスのテキストを使用してファイルを除外できます。 バッチGPSインポーター

お役に立てば幸いです。


2

一度に複数のGPXファイルをインポートできますが、必要なデータレイヤーのすべてのファイルに対してプロンプトが表示されます。400を超えるトレースがあると、面白くないでしょう。

あなたはogr2ogrを見たいかもしれません。これはgeoファイル変換のスイスアーミーナイフであり、ほとんどすべてのジオフォーマットを他の互換性のある(ベクトル/ラスター)ジオフォーマットに変換します。

ogr2ogr呼び出しは次のようになります

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

プログラムで(たとえば、pythonスクリプト、.batファイル、またはbashスクリプトから)呼び出して、各ride * .gpxを反復処理して、たとえばシェイプファイルに変換できます。

とは言っても、OpenStreetMapからダウンロードした2つのランダムなgpxトレースでこれを機能させることはできませんでした(QGISはそれらをロードしましたが、ogrinfoも好きではありませんでした)。しかし、別のソースからGPXファイルを開くことができました。

実行してみてください

ogrinfo example.gpx tracks

有用な出力が得られるかどうかを確認してください。ドライバーのリストを取得すると、失敗します。

あなたの走行距離は異なる場合があります、それは一見の価値があります。

各シェープファイルは独自のディレクトリになることに注意してください。コードを書く手間が必要ない場合は、代わりにCSVを試すことができます。このブログ投稿を参照してください

マージを行うには、(コードを使用して)すべてのシェープファイルを単一のディレクトリにコピーしてから、[ベクター]> [データ管理ツール]> [シェープファイルを1つにマージ]を使用します。

あなたが描いたhexbinスタイルが好きなら、MMQgisプラグインを見てみたいかもしれません。これにより、六角形のグリッドを作成できます。これを使用して、「ポリゴン内のポイント」分析を行うことができます。


4
Windowsでは、QGISプログラムグループからOSGeo4Wシェルを開いて試してみましたfor %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime。gpx.shpが以前に存在していてはなりません。その後、ogr2ogrは単一のシェープファイルを生成します。
Redoute

1
これを回答@Redouteとして書いてください。
Alex Leith

@Redouteはい、完全な回答として書いてもらえますか?ありがとう
MFBawls

1
Linuxユーザー向けの@Redouteによる優れた提案の翻訳、それは魅力のように機能します...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.