Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

更新情報

2020/11/23

  • 5mメッシュへの対応
  • 別称は250, 125...から、250m, 125m...に変更

2020/09/04

以下の2点が修正されました。この事で、一部互換性が失われた箇所があります(コード規則、メッシュ番号)。詳しくはリポジトリのREADMEをご覧ください。

  • 100m、10mメッシュへの対応
  • 分割地域メッシュのコード割り振り規則の見直し(@warenashiさんありがとうございました)

TL;DR

https://github.com/MIERUNE/japan-mesh-tool

  • 日本の標準地域メッシュを生成する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…とする

https://qiita.com/Kanahiro/items/0ac3ccfdaf19155ece9c

Kanahiro
GISを中心に勉強中、いろいろ作っています。
https://kiguchi999.hatenablog.com/
MIERUNE
位置情報に関する様々な技術情報やTipsをMIERUNEのメンバーがお届けします。位置や可視化に関するご相談がございましたらぜひご連絡ください!
https://mierune.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away