地図やGIS(地理情報システム)を扱っていると、「メッシュコード」という用語に出会うことがあります。統計データの分析、位置情報サービスの開発、防災計画の策定など、幅広い分野で利用される地域メッシュコードですが、その仕組みを正しく理解している方は意外と多くありません。
この記事では、メッシュコードの基本的な定義から、1次``〜5次メッシュの種類と一覧、コードの計算方法、緯度経度との変換方法、実際の検索・調べ方まで、網羅的に解説します。
メッシュコードとは
メッシュコード(地域メッシュコード) とは、日本全国の地域を緯度・経度に基づいて格子状(メッシュ)に分割し、各区画に一意のコード番号を付与したものです。正式にはJIS規格「JIS X 0410 地域メッシュコード」として定められており、昭和48年に行政管理庁告示で制定された「統計に用いる標準地域メッシュ及び標準地域メッシュ・コード」が基になっています。
メッシュコードには以下のような特徴があります。
- 統一的な区``画: 全国どこでも同じルールで地域が分割されるため、異なる地域間での比較が容易
- 固定的な区画: 市町村合併など行政区域の変更に影響されず、時系列での比較が可能
- 階層的な構造: 1次メッシュ(約80km四方)から5次メッシュ(約100m四方)まで、目的に応じて使い分けが可能
- コードから位置が特定可能: コード番号から、その区画がどこにあるかを計算で求められる
地域メッシュは、総務省統計局の国勢調査データ、気象庁の気象データ、国土交通省の土地利用データなど、多くの公的データで標準的に使われています。
地域メッシュの種類と一覧
標準地域メッシュは、分割の細かさに応じて複数のレベルに分かれます。以下の表に各メッシュレベルの特徴をまとめます。
| 区画の種類 | 別名 | コード桁数 | 緯度の間隔 | 経度の間隔 | 一辺の長さ | 地図との関係 |
|---|---|---|---|---|---|---|
| 1次メッシュ | 第1次地域区画 | 4桁 | 40分 | 1度 | 約80km | 20万分の1地勢図 |
| 2次メッシュ | 第2次地域区画 | 6桁 | 5分 | 7分30秒 | 約10km | 2万5千分の1地形図 |
| 3次メッシュ | 基準地域メッシュ | 8桁 | 30秒 | 45秒 | 約1km | - |
| 2分の1メッシュ | 4次メッシュ(半分) | 9桁 | 15秒 | 22.5秒 | 約500m | - |
| 4分の1メッシュ | 4次メッシュ(1/4) | 10桁 | 7.5秒 | 11.25秒 | 約250m | - |
| 8分の1メッシュ | 4次メッシュ(1/8) | 11桁 | 3.75秒 | 5.625秒 | 約125m | - |
| 5次メッシュ | 10分の1細分メッシュ | 10桁 | 3秒 | 4.5秒 | 約100m | - |
1次メッシュ(約80km四方)
1次メッシュは、全国の地域を緯度40分・経度1度の間隔で分割した最も大きな区画です。20万分の1地勢図の1図葉に対応しており、日本全土は約180個の1次メッシュで覆われます。
1次メッシュのコードは4桁の数字で表されます。例えば、東京駅付近の1次メッシュコードは「5339」です。
2次メッシュ(約10km四方)
2次メッシュは、1次メッシュを緯線方向・経線方向にそれぞれ8等分してできる区画です。1つの1次メッシュから64個の2次メッシュが生成されます。一辺は約10kmで、2万5千分の1地形図の1図葉に対応します。
2次メッシュコードは6桁で、1次メッシュコード(4桁)に2桁を付加した形式です。例えば「5339-46」のように表記します。
3次メッシュ(約1km四方)- 基準地域メッシュ
3次メッシュは「基準地域メッシュ」とも呼ばれ、最もよく使われるメッシュレベルです。2次メッシュを緯線方向・経線方向にそれぞれ10等分して作られます。一辺は約1kmで、1つの2次メッシュから100個の3次メッシュが生成されます。
国勢調査や商業統計など、多くの統計データはこの3次メッシュ単位で提供されています。コードは8桁で、例えば「5339-46-11」と表記します。
4次メッシュ(2分の1〜8分の1地域メッシュ)
3次メッシュをさらに細かく分割したものが4次メッシュです。分割の仕方に応じて3つの種類があります。
- 2分の1地域メッシュ(9桁): 3次メッシュを縦横2等分。一辺は約500m。末尾に1〜4の番号を付加
- 4分の1地域メッシュ(10桁): 2分の1メッシュをさらに縦横2等分。一辺は約250m
- 8分の1地域メッシュ(11桁): 4分の1メッシュをさらに縦横2等分。一辺は約125m
4次メッシュの番号付けでは、南西を1、南東を2、北西を3、北東を4とします。
5次メッシュ(約100m四方)
5次メッシュは、3次メッシュを緯線方向・経線方向にそれぞれ10等分して作られます。一辺は約100mで、コードは10桁です。4次メッシュ(4分の1)と同じ10桁ですが、付番ルールが異なるため混同に注意が必要です。
都市部の詳細な分析や、環境調査など高い空間分解能が求められる用途で使用されます。
メッシュコードの付番ルール
メッシュコードは恣意的な番号ではなく、緯度・経度から計算によって求められる規則的なコードです。各メッシュレベルの付番ルールを解説します。
1次メッシュコードの計算方法
1次メッシュコードは4桁の数字で構成されます。
- 上2桁: メッシュ区画の南端の緯度を1.5倍した値(整数部分)
- 下2桁: メッシュ区画の西端の経度から100を引いた値
例えば、東京駅(北緯35.681度、東経139.767度)の場合:
- 上2桁: 35.681 × 1.5 = 53.52… → 53
- 下2桁: 139.767 - 100 = 39.767… → 39
- 1次メッシュコード: 5339
2次メッシュコードの計算方法
2次メッシュコードでは、1次メッシュコードに2桁を追加します。
1次メッシュの範囲内で、南から北へ0〜7の行番号、西から東へ0〜7の列番号を割り当てます。1次メッシュの緯度間隔(40分)を8等分すると5分間隔、経度間隔(1度)を8等分すると7分30秒間隔になります。
追加する2桁は「行番号 + 列番号」の順です。例えば、1次メッシュ内で南から5番目・西から7番目の区画なら、追加される2桁は「46」となり、2次メッシュコードは「533946」です。
3次メッシュコードの計算方法
3次メッシュコードは、2次メッシュコードにさらに2桁を追加します。
2次メッシュの範囲内で、南から北へ0〜9の行番号、西から東へ0〜9の列番号を割り当て、「行番号 + 列番号」を連結します。
例えば、2次メッシュ内で南から2番目・西から4番目の区画であれば「13」が付加され、3次メッシュコードは「53394613」のようになります。
メッシュコードと緯度経度の変換方法
緯度経度からメッシュコードを求める
任意の緯度経度座標から、対応するメッシュコードを算出する手順は以下の通りです。
ステップ1: 1次メッシュコードの計算
p = floor(緯度 × 1.5)
q = floor(経度) - 100
1次メッシュコード = p × 100 + q
ステップ2: 2次メッシュコードの計算
緯度の余り = 緯度 - (p / 1.5)
経度の余り = 経度 - (q + 100)
r = floor(緯度の余り × 1.5 × 8)
s = floor(経度の余り × 8)
2次メッシュコード = 1次コード × 100 + r × 10 + s
ステップ3: 3次メッシュコードの計算
(2次メッシュ内の余りから同様に計算)
t = floor(残りの緯度 × 1.5 × 8 × 10)
u = floor(残りの経度 × 8 × 10)
3次メッシュコード = 2次コード × 100 + t × 10 + u
メッシュコードから緯度経度を求める
メッシュコードから南西端(左下)の緯度経度を逆算できます。3次メッシュコード(8桁)の場合:
コード = AABBCCDD
AA: 1次メッシュ緯度コード
BB: 1次メッシュ経度コード
C : 2次メッシュ緯度コード
C : 2次メッシュ経度コード(※CCの1桁目と2桁目)
D : 3次メッシュ緯度コード
D : 3次メッシュ経度コード(※DDの1桁目と2桁目)
南西端の緯度 = AA / 1.5 + C × 5/60 + D × 30/3600
南西端の経度 = BB + 100 + C × 7.5/60 + D × 45/3600
中心座標が必要な場合は、南西端の緯度経度にメッシュの半分のサイズを加算します。
メッシュコードの調べ方・検索方法
特定の地点のメッシュコードを調べたい場合、以下の方法があります。
オンラインツールで検索する
いくつかのWebサイトで、地図上をクリックするだけでメッシュコードを確認できます。
- 国土地理院のメッシュコード検索: 地図上でクリックするとメッシュコードが表示される公式ツール
- jSTAT MAP(e-Stat): 総務省統計局が提供するGISツール。メッシュ統計データの閲覧も可能
- ArcGIS メッシュコード検索: ESRIが提供するオンラインマップ上でメッシュコードを検索
プログラムで変換する
大量の座標データをメッシュコードに変換する場合は、プログラムを使うのが効率的です。Python用のjismeshライブラリやRust用のjismeshcodeライブラリなどが公開されています(後述)。
一覧表から調べる
1次メッシュコードは全国で約180個のため、総務省統計局のWebサイトやe-Statで一覧表が公開されています。目的の都道府県・地域に対応する1次メッシュコードを確認し、そこから2次・3次の番号を絞り込む方法もあります。
プログラムでメッシュコードを扱う方法
システム開発や大規模データ分析では、プログラムによるメッシュコード変換が不可欠です。ここでは各言語でのアプローチを紹介します。
Pythonで扱う場合
Pythonではjismeshライブラリが広く使われています。緯度経度からメッシュコードへの変換、メッシュコードから緯度経度への逆変換が可能です。NTTドコモの開発者ブログでも紹介されているように、Pythonでの実装は情報が豊富です。
Rustで高速にメッシュコード変換する(jismeshcode)
大規模な位置情報データを高速に処理する場合は、Rust言語で書かれた jismeshcode ライブラリが便利です。JIS X 0410に完全準拠し、1次メッシュから5次メッシュまで全レベルに対応しています。
jismeshcodeの主な特徴は以下の通りです。
- 全メッシュレベルに対応: 1次(80km)〜 5次(100m)までカバー
- 高速処理: Rustのゼロコスト抽象化を活かした高性能な実装
- 豊富な機能: 座標⇔コード変換だけでなく、隣接メッシュの取得、半径検索、親子メッシュの階層操作にも対応
- 型安全: Rustの型システムによる安全な設計で、不正なコードの混入を防止
- no_std対応: 組み込み環境でも使用可能
以下は基本的な使用例です。
use jismeshcode::prelude::*;
fn main() {
// 緯度経度からメッシュコードへ変換(東京駅の例)
let coord = Coordinate::new(35.6812, 139.7671).unwrap();
let mesh = coord_to_mesh(coord, MeshLevel::Third).unwrap();
println!("東京駅の3次メッシュコード: {}", mesh);
// メッシュコードから中心座標を取得
let center = mesh_to_center(mesh);
println!("中心座標: ({}, {})", center.lat(), center.lon());
// 隣接メッシュの取得
let all_neighbors = neighbors(mesh);
for n in all_neighbors {
println!("隣接: {}", n);
}
// 半径1km以内のメッシュコードを検索
for nearby in mesh_codes_in_radius(coord, 1000.0, MeshLevel::Third) {
println!("近傍メッシュ: {}", nearby);
}
}
インストールはCargo.tomlに1行追加するだけです。
[dependencies]
jismeshcode = "0.2"
GISアプリケーションの開発、大量の統計データのバッチ処理、IoTデバイスでのリアルタイム位置判定など、パフォーマンスが求められるシーンで特に威力を発揮します。
メッシュコードの活用事例
地域メッシュコードは、以下のような幅広い分野で活用されています。
統計データの分析
国勢調査、経済センサス、住宅・土地統計調査などの政府統計データは、3次メッシュ(約1km四方)単位で提供されています。行政区域に依存しない均一な区画で統計を取ることで、地域間の公平な比較が可能になります。
エリアマーケティング
小売業や飲食業の出店計画において、メッシュ単位の人口データ・世帯データ・消費データを活用した商圏分析が行われています。メッシュの固定性を利用して、経年変化の追跡も容易です。
防災計画
地震ハザードマップや洪水浸水想定区域図など、防災データの多くはメッシュ単位で整備されています。防災科学技術研究所のJ-SHISでは、250mメッシュ(4分の1地域メッシュ)単位で地震動予測地図が公開されています。
気象データ
気象庁のアメダスデータや気象予測データも、メッシュ単位で管理されています。気温、降水量、風速などを空間的に均一な区画で取得できるため、分析や可視化に適しています。
位置情報サービス
モバイルアプリやIoTデバイスから得られるGPS座標をメッシュコードに変換することで、効率的な空間インデックスを構築できます。メッシュの階層構造を利用すれば、広域検索から詳細検索まで柔軟に対応できます。
よくある質問
メッシュコードを調べるには?
最も手軽な方法は、国土地理院やArcGISなどが提供するオンラインの地図ツールを使う方法です。地図上でクリックするだけで、その地点のメッシュコードが表示されます。プログラムで変換したい場合は、PythonのjismeshライブラリやRustのjismeshcodeライブラリを使えば、緯度経度から直接メッシュコードを計算できます。
メッシュコードの定義は?
メッシュコードは、JIS X 0410で定められた規格に基づき、地域メッシュの各区画に割り当てられた識別番号です。メッシュの南西端の緯度・経度から計算される数字の組み合わせで構成されます。
5次メッシュコードは何桁ですか?
5次メッシュコードは10桁です。3次メッシュコード(8桁)に2桁を追加した形式となります。なお、4次メッシュ(4分の1地域メッシュ)も10桁ですが、付番規則が異なるため注意が必要です。
世界測地系と日本測地系の違いは?
平成14年(2002年)の測量法改正により、日本の測地系は日本測地系から世界測地系(WGS84互換のJGD2000)に移行しました。現在のJIS X 0410は世界測地系に基づいています。古いデータを扱う際は、測地系の違いに注意してください。
まとめ
メッシュコード(地域メッシュコード)は、日本全国を緯度・経度に基づいて格子状に分割し、各区画にコードを付番したJIS規格の体系です。1次メッシュ(約80km)から5次メッシュ(約100m)まで階層的に構成されており、統計分析、GIS、防災、マーケティングなど幅広い分野で標準的に利用されています。
メッシュコードと緯度経度は相互に変換可能で、プログラムを使えば大量のデータを効率的に処理できます。特にパフォーマンスが求められるシステム開発では、Rust製のjismeshcodeのようなライブラリを活用すると、高速かつ型安全にメッシュコードを扱うことができます。
地域メッシュの仕組みを正しく理解し、適切なツールやライブラリを活用することで、位置情報データの分析や空間データ処理がより効率的に行えるようになるでしょう。