更新情報
2020/11/23
- 5mメッシュへの対応
- 別称は250, 125...から、250m, 125m...に変更
2020/09/04
以下の2点が修正されました。この事で、一部互換性が失われた箇所があります(コード規則、メッシュ番号)。詳しくはリポジトリのREADMEをご覧ください。
- 100m、10mメッシュへの対応
- 分割地域メッシュのコード割り振り規則の見直し(@warenashiさんありがとうございました)
TL;DR
- 日本の標準地域メッシュを生成するPythonモジュールをOSSとして公開しました
- 50mまでのよく使われる単位のメッシュを生成出来ます
- 試験的に作成したRust版も含みます
標準地域メッシュとは?
地域メッシュ(ちいきメッシュ)とは、統計に利用するために、緯度・経度に基づいて地域をほぼ同じ大きさの網の目(メッシュ)に分けたものである。メッシュを識別するためのコードを地域メッシュコードと言う。
地域メッシュ - Wikipedia
公開する理由
- 地域メッシュを50mまで生成出来て手軽に使えるOSSはなさそうだったので
- 様々な機会で地域メッシュが必要になるケースは多く、様々な方がその都度開発していると思われるので
japan-mesh-tool
https://github.com/MIERUNE/japan-mesh-tool
MITライセンスのもと頒布します。
実行環境
- Python3.8で開発(3系なら動くと思います)
- 標準モジュールのみを使用しています(依存なし)
機能
①メッシュ次数②領域(経緯度)から、メッシュデータをgeojsonl形式で出力します。
geojsonl形式:geojsonをFeature単位で行区切りしたテキストファイル、GeoJSONSeqとも言う
対応メッシュ次数
次数 | 別称 | 詳細 | メッシュコード |
---|---|---|---|
1 | - | 80kmメッシュ | 4桁 |
2 | - | 10kmメッシュ | 6桁 |
3 | - | 1kmメッシュ | 8桁 |
4 | 500 | 500mメッシュ | 10桁 |
5 | 250 | 250mメッシュ | 12桁 |
6 | 125 | 125mメッシュ | 14桁 |
7 | 50 | 50mメッシュ | 14桁 |
使い方(Python)
python python/japanmesh/main.py <meshnum:メッシュ次数> <-e:領域指定、"カンマ区切り経緯度 カンマ区切り経緯度"形式で指定> <-d:保存先>
コマンド例
python python/japanmesh/main.py 5 -e 142.2,44.0 142.3,44.5 -d ./
4次メッシュ以上は別称で指定する事が出来ます
python python/japanmesh/main.py 250 -e 142.2,44.0 142.3,44.5 -d ./
領域、保存先は省略可能です。
その場合、全国分の1次メッシュをカレントディレクトリに出力します。
python python/japanmesh/main.py 1
3次メッシュ以上は総メッシュ数が膨大なので、大きい領域を指定すると処理に時間がかかります。
使い方(Rust, 試験的)
処理速度改善のため、試験的にRustで同じ処理を書きました。rust/japanmeshがコンパイル済みのバイナリです(Windowsはrust/japanmesh.exe)。
rust/japanmesh <meshnum:メッシュ次数> <領域指定(省略可)>
常にカレントディレクトリにgeojsonlファイルを出力します。
コマンド例
macOS(64bit)
rust/japanmesh 5 142.2,44.0 142.3,44.5
または領域を省略して
rust/japanmesh 3
Pythonモジュールとして
- ./python/japanmesh自体をPythonモジュールとしてimport可能です
- その場合、get_meshes()関数のみを使用可能です
(使用例は./python/sample.pyを参照)
メッシュの生成ルール
- 3次まではhttps://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdfに従う
- 4次以降は以下のルールに基づき上位メッシュのコードに対し、末尾に2桁ずつコードを付加する(上記画像のとおり)
- 左下を00とする
- 上方向にひとつ進むと10、ふたつ進むと20…とする
- 右方向にひとつ進むと01、ふたつ進むと02…とする