このツールは、国土数値情報のデータとメタデータをPostgreSQL (PostGIS) 用のデータベースに取り込み、すぐに自由な分析ができる状態に整理します。
取り込むデータは、JPGIS2.1準拠整備データ一覧から選ばれ、同一データセットに複数ファイルがある場合は1つのテーブルにまとめます(現状は最新年度のみ対応)。
なお、各データセットには「商用」「非商用」「CC BY 4.0」など利用条件が設定されているため、使用時は十分にご注意ください。(今のところ、非商用データはフィルタされています)
- データの識別子をテーブル名とし、カラム名は日本語へマッピング後となります。
- 位置情報は
geom
カラムに入っています - Feature ID は
ogc_fid
(ogr2ogr により自動生成)
- 位置情報は
datasets
テーブルにメタデータが入っています- メタデータは to-sql シリーズと共通になっています
識別子 P05
からの引用
※ 'admini_boundary_cd' テーブルは別途インポートが必要です(例: 行政区域データ)。
- バイナリをダウンロード
- PostgreSQL + PostGIS を用意
- コマンドを実行: jpksj-to-sql "host=127.0.0.1 dbname=jpksj"
バイナリを 最新リリース からダウンロードするのがおすすめです。
GDAL 3.9以上必要です (ogr2ogr
または ogrinfo
が実行できる環境。 ogrinfo
は -limit
引数使うので、 3.9 が必要です)
jpksj-to-sql "host=127.0.0.1 dbname=jpksj"
macOS の場合、GitHub Release からダウンロードしたバイナリが Gatekeeper によりブロックされることがあります。その場合は、次のコマンドで実行を許可できます: xattr -d com.apple.quarantine ./jpksj-to-sql
インターネット接続、メモリ、SSD転送速度等によって処理時間が大幅に左右します。途中からの続きを再開するために幾つかのオプションがあるので、 jpksj-to-sql --help
で確認してください。
ダウンロードした ZIP ファイルや解凍した shapefile をデフォルトで実行ディレクトリ内 ./tmp
に保存されます。
Docker環境を使うことで、PostgreSQLとGDALの設定を自動化し、簡単に利用することができます。
-
リポジトリをクローンします。
git clone https://github.com/keichan34/jpksj-to-sql.git cd jpksj-to-sql
-
Dockerコンテナをビルドして起動します。
docker compose build docker compose up
-
アプリケーションのログを確認するには:
docker compose logs -f jpksj-to-sql
-
データベースに接続するには:
docker compose exec db psql -U postgres -d jpksj
Docker環境では以下の設定が適用されます:
- PostgreSQL + PostGIS(バージョン15-3.4)がデータベースコンテナとして実行されます
- データベースのデータはDockerボリューム(postgres-data)に保存されます
- ダウンロードファイルはホストマシンの
./tmp
ディレクトリに保存されます - デフォルトのデータベース接続情報:
- ホスト:
db
- ユーザー:
postgres
- パスワード:
postgres
- データベース名:
jpksj
- ホスト:
Rust の開発環境が必要です。構築後、 cargo を使ってください
cargo build
こちらは実験的なツールであり、商用環境での使用は推奨していません。データの実験のために使われているので適当な実装が多いのですが、機能について下記をご覧ください。 「PR歓迎」となっているところは挑戦してみてください。
- 国土数値情報のウェブサイトからデータ一覧の取得
- データのダウンロードおよび解凍
- メタデータの取得およびパース(
shape_property_table2.xlsx
) - メタデータを元に属性名マッピング(shapefileでの
G04a_001
みたいなのを SQL カラム名3次メッシュコード
に変換) - メタデータをデータベース内に保存(
datasets
テーブル参照してください ) - 読み込むデータセットの指定
- 文字コードの認識
- 読み込み失敗しているデータセットはまだある
- VRTによるレイヤー統合から並列処理に変更
- 同一データセット内に複数識別子が存在する時のハンドリング
- 複数年のデータが存在する場合のハンドリング
- PostgreSQL以外のデータベースにも保存
- 部分更新(必要ないかも)
こちらのレポジトリのソースコードには MIT ライセンスのもとで提供されます。
Important
このツールでダウンロード・加工したデータを利用するときに、国土数値情報の利用規約を確認した上で利用ください。