GPX を GeoJSON に変換

GPS デバイス、Strava、Garmin Connect の GPX のウェイポイント、ルート、トラックを GeoJSON に変換し、標高を3番目の座標として残し、空のフィールドを省きます。変換はブラウザー内で行われ、アップロードされません。トラックは1つの MultiLineString になり、心拍数、ケイデンス、パワーは読み込まれず、時刻はすべてのトラックポイントを含めた場合だけ残ります。

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

要点

GPX を GeoJSON に変換する理由

GPX は、記録したハイキングやサイクリング、ランニングを GPS デバイス、Strava、Garmin Connect、Komoot から取り出すときの標準的な形式です。その記録を Leaflet や MapLibre の地図に表示したり、D3 で標高グラフを描いたり、PostGIS などのデータベースに読み込んだりするなら、GeoJSON が便利です。このコンバーターは GPX のウェイポイント、ルート、トラックを読み込み、各ポイントの標高を3番目の座標にして GeoJSON のフィーチャーとして書き出します。GPX には magvar、hdop、link2_type など、ほとんどの場合空のままの標準フィールドが数多くあります。値が入っているフィールドだけを残すので、プロパティがすっきりします。処理はすべて GDAL を使ってブラウザー内で行われ、ファイルはアップロードされません。

GPX を GeoJSON に変換する方法

  1. .gpx ファイルをボックスにドロップするか、クリックして選択します。
  2. 地図でトラックを確認し、時刻つきのすべてのトラックポイントも必要なら、チェックボックスをオンにします。
  3. 「GeoJSON に変換」をクリックし、GeoJSON ファイル、またはデータの種類ごとのファイルをまとめた zip をダウンロードします。

変換で変わること

データの種類ごとに1つの GeoJSON ファイル

GPX にはウェイポイント、ルート、トラックを同時に入れることができ、それぞれフィールドが異なります。これらは waypoints.geojson、routes.geojson、tracks.geojson という別々のファイルになり、zip にまとめられます。Strava やウォッチから書き出したファイルの多くのようにトラックしか入っていない場合は、GPX と同じ名前の GeoJSON が1つできます。

トラックは MultiLineString になる

GPX のトラックはセグメントで構成され、記録を一時停止したときや信号が途切れたときに新しいセグメントが始まります。こうした途切れを保つため、各トラックはセグメントごとに1本の線を持つ1つの MultiLineString フィーチャーになります。ルートは1つの LineString、ウェイポイントは Point になります。

標高は3番目の座標

ele タグの標高は、RFC 7946 で認められているとおり、各座標の3番目の値になります(例:[12.504, 55.77, 38])。ウェブ地図では無視されますが、標高グラフや3D 表示で使えます。標高のないポイントは2つの値のままです。ウェイポイントの標高は ele プロパティとしても残ります。

タイムスタンプにはトラックポイントが必要

GeoJSON の線には、ポイントごとの時刻を入れる場所がありません。「すべてのトラックポイントを時刻と標高つきで含める」をオンにすると、track_points.geojson というファイルが追加されます。記録されたポイントごとに1つの Point フィーチャーがあり、時刻、標高、トラック番号、セグメント番号がプロパティとして入ります。このファイルは大きくなることがあり、1秒ごとに記録した2時間のライドなら7,000ポイントを超えます。

デバイスの拡張データは読み込まれない

ウォッチやサイクルコンピューターが各ポイントに拡張データとして保存する心拍数、ケイデンス、パワー、気温は、出力に含まれません。ウェイポイントの名前、説明文、シンボル、種類は残ります。

ファイル形式について

GPX

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

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

GeoJSON

GeoJSON は地理的なフィーチャーを表すプレーンテキストの JSON 形式で、2016 年に RFC 7946 として標準化されました。 Leaflet、MapLibre、Mapbox などのウェブ地図や、多くの API が標準で使う形式です。

  • 座標は WGS84 の経度、緯度の順です。
  • ポイント、ライン、ポリゴンを1つのファイルに混在させることができます。
  • プロパティには任意の JSON 値を使え、フィールド名の長さに制限はありません。

よくある質問

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

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

zip がダウンロードされたのはなぜですか?

GPX にウェイポイントとトラックなど、複数の種類のデータが入っているためです。種類ごとに別の GeoJSON ファイルになります。GeoJSON は1つのファイルにポイントと線を混在させられるので、地図で1つのファイルが必要なら、あとで結合できます。

GeoJSON を geojson.io や QGIS で開けますか?

はい。出力は WGS84 の経度・緯度を使う RFC 7946 準拠で、geojson.io、QGIS、Leaflet、MapLibre、GitHub のどれでも読み込めます。

ルートポイントはどうなりますか?

ルートのポイントはすでにルートの線の頂点になっているため、別のフィーチャーとして重ねて書き出すことはしません。