はじめに
本記事では、政府統計の総合窓口(e-Stat)にて公開されている、2020年国勢調査小地域(町丁・字等及び基本単位区)の境界データから、PMTiles形式のデータを生成する方法について説明します。
PMTilesの特徴
- 単一ファイル形式のタイルデータ
- 地球規模のタイルマップの保存
- S3 のようなストレージとHTTP Range Requestsのみを使用
PC環境
OS:Windows 10 Pro
CPU:Intel(R) Core(TM) i7-9700
メモリ:32GB
前提条件
- 以下のPythonのツールより2020年国勢調査小地域(町丁・字等及び基本単位区)の境界データ(JGD2011、シェープファイル(以下、SHP))をダウンロードし、解凍済みであること。
- SHPを一括ダウンロードするツール
- WSL(Ubuntu-20.04)がインストール済みであること。
- tippecanoeがインストール済みであること。
- Windows 10へのtippecanoeのインストール方法は以下のとおりです。
※ただし、git clone https://github.com/mapbox/tippecanoe.git
の箇所をgit clone https://github.com/felt/tippecanoe.git
への変更が必要です。
- tippecanoeのバージョンはv2.23.0です。
SHPからGeoJSONを生成
- SHPからGeoJSONの生成にはQGISを使用します。
- 町丁・字等は都道府県単位、基本単位区は市区町村単位のSHPです。
- 上部のメニューよりベクタ>データ管理ツール>ベクタレイヤのマージで、町丁・字等及び基本単位区の境界データ(JGD2011、SHP)をマージします。
- なお、マージ後にベクタ>ジオメトリツール>重心で境界データの重心データも作成します。
GeoJSONからPMTilesを生成
- GeoJSONからPMTilesの生成にはfeltのtippecanoeを使用します。
- WSLを起動して、以下のコマンドを実行します。
- GeoJSONは以下のとおりです。
r2ka01-47_JGD2011.geojson:町丁・字等・境界データ(ポリゴン)
r2ka01-47_point_JGD2011.geojson:町丁・字等・重心データ(ポイント)
r2kb01-47_JGD2011.geojson:基本単位区・境界データ(ポリゴン)
r2kb01-47_point_JGD2011.geojson:基本単位区・重心データ(ポイント)
tippecanoe -o r2ka01-47_JGD2011.pmtiles r2ka01-47_JGD2011.geojson -Z10 -pf -pk -P
tippecanoe -o r2ka01-47_point_JGD2011.pmtiles r2ka01-47_point_JGD2011.geojson -Z10 -pf -pk -P
tippecanoe -o r2kb01-47_JGD2011.pmtiles r2kb01-47_JGD2011.geojson -Z12 -pf -pk -P
tippecanoe -o r2kb01-47_point_JGD2011.pmtiles r2kb01-47_point_JGD2011.geojson -Z12 -pf -pk -P
- tippecanoeのオプション
-Z10:ズームレベル10以上のみを生成
-Z12:ズームレベル12以上のみを生成
-pf:地物数制限を無視する(1タイルあたり200,000フィーチャに制限しない)
-pk:ファイルサイズ制限を無視する(1タイルあたり500Kバイトに制限しない)
-P:並列読み込み
ただし、下記の記事によると、-Pオプションが有効なのは、GeoJSONSeqのみのようです。
生成したPMTilesの確認
- 生成したPMTilesの確認には、PMTiles Viewerが便利です。
- PMTilesをドラッグ&ドロップすると、フィーチャが地図上に表示されます。
PMTilesの配布
- 上記の方法で作成した、PMTiles形式の境界データ(町丁・字等及び基本単位区)は、以下のGitHubにて配布しています。
2020Kokusei-PMTiles
デモサイト
- また、PMTiles形式の境界データ(町丁・字等及び基本単位区)は、MapLibre GL JSで作成した、デモサイトにて閲覧ができます。
参考情報