GeoJSON を GeoPackage に変換

GeoJSON ファイル(複数可)を、QGIS や ArcGIS Pro 用の1つの GeoPackage(.gpkg)に変換します。各ファイルは型付きフィールド、座標系、空間インデックスを持つレイヤーになります。処理はブラウザー内で行われ、アップロードされません。ポイント、ライン、ポリゴンの混在はタイプ別のレイヤーに分け、入れ子の値は JSON テキストにします。ほかの座標系の GeoJSON は、別の座標系を指定しない限りそのまま保持します。

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

要点

GeoJSON を GeoPackage に変換する理由

ウェブ地図、API、geojson.io、スクリプトが出力するのは GeoJSON ですが、GIS のプロジェクトで使うには遅いプレーンテキストの形式です。空間インデックスがなく、数値もすべてテキストとして保存され、1つのファイルには1つのレイヤーしか入りません。QGIS の標準形式であり、ArcGIS Pro でも読み込みと編集ができる OGC 標準の GeoPackage は、いくつものレイヤーを本来のフィールド型とインデックス付きで1つの SQLite ファイルに収めるので、大きなレイヤーでもすばやく描画・フィルターできます。このページは、QGIS の土台でもあるオープンソースのライブラリ GDAL を使って、GeoJSON から GeoPackage をブラウザー内で直接書き出します。複数の GeoJSON ファイルをまとめてドロップすると、ファイル名の付いたレイヤーとして同じ .gpkg に入るので、データセット全体を1つのファイルにまとめて受け渡すのに便利です。

GeoJSON を GeoPackage に変換する方法

  1. 1つまたは複数の .geojson または .json ファイルをボックスにドロップするか、クリックして選択します。
  2. 地図でレイヤーを確認します。必要なら「出力の座標系」を指定します。
  3. 「GeoPackage に変換」をクリックし、.gpkg を QGIS や ArcGIS Pro で開きます。

変換で変わること

ポイント、ライン、ポリゴンの混在

GeoJSON の FeatureCollection にはジオメトリタイプを混在させられますが、QGIS でスタイルを設定したり編集したりしやすいのは、タイプが1つだけのレイヤーです。そのため、タイプが混在するファイルは parks_points と parks_polygons のようにタイプごとのレイヤーになり、フィールドは共通です。ラインとポリゴンはマルチパート型(MultiLineString、MultiPolygon)で保存されるので、シングルパートとマルチパートの図形が同じレイヤーに収まり、高さ(Z)も保持されます。ジオメトリコレクションとジオメトリのない地物は、捨てられずに名前の末尾が _other のレイヤーに入ります。

フィールドの型

GDAL は各プロパティの型を値から判断します。整数は整数フィールド、小数を含む数値は実数フィールド、true/false はブール型、2024-05-01 のような値は日付フィールドになります。数値とテキストが混在するプロパティはテキストフィールドになります。API のレスポンスによくある入れ子のオブジェクトや配列は JSON テキストとして保存され、QGIS ではそのまま表示されます。

座標系

RFC 7946 以降の GeoJSON は常に WGS84 の経度・緯度で、GeoPackage には EPSG:4326 が設定されます。RFC 7946 より前に作られ、「crs」メンバー(各国の国家座標系など)を持つファイルは、その座標系のままです。「crs」がなく、座標が明らかにメートル単位(投影座標系の QGIS プロジェクトからの書き出しなど)のファイルは WGS84 として読まず、座標系の入力を求め、合う候補を表示します。出力の座標系を入力すると、変換と同時にレイヤーを再投影します。

無効なジオメトリ

手で描いたデータによくある自己交差のあるポリゴンは、QGIS やデータベースで受け付けられるよう、変換中に GDAL の makevalid で修復されます。有効な図形は変更せずに書き出されます。

ファイル形式について

GeoJSON

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

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

GeoPackage

GeoPackage は 2014 年に策定された、SQLite をベースにした OGC のオープン標準です。QGIS の標準形式で、 複数のレイヤー、任意の座標系、長いフィールド名を1つのファイルに収められます。

  • 1つのファイルに、複数のベクターレイヤーやテーブル、ラスタータイルを入れられます。
  • シェープファイルと違い、フィールド名に10文字の制限がありません。
  • 各レイヤーの座標系をファイル内に保存するため、別の .prj は不要です。
  • シェープファイルの .shp や .dbf と違い、レイヤーごとの 2 GB のサイズ制限がありません。

よくある質問

複数の GeoJSON ファイルを1つの GeoPackage にまとめられますか?

はい。すべてのファイルをまとめて選ぶか、ドロップしてください。各ファイルが、同じ .gpkg 内でファイル名の付いた別々のレイヤーになります。

QGIS で使うのに、なぜ GeoJSON を GeoPackage に変換するのですか?

QGIS は GeoJSON を開けますが、テキストファイル全体を読み込む必要があり、空間インデックスもありません。GeoPackage はすばやく開き、安全に編集でき、フィールドの型と複数のレイヤーを1つのファイルに保持します。QGIS 自身の標準形式でもあります。

ArcGIS Pro で GeoPackage を開けますか?

はい。ArcGIS Pro は GeoPackage を直接読み込んで編集できます。カタログ ウィンドウで .gpkg を追加し、レイヤーを地図にドラッグしてください。

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

いいえ。GDAL が WebAssembly としてブラウザー内で動作し、GeoPackage はお使いのコンピューター上で書き出されます。

GeoPackage から元に戻せますか?

はい。GeoPackage ビューアーではレイヤーを地図と属性テーブルで確認でき、GeoPackage をシェープファイルに変換するツールでは各レイヤーをシェープファイルとして書き出せます。