地図やGIS(地理情報システム)を扱っていると、「メッシュコード」という用語に出会うことがあります。統計データの分析、位置情報サービスの開発、防災計画の策定など、幅広い分野で利用される地域メッシュコードですが、その仕組みを正しく理解している方は意外と多くありません。

この記事では、メッシュコードの基本的な定義から、1次``〜5次メッシュの種類と一覧、コードの計算方法、緯度経度との変換方法、実際の検索・調べ方まで、網羅的に解説します。

メッシュコードとは

メッシュコード(地域メッシュコード) とは、日本全国の地域を緯度・経度に基づいて格子状(メッシュ)に分割し、各区画に一意のコード番号を付与したものです。正式にはJIS規格「JIS X 0410 地域メッシュコード」として定められており、昭和48年に行政管理庁告示で制定された「統計に用いる標準地域メッシュ及び標準地域メッシュ・コード」が基になっています。

メッシュコードには以下のような特徴があります。

  • 統一的な区``画: 全国どこでも同じルールで地域が分割されるため、異なる地域間での比較が容易
  • 固定的な区画: 市町村合併など行政区域の変更に影響されず、時系列での比較が可能
  • 階層的な構造: 1次メッシュ(約80km四方)から5次メッシュ(約100m四方)まで、目的に応じて使い分けが可能
  • コードから位置が特定可能: コード番号から、その区画がどこにあるかを計算で求められる

地域メッシュは、総務省統計局の国勢調査データ、気象庁の気象データ、国土交通省の土地利用データなど、多くの公的データで標準的に使われています。

地域メッシュの種類と一覧

標準地域メッシュは、分割の細かさに応じて複数のレベルに分かれます。以下の表に各メッシュレベルの特徴をまとめます。

区画の種類別名コード桁数緯度の間隔経度の間隔一辺の長さ地図との関係
1次メッシュ第1次地域区画4桁40分1度約80km20万分の1地勢図
2次メッシュ第2次地域区画6桁5分7分30秒約10km2万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のようなライブラリを活用すると、高速かつ型安全にメッシュコードを扱うことができます。

地域メッシュの仕組みを正しく理解し、適切なツールやライブラリを活用することで、位置情報データの分析や空間データ処理がより効率的に行えるようになるでしょう。