GPX を SHP(シェープファイル)に変換

GPX のウェイポイント、ルート、トラックを、.prj と .cpg 付きの QGIS、ArcGIS Pro、AutoCAD Map 3D 用シェープファイルに無料で変換します。ブラウザー内で処理され、アップロードされません。種類ごとに別々のシェープファイルを1つの zip にまとめ、空のフィールドは省き、標高は Z 値として残します。チェックボックスをオンにすると、時刻、心拍数、ケイデンス付きの全トラックポイントも得られます。

うまく変換できないファイルがありましたか? [email protected] までメールでお知らせください。小さなサンプルファイルを添えていただけると、修正しやすくなります。

要点

GPX をシェープファイルに変換する理由

Garmin や Trimble の GPS 受信機、Strava、Komoot、OsmAnd などのスマートフォンアプリ、そして多くの現地調査ツールは、データを GPX で書き出します。GIS のプロジェクトでは、こうしたウェイポイントやトラックをシェープファイルとして扱いたいことがよくあります。記録したルートを投影座標系で計測したり、ほかのレイヤーで切り抜いたり、ArcGIS を使う同僚に渡したり、調査データの一部として保管したりするためです。QGIS は GPX を直接読み込めますが、保存するたびに5つのレイヤーから正しいものを選び、空のフィールドの長いリストを削除する必要があります。このページはそれを一度に行います。QGIS も使っているライブラリー GDAL で GPX を読み込み、データの種類ごとに、値が入っているフィールドだけを持つシェープファイルを1つずつ書き出し、結果を UTM ゾーンや国の平面座標系に投影変換することもできます。自宅の場所や外出の時間がわかってしまうトラックが、お使いのコンピューターの外に出ることはありません。

GPX をシェープファイルに変換する方法

  1. .gpx ファイルをボックスにドロップするか、クリックして選択します。
  2. 地図でトラックを確認します。メートル単位が必要なら UTM ゾーンなどの座標系を選び、すべてのトラックポイントが必要ならチェックボックスをオンにします。
  3. 「シェープファイルに変換」をクリックし、シェープファイルを含む .zip をダウンロードします。

変換で変わること

ウェイポイント、ルート、トラックは別々のシェープファイルになる

シェープファイルに入れられるジオメトリの種類は1つだけですが、GPX には単独の地点(ウェイポイント)、計画上の線(ルート)、記録した線(トラック)を混在させられます。ファイルに含まれる種類ごとに、waypoints.shp、routes.shp、tracks.shp という名前の別々のシェープファイルになり、1つの .zip にまとめられます。トラックだけのファイルなら、GPX と同じ名前のシェープファイルが1つできます。一時停止したトラックには複数のセグメントがありますが、複数のパートを持つ1つのフィーチャー(マルチパートのポリライン)のままなので、途切れた区間が直線で結ばれることはありません。

時刻は線ではなくトラックポイントに入る

シェープファイルの線には属性が1行しかないため、記録した各ポイントの時刻を入れることはできません。「すべてのトラックポイントを時刻と標高つきで含める」をオンにすると、track_points.shp というシェープファイルが追加されます。位置ごとに1つのポイントがあり、時刻、標高、track_id、seg_id、point_id がフィールドとして入ります。1秒ごとに記録した2時間のライドなら7,000ポイントを超えます。ウェイポイントの時刻はどの場合でも残ります。

時刻はテキストとして保存される

シェープファイルの元になっている .dbf 形式の日付型には時と分がないため、2024-05-01 08:15:30 のような時刻は時刻部分が失われてしまいます。そのため time フィールドは、2024/05/01 08:15:30+00(UTC)という形式のテキストとして書き出されます。QGIS の時系列コントローラーで使う場合は、式 to_datetime("time", 'yyyy/MM/dd HH:mm:ss') で本来の日時に変換できます。

心拍数、ケイデンス、パワーはフィールドになる

Garmin の腕時計やサイクルコンピューターは、心拍数、ケイデンス、パワー、気温を各トラックポイントの拡張データ(gpxtpx:hr など)として記録します。これらは track_points.shp の hr、cad、power、atemp などのフィールドとして書き出されるので、QGIS でライドを心拍数で色分けできます。トラックの線自体に入るのは、名前、説明文、そのほかのトラックのフィールドだけです。

標高、フィールド名、座標系

各ポイントの ele の値は Z 値になるため、3D のシェープファイル(PointZ、PolylineZ)が得られます。ウェイポイントは ele をフィールドとしても残します。GPX のフィールド名はもともと短いですが、link1_href のようなリンクのフィールドはそのまま残ります。GPX は常に WGS84 なので、投影座標系を選ばない限り、シェープファイルには EPSG:4326 の .prj が付きます。長さをメートル単位で計測するには投影座標系が必要です。

ファイル形式について

GPX

GPX(GPS Exchange Format)は、Garmin、Strava、Komoot などの GPS 機器やアプリが使う XML 形式です。 ウェイポイント、ルート、トラックを、時刻や標高とともに保存できます。現在使われているのは、2004 年に TopoGrafix が公開したバージョン 1.1 です。

  • ウェイポイントは単独の地点、ルートはいくつかの地点を通る計画された線、トラックは記録された経路で、数千のポイントからなることもあります。
  • トラックには、ポイントごとに時刻と標高を持たせることができます。
  • 座標は常に WGS84 の緯度・経度です。
  • GPX のフィールドは名前、説明、シンボル、タイプなど決まったものだけで、それ以外は拡張に入れる必要があります。

Shapefile

Esri シェープファイルは、GIS で最も広く使われているベクター形式です。「シェープファイル」は実際には同じ名前のファイルの集まりで、 .shp にジオメトリ、.shx にインデックス、.dbf に属性テーブルが入り、任意の .prj に座標系、.cpg に文字コードが入ります。

  • 少なくとも .shp、.shx、.dbf が必要です。まとめて選択するか、1つの .zip にしてください。
  • フィールド名は10文字まで、テキスト値は254文字までです。
  • 1つのシェープファイルに入れられるジオメトリタイプは1種類だけです(ポイント、ライン、ポリゴンのいずれか)。
  • .prj ファイルがないと、座標系が不明になります。

よくある質問

zip にはどのファイルが入っていますか?

シェープファイルごとに、.shp(ジオメトリ)、.shx(インデックス)、.dbf(属性)、.prj(座標系)、.cpg(文字コード)が入っています。まとめて保管し、QGIS や ArcGIS では .shp ファイルを追加してください。

トラックの長さを計測するには?

変換する前に、その地域の UTM ゾーンなどの投影座標系を選び、シェープファイルをメートル単位にします。QGIS では式 $length で各トラックの長さが得られます。ArcGIS Pro では Calculate Geometry を使います。標高は計算に含まれないため、坂道では実際の地上での長さが少し長くなります。

変換結果は ArcGIS Pro で開けますか?

はい。ダウンロードしたファイルを展開して、.shp ファイルを追加してください。ArcGIS Pro の Conversion ツールボックスには GPX To Features ツールもありますが、このページなら ArcGIS なしで変換でき、ウェイポイント、ルート、トラックも分けて保てます。複数の記録を先に1つのトラックにまとめるには、「GPX ファイルを結合」を使ってください。

GPX はアップロードされますか?

いいえ。ブラウザーがファイルを読み込み、お使いの端末上でシェープファイルを書き出します。サーバーには何も送られないので、自宅の住所やトレーニングの時間が外に漏れることはありません。