GPX ファイルを QGIS に読み込む方法
QGIS は GPX ファイルを変換なしでそのまま開けますが、ほかの GIS ソフトと同じように、開いた瞬間にまず「ファイルのどの部分がほしいのか」を聞いてきます。というのも、ひとつの GPX ファイルは実はひとつのデータではなく、複数のデータがひとまとまりになったものだからです。ウェイポイント、ルート、トラックはそれぞれ違う種類の地理データで、QGIS には「ひとつのレイヤーにはひとつの種類のデータしか入れない」というルールがあり、記録された山行のデータはまさにそのルールに引っかかります。なぜこの分岐が起きるのかを知っていれば、読み込み自体は十秒もかかりません。
簡単に言うと
QGIS で「レイヤ」メニューから「レイヤの追加」、「ベクタレイヤの追加」と進み、.gpx ファイルを選びます。ファイルを地図のキャンバスにドラッグ&ドロップしても同じことが起きます。すると QGIS は、そのひとつのファイルに入っているサブレイヤーの一覧を表示します——waypoints(ウェイポイント)、routes(ルート)、route_points(ルート上の点)、tracks(トラック)、track_points(トラック上の点)です。GPS アプリで記録した山行であれば、選ぶべきは tracks で、山行全体をひとつながりの線として読み込めます。あるいは track_points を選べば、記録された点をひとつひとつ、それぞれ独立したデータ行として読み込めます。
これにはプラグインもファイル変換も必要ありません。GPX を読む機能は QGIS に最初から組み込まれていて、ほかの何十種類もの地理データ形式を読むのと同じ内部の仕組みを使っています。GPX ファイルは XML としてはかなり小さいので、何時間分もの長い記録でも、ほぼ一瞬で開きます。
なぜひとつのファイルが五つのレイヤーに分かれるのか
QGIS のベクタレイヤーは、ほかの多くの GIS ソフトと同じく、ひとつの種類のジオメトリを前提に作られています——点のテーブルか、線のテーブルか、どちらか一方であって、ひとつのデータセットの中に両方が混ざることは想定されていません。ところが GPX ファイルは、そんな境界をまったく気にせず作られています。ひとつのファイルの中に、単独のウェイポイントの一覧、計画済みのルートがひとつ以上、記録済みのトラックがひとつ以上、それらすべてが同居していることがあり、しかもウェイポイントは点、トラックは線です。QGIS はどれがほしいのか勝手に推測したり、まったく種類の違うデータをひとつの分かりにくいテーブルに黙って混ぜ合わせたりする代わりに、見つかった種類をすべて一覧で示して、実際に必要なものだけを選んで読み込ませてくれます。
これは、GPX のトラックとルートの違いを説明したガイドや、ウェイポイントとトラックポイントの違いを説明したガイドで扱っている区別と同じものです。QGIS が新しい区別を作り出しているわけではなく、もともとファイルの中にあった区別を、そのまま表に出しているだけです。
記録した山行にはどのレイヤーを選ぶべきか
tracks — 山行をひとつながりの線として
このレイヤーには、ファイル内の <trk> ひとつにつき一件の地物が入り、記録されたすべての点を順番どおりにつないだ線として描かれます。ひとつの山行なら、通常はこれがひとつの線になり、ハイキングアプリの地図で見るのと同じ形になります。属性テーブルには名前や説明などトラック全体の情報が入り、点ひとつひとつのデータ行があるわけではありません。線全体がひとつの地物だからです。
track_points — 記録された点をひとつひとつ
このレイヤーは、線全体でひとつの地物ではなく、記録された点ひとつにつき一件の地物として入ります。それぞれの行には、その点について GPX ファイルに保存されていた内容——緯度、経度、そして元の記録に含まれていれば標高とタイムスタンプ——がそのまま入ります。線の形ではなく個々の読み取り値そのものが必要なとき、たとえば標高を自分でグラフにしたい、特定の二点間の時間差を確認したい、記録のある区間だけに絞り込みたいといった作業には、このレイヤーを使います。
waypoints と routes
この二つも同じファイル一覧の中に出てきますが、記録された山行にはほとんど当てはまりません。ウェイポイントは連続した記録ではなく、単独で印をつけた地点で、ルートは実際に歩いた軌跡ではなく、計画された立ち寄り地点の並びです。ハイキングアプリから書き出された GPX ファイルは、ほぼすべてがトラックでできているので、これらのレイヤーは空か、あってもわずかな点しか入っていないのがふつうです。
読み込まれるもの、読み込まれないもの
位置情報、そしてファイルにあれば標高とタイムスタンプは、読み込みでそのまま引き継がれます。QGIS が形式に含まれていたものを丸めたり捨てたりすることはありません。標高と各点のタイムスタンプは track_points レイヤーにあり、tracks レイヤーにはありません。ひとつの線という地物には、頂点ごとに違う値を持たせる仕組みがそもそもないからです。tracks レイヤーを開いて時間の列を探し、テーブルがほとんど空だと感じた人は、たいてい点のレイヤーではなく線のレイヤーを読み込んでいます。
どのレイヤーを選んでも読み込まれないのは、そもそも GPX という形式に対応する項目がないものです。歩いている途中に撮った写真や動画クリップ、音声メモは、GPX ファイルの中身とは別の独立したファイルであり、この形式が持っているのは座標と標高とタイムスタンプだけです。QGIS に山行を読み込むと、線の形とその裏にある数字は手に入りますが、その道中で実際にどう見えたか、どんな音がしたかという記録までは入ってきません。
つまずきやすいところ
- tracks レイヤーを読み込んで、属性テーブルに標高も時間もないと戸惑う——そのデータは track_points 側にあります。線全体でひとつの地物には、点ごとに違う値を持たせられないためです。
- 一本の線であるはずのトラックが、いくつかの途切れた破片に分かれて見える——たいていは元の GPX に複数のトラックセグメントが入っていて、多くの場合は記録中の一時停止が原因です。QGIS はそのセグメントをひとつの途切れない線に無理やりつなげず、記録どおり忠実に描いています。
- 標高の値がまとまってずれて見える——元のファイルが標高をメートルで保存していたかフィートで保存していたかを確認してください。QGIS はファイルの中身をそのまま表示するだけで、単位の変換は一切行いません。
- 山行全体を期待していたのに、ぽつぽつとした点しか出てこない——これは waypoints や route_points のレイヤーを、tracks や track_points の代わりに選んでしまったときに起きます。まったく違う、ずっとまばらな種類のデータだからです。
TrailCam との関係
TrailCam は iPhone でハイキング、ウォーキング、サイクリングの軌跡を途切れない GPS トラックとして記録し、GPX 1.1 として——ひとつの山行としても、履歴全体としても——書き出せます。CSV としての書き出しも可能です。その GPX ファイルこそ、地図と合計の数字だけでは飽き足らず、独自の分析や自分で組み立てた地図まで踏み込みたい人にとって、QGIS のようなツールが読み込むために作られているものです。そうした GIS 作業をするほどでない場面では、アプリ自体がすでに距離、行動時間、ペース、獲得標高を表示し、道中で紐づけた写真や動画クリップ、音声メモとともにルートを再生してくれます。書き出し機能はオプションの TrailCam Pro アップグレードに含まれます。アプリ本体はダウンロード無料です。
よくある質問
- QGIS で開く前に、GPX ファイルをほかの形式に変換する必要はありますか?
- いいえ。QGIS は組み込みのベクタデータ機能を通じて GPX を直接読み込めます。ほかの多くの地理データ形式を読むのと同じ仕組みで、変換もプラグインも必要ありません。
- GPX ファイルを QGIS に読み込むと、なぜ五種類ものレイヤーが出てくるのですか?
- ひとつの GPX ファイルには、ウェイポイント、ルート、ルート上の点、トラック、トラック上の点がまとめて入っていることがあり、これらは点と線という違う種類の地理データなので、ひとつのテーブルにまとめることができません。QGIS はどれがほしいのか推測する代わりに、見つかった種類をすべて一覧に出します。
- 山行の各点の標高とタイムスタンプは、QGIS のどのレイヤーに入っていますか?
- tracks ではなく track_points です。tracks レイヤーは山行全体をひとつながりの線として描き、トラック全体に関する情報しか持ちません。各点の標高とタイムスタンプは track_points レイヤーのほうにあり、記録された点ひとつにつき一行として入っています。
自分のルートを記録する
TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。