GeoPackageファイルとは?
GeoPackageは、地理データを保存するためのオープンなファイル形式です。コンテナとしてSQLiteデータベース形式を使用しているため、1つの.gpkgファイルの中に、ポイント、ライン、ポリゴンとその属性、座標系、さらには背景地図のタイルまでを、すべてまとめて格納できます。この形式は、KMLやWMSを策定したのと同じ標準化団体であるOpen Geospatial Consortium(OGC)によって管理されています。そのため、この仕様に従ったソフトウェアであれば、作成者が誰であっても同じ方法でGeoPackageファイルを読み込むことができます。
ファイル内でジオメトリがどのように保存されるか
GeoPackage内のすべてのポイント、ライン、ポリゴンは、BLOB列に1つのバイナリ値として保存されます。この値は、座標系とオプションのバウンディングボックスを記録した数バイトの小さなヘッダーから始まり、その後にWell-Known Binary(WKB)形式で形状そのものが続きます。これはPostGISをはじめとするほとんどの空間データベースで使われているのと同じバイナリジオメトリ符号化方式です。この選択には意味があります。標準のWKBを読み込む方法を既に知っているツールであれば、その上にあるGeoPackageヘッダーを処理するために数行のコードを追加するだけで済みます。このビューアがブラウザ内でデータを直接デコードしているのも、まさにこの仕組みによるものです。
実際の活用例
GeoPackageは、GIS関連の作業において一般的な標準形式になっています。このビューアが役立つ場面を紹介します。
表示しているデータを書き出す
"Download Table as GeoJSON"をクリックすると、現在読み込まれているテーブルを、ジオメトリがデコードおよび再投影された状態で、標準的なGeoJSONファイルとして保存できます。色などのスタイル変更は地図の表示にのみ影響し、書き出されるファイルには反映されません。GeoJSONは、QGIS、ArcGIS、Leaflet、Mapbox GL JSをはじめ、事実上あらゆる最新の地図作成ツールで問題なく開くことができます。
GeoPackageの内部構造とコアテーブル
GeoPackageはSQLiteデータベースであるため、それを開くということは、単にそのテーブルを読み込むことを意味します。gpkg_というプレフィックスが付いた少数の必須テーブルが、ファイル内の他のすべての内容を記述しています。gpkg_contentsは目次のような役割を果たし、すべてのレイヤーを、その範囲(バウンディングボックス)や最終更新日時とともに一覧表示します。gpkg_geometry_columnsは、どのテーブルのどの列に実際にジオメトリが格納されているか、またどのような形状タイプが格納されているかを記録します。gpkg_spatial_ref_sysは、ファイルが参照する座標系の定義を保存しており、デフォルトで常にWGS84を含みます。ラスターデータについては、gpkg_tile_matrixとgpkg_tile_matrix_setが、gpkg_geometry_columnsがベクターレイヤーを記述するのと同じように、タイルピラミッドの各ズームレベルを記述します。オプションのgpkg_extensionsテーブルには、ファイルが使用する追加の非コア機能が一覧表示されており、読み込み側は、データの解析を始める前に、そのファイルがどのようなものかを常に把握できます。
手順









データの色を変更する
サイドバーにある3つのコントロールを使えば、元のファイルに手を加えることなく、テーブル全体のスタイルを即座に変更できます。
- 色: スウォッチまたはカラーピッカーから任意の色を選択します。ライン、ポリゴンの塗りつぶしと輪郭、ポイントマーカーにすぐに適用されます。
- 線の太さ: 輪郭線やラインを、極細のヘアラインから、ポスターにも使えるような太いストロークまで、細くしたり太くしたりできます。
- 塗りつぶしの不透明度: ポリゴンの塗りつぶしを、薄く透けた色から完全に不透明な色まで、どの程度はっきり見せるか調整できます。
変更はすべて、すでに地図上にあるテーブルにリアルタイムで反映されるため、決定する前に数秒でいくつかの見た目を試すことができます。
GeoPackageにおける座標系
GeoPackageは、必ずしも単純な緯度経度を使う必要はありません。gpkg_spatial_ref_sysテーブルには、地域ごとの図法やWeb Mercatorを含む、任意の座標系を登録できます。それぞれの座標系は、各ジオメトリテーブルに付与された数値のSRS idによって識別されます。このツールを含め、データを一般的なWebマップ上に表示したい読み込み側は、そのSRS idを調べ、座標がまだWGS84でない場合は再投影する必要があります。正しく構成されたGeoPackageには、ビューアが推測に頼ることなく、データを地球上の正しい位置に配置するために必要な情報がすべて含まれています。
GeoPackageは今どのように使われているか
QGISはバージョン3.0以降、GeoPackageをデフォルトの保存形式として採用しており、新しいレイヤーやプロジェクトの推奨形式としてShapefileに取って代わっています。QFieldやMergin Mapsといったフィールドデータ収集アプリは、調査結果をGeoPackageファイルとして書き出します。これは、1つのファイルであればネットワーク接続がなくても、スマートフォンやタブレットとの間で同期しやすいためです。政府の地図作成機関や防衛関連組織は、データ交換においてGeoPackageを要求または推奨するケースが増えており、INSPIREディレクティブに基づくヨーロッパのデータ共有ガイドラインでも、空間データセットの容認された符号化方式として挙げられています。ArcGISでもサポートされている形式であるため、オープンソースと商用のGISワークフローをつなぐ共通の橋渡し役にもなっています。GeoPackageは事前にレンダリングされた地図タイルも保持できるため、電波が届かない環境で動作する必要のあるナビゲーションアプリやフィールドアプリ向けに、オフラインのベースマップ全体をパッケージ化する手段としても広く使われています。
クリックしてすべての属性を確認する
地図上の任意のポイント、ライン、ポリゴンをクリックすると、ポップアップが開き、その行に格納されているすべての列の値、つまり名前、カテゴリ、数値、日付など、生のジオメトリ自体を除くテーブルが保持するあらゆる情報が表示されます。クリックした地物には明るいハイライトの輪郭も付くため、密集していたり重なり合っていたりするテーブルでも、そのポップアップがどの形状に対応しているのか常にはっきりとわかります。
GeoPackageがShapefileに取って代わった理由
20年以上にわたり、Esri Shapefileはベクター地図データを共有する際の標準的な方法でした。しかし、実際には限界があります。1つのShapefileは単一のジオメトリタイプしか保持できず、属性フィールド名は10文字までに制限され、1つのデータセットが.shp、.dbf、.shxなど3つ以上の別々のファイルに分割され、さらに実質的に2GBというサイズ上限もあります。GeoPackageはこれらの問題をすべて解決します。1つの.gpkgファイルには、異なるジオメトリタイプが混在する複数のレイヤーを、長いフィールド名のまま格納でき、実際のほとんどのプロジェクトで問題になるようなサイズ上限もありません。すべてが1つのファイルにまとまっているため、コピーやメール送信、アップロードも簡単です。
複数のテーブルを扱う
1つのGeoPackageには、地図化する価値のあるテーブルが複数含まれていることがよくあります。例えば、調査ポイントのレイヤーと敷地境界のレイヤーが一緒に入っているような場合です。サイドバーのTablesリストには、ファイル内で見つかったすべてのテーブルが、登録済みのジオメトリレイヤー、緯度経度の列が検出されたテーブル、位置データを持たないテーブルのいずれかに分類されて表示されます。タグ付けされたテーブルをクリックすると、それまで表示されていたものの代わりに、そのテーブルが地図上に読み込まれます。
テーブルに、それとわかる名前の緯度経度の列がない場合は、小さなパネルが表示され、正しい2つの列を手動で選択できます。これは、このサイトのCSV to Mapツールと同じ仕組みです。そのため、"y_coord"や"pos_lng"のような珍しい列名を使っているテーブルも見逃されることはありません。
データを地図に表示する2つの方法
都合の良い方法で、GeoPackageをツールに開いてください。
- アップロードまたはドラッグ&ドロップ: "Upload"をクリックして.gpkgファイルを選択するか、ファイルをファイルブラウザから直接地図上にドラッグします。
- サンプルデータを試す: "Sample Data"をクリックすると、登録済みのジオメトリテーブルと単純な緯度経度テーブルを持つ小さなデモ用GeoPackageが作成され、読み込まれます。これにより、クリック、色付け、テーブルの切り替えをすぐに試すことができます。
ファイルが読み込まれると、ツールはサイドバーに使用可能なすべてのテーブルを一覧表示し、最適なテーブル(登録済みのジオメトリテーブルがあればそれ、なければ緯度経度の列が認識できる最初のテーブル)を自動的に描画し、そのデータに合わせて地図をズームします。リスト内の他のテーブルをクリックすると、そちらに切り替えられます。
GeoPackage規格の簡単な歴史
OGCは2014年、GeoPackage符号化規格の最初のバージョンを採用しました。これは、地理データをより良い方法でまとめる方法を模索していたGISベンダーと政府機関のグループによる、数年にわたる作業の成果です。目標は、専用ドライバや有料ライセンスを必要とせず、通常のSQLを使ってどんなアプリケーションでも読み書きできる形式を作ることでした。最初のリリース以降、この規格は複数回改訂され、オプションの拡張機能を通じて、リンクされた属性テーブルやタイル化された標高データなどのサポートが追加されています。それでいてコアとなるファイル構造は安定したまま保たれているため、古いソフトウェアでも新しいファイルを読み込むことができます。
動画で見る — 1分でわかるGeoPackage ビューアー
読むより見るほうが早いという方のために、短い動画を用意しました。GeoPackageファイルのアップロード、レイヤーの地図表示、そして表示内容のエクスポートまで、一通りの流れを紹介しています。
よくある質問
その他のおすすめツール
Map tiles © OpenStreetMap contributors and Protomaps (hosted by KONAKTIVE), CARTO, Esri (satellite). Database reading powered by sql.js. Map rendering by Leaflet. All file reading and rendering is local, no data is uploaded to any server.
