LoginSignup
78
72

More than 3 years have passed since last update.

日本の地域メッシュを生成するPythonモジュールを公開しました

Last updated at Posted at 2020-08-20

更新情報

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次、白:4次(3次を4分割)
01.png

青:5次、黒:7次(5次を25分割)
スクリーンショット 2020-08-18 17.28.12.png

  • 3次まではhttps://www.stat.go.jp/data/mesh/pdf/gaiyo1.pdfに従う
  • 4次以降は以下のルールに基づき上位メッシュのコードに対し、末尾に2桁ずつコードを付加する(上記画像のとおり)
    • 左下を00とする
    • 上方向にひとつ進むと10、ふたつ進むと20…とする
    • 右方向にひとつ進むと01、ふたつ進むと02…とする

78
72
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
78
72