緯度経度とメッシュコードは「座標」と「区画ID」の違い
緯度経度は地球上の1点を連続値で指す座標系であり、メッシュコードは地図を格子状に区切った1区画を整数値で識別するコード体系である。両者の本質的な差異は「点 vs 面」にある。
| 比較項目 | 緯度経度 | メッシュコード |
|---|---|---|
| 表現対象 | 地球上の1点 | 地図上の1区画(面) |
| データ型 | 浮動小数点(例: 35.6812, 139.7671) | 整数コード(例: 53394611) |
| 精度 | 小数桁数に依存(無段階) | メッシュ次数に依存(段階的) |
| 匿名性 | 低い(個人宅を特定可能) | 高い(区画単位で集約) |
| 集計・比較 | 困難(連続値のため直接比較しにくい) | 容易(同一メッシュを同一グループとして集計) |
| 標準規格 | WGS84、JGD2011など | JIS X 0410 |
緯度経度は「その店舗はどこにあるか」というピンポイントの位置特定に使い、メッシュコードは「この1km四方の人口は何人か」というエリア集計に使う。目的に応じた使い分けが、GISデータ活用の出発点となる。
地域メッシュとは何か:JIS X 0410が定める区画体系
地域メッシュは、JIS X 0410(地域メッシュコード)で定められた、日本全域を緯線・経線に沿って格子状に区画する体系である。総務省統計局が国勢調査などの統計データをメッシュ単位で集計・公開しており、行政・ビジネスの双方で広く活用されている。
メッシュの最大の特徴は区画の形状と面積がほぼ均一な点にある。市区町村のような行政区画は境界が複雑で面積もばらつくが、メッシュは一定の緯度幅×経度幅で機械的に区切るため、異なる地域間の統計比較に適している。
1次〜6次メッシュの定義とサイズ比較表
メッシュは「次数」が上がるほど区画が細かくなる。各次数の定義を一覧にまとめる。
| 次数 | 正式名称 | 緯度幅 | 経度幅 | 1辺の概算 | コード桁数 | 分割元 |
|---|---|---|---|---|---|---|
| 1次 | 第1次地域区画 | 40分 | 1度 | 約80km | 4桁 | ― |
| 2次 | 第2次地域区画 | 5分 | 7分30秒 | 約10km | 6桁 | 1次を8×8分割 |
| 3次 | 基準地域メッシュ | 30秒 | 45秒 | 約1km | 8桁 | 2次を10×10分割 |
| 4次 | 2分の1地域メッシュ | 15秒 | 22.5秒 | 約500m | 9桁 | 3次を2×2分割 |
| 5次 | 4分の1地域メッシュ | 7.5秒 | 11.25秒 | 約250m | 10桁 | 4次を2×2分割 |
| 6次 | 8分の1地域メッシュ | 3.75秒 | 5.625秒 | 約125m | 11桁 | 5次を2×2分割 |
3次メッシュ(基準地域メッシュ)が最も汎用的で、国勢調査やe-Statの統計データの多くはこの単位で提供されている。4次以降は人口密集地での詳細分析や、モバイル通信のエリア設計など細粒度が必要な場面で用いられる。
メッシュコードの構造:桁ごとの意味を分解する
メッシュコードは階層的に構成されており、上位桁を見れば大まかな位置、下位桁まで見れば詳細な位置がわかる。
例:東京駅付近のメッシュコード 5339-46-11(3次メッシュ)
5339 | 46 | 11
↓ ↓ ↓
1次 2次 3次
- 上2桁
53:南端緯度を1.5倍した値 → 緯度 = 53 / 1.5 = 35度20分 - 下2桁
39:西端経度から100を引いた値 → 経度 = 39 + 100 = 139度 - 2次の上1桁
4:1次メッシュ内の南北方向の位置(0〜7) - 2次の下1桁
6:1次メッシュ内の東西方向の位置(0〜7) - 3次の上1桁
1:2次メッシュ内の南北方向の位置(0〜9) - 3次の下1桁
1:2次メッシュ内の東西方向の位置(0〜9)
4次メッシュ以降は2×2分割のため、各桁は1〜4の値を取り、南西=1、南東=2、北西=3、北東=4を表す。
緯度経度からメッシュコードへの変換計算
変換の計算式を段階的に示す。入力は10進法の緯度・経度とする。
1次メッシュコードの算出
p = 緯度 × 1.5 の整数部分
q = 経度 の整数部分 − 100
1次メッシュコード = p × 100 + q
2次メッシュコードの算出
1次メッシュの余り部分をさらに8分割する。
緯度の余り = 緯度 × 1.5 − p
経度の余り = 経度 − (q + 100)
r = (緯度の余り × 8) の整数部分 ← 南北位置(0〜7)
s = (経度の余り × 8) の整数部分 ← 東西位置(0〜7)
2次メッシュコード = r × 10 + s
3次メッシュコードの算出
2次メッシュの余り部分をさらに10分割する。
緯度の余り2 = 緯度の余り × 8 − r
経度の余り2 = 経度の余り × 8 − s
t = (緯度の余り2 × 10) の整数部分 ← 南北位置(0〜9)
u = (経度の余り2 × 10) の整数部分 ← 東西位置(0〜9)
3次メッシュコード = t × 10 + u
最終的なメッシュコードは {1次}{2次}{3次} を連結した8桁の整数となる。
Pythonによる相互変換の実装例
緯度経度 → メッシュコード
def latlon_to_meshcode(lat: float, lon: float, level: int = 3) -> str:
"""緯度経度から指定次数のメッシュコードを返す"""
# 1次メッシュ
p = int(lat * 1.5)
q = int(lon) - 100
code = f"{p:02d}{q:02d}"
if level == 1:
return code
# 2次メッシュ
lat_r = lat * 1.5 - p
lon_r = lon - int(lon)
r = int(lat_r * 8)
s = int(lon_r * 8)
code += f"{r}{s}"
if level == 2:
return code
# 3次メッシュ
lat_r2 = lat_r * 8 - r
lon_r2 = lon_r * 8 - s
t = int(lat_r2 * 10)
u = int(lon_r2 * 10)
code += f"{t}{u}"
if level == 3:
return code
# 4次以降(2×2分割)
lat_rem = lat_r2 * 10 - t
lon_rem = lon_r2 * 10 - u
for lv in range(4, level + 1):
lat_half = int(lat_rem * 2)
lon_half = int(lon_rem * 2)
code += str(lat_half * 2 + lon_half + 1)
lat_rem = lat_rem * 2 - lat_half
lon_rem = lon_rem * 2 - lon_half
return code
# 使用例: 東京駅(35.6812, 139.7671)
print(latlon_to_meshcode(35.6812, 139.7671)) # → 53394611
メッシュコード → 緯度経度(南西端)
def meshcode_to_latlon(code: str) -> tuple[float, float]:
"""メッシュコードから南西端の緯度経度を返す"""
# 1次メッシュ
p = int(code[0:2])
q = int(code[2:4])
lat = p / 1.5
lon = q + 100.0
if len(code) <= 4:
return (lat, lon)
# 2次メッシュ
r = int(code[4])
s = int(code[5])
lat += r / 1.5 / 8
lon += s / 8
if len(code) <= 6:
return (lat, lon)
# 3次メッシュ
t = int(code[6])
u = int(code[7])
lat += t / 1.5 / 8 / 10
lon += u / 8 / 10
if len(code) <= 8:
return (lat, lon)
# 4次以降
lat_unit = 1 / 1.5 / 8 / 10
lon_unit = 1 / 8 / 10
for i in range(8, len(code)):
lat_unit /= 2
lon_unit /= 2
v = int(code[i])
lat += ((v - 1) // 2) * lat_unit
lon += ((v - 1) % 2) * lon_unit
return (lat, lon)
# 使用例
print(meshcode_to_latlon("53394611")) # → (35.675, 139.7625)
なお、大量データの変換にはjismeshライブラリが便利である。pip install jismesh でインストールし、jismesh.to_meshcode(lat, lon, level) / jismesh.to_meshlat(meshcode) のように1行で変換できる。
実務での使い分け判断フロー
どちらの座標体系を使うべきかは、データの利用目的で決まる。
緯度経度を使うべきケース
- 個別地点の位置情報が必要な場合:店舗所在地、不動産物件の位置、配送先の特定など
- 距離・経路の計算が必要な場合:2地点間の距離算出、最寄り施設の検索、カーナビのルート計算
- 地図上へのピン表示:Google Maps APIやLeafletでのマーカー表示
- GPSデータの処理:スマートフォンやIoTセンサーの測位データはすべて緯度経度で取得される
メッシュコードを使うべきケース
- エリア単位の統計分析:人口密度、世帯年収、商業施設数など地域統計との結合
- プライバシー保護が求められる場合:個人の位置情報をメッシュ単位に集約し、個人特定を防止
- 時系列での地域比較:同一区画の経年変化を追跡(行政区画は合併で境界が変わるがメッシュは不変)
- 通信エリア設計:携帯電話基地局のカバレッジ分析、電波強度のメッシュ単位集計
- 商圏分析・出店計画:コンビニやスーパーの商圏をメッシュ単位で評価
併用するケース
多くの実務では両方を併用する。たとえば:
- GPS端末で取得した緯度経度を → メッシュコードに変換
- e-Statの統計データとメッシュコードで結合
- 結合結果を地図上に緯度経度ベースで可視化
この「緯度経度で収集 → メッシュで集計 → 緯度経度で可視化」のパイプラインが、位置情報分析の典型的なワークフローである。
メッシュ次数の選び方:分析粒度と使い分け
次数選定は「何を分析するか」で決まる。
| 分析目的 | 推奨次数 | 理由 |
|---|---|---|
| 都道府県レベルの傾向把握 | 1次(約80km) | 広域の粗い傾向を俯瞰できる |
| 市区町村レベルの地域比較 | 2次(約10km) | 自治体より均一な面積で比較可能 |
| 国勢調査データとの結合 | 3次(約1km) | e-Statの標準提供単位 |
| 店舗商圏の詳細分析 | 4次(約500m) | 徒歩圏内の細粒度分析 |
| モバイル通信のエリア設計 | 5次(約250m) | 基地局カバレッジの精密分析 |
| 建物単位に近い精密分析 | 6次(約125m) | 高密度エリアの極細粒度分析 |
注意点として、次数を上げるほどデータ量は急増する。3次メッシュの日本全域は約38万区画だが、6次メッシュでは3次の64倍(2×2分割を3回)で約2,400万区画に達する。処理性能とストレージを考慮した次数選定が重要である。
測地系の違いに注意:日本測地系と世界測地系
メッシュコードを扱う際に見落としがちなのが測地系の違いである。
- 日本測地系(旧測地系・Tokyo Datum):2002年3月以前の地図や統計で使用
- 世界測地系(JGD2000/JGD2011):2002年4月の測量法改正以降の標準
両者の間には約400〜450mのずれがある。同じメッシュコード「53394611」でも、日本測地系と世界測地系では指し示す地理的位置が異なる。
国勢調査では1990年以前は日本測地系、1995年以降は世界測地系のメッシュが採用されている。年代の異なるデータを結合する際は、測地系の変換(国土地理院のTKY2JGDなど)が必須である。
e-Statからメッシュ統計を取得する手順
総務省統計局が運営するe-Stat(政府統計のポータルサイト)から、メッシュ統計データを取得できる。
- e-Stat(https://www.e-stat.go.jp/)にアクセス
- 「地図で見る統計(統計GIS)」を選択
- 「データダウンロード」から対象の統計調査を選ぶ(例: 国勢調査)
- 統計表とメッシュ次数(3次メッシュ等)を指定
- 対象地域を選んでCSV形式でダウンロード
ダウンロードしたCSVにはメッシュコード列が含まれており、上記の変換式で緯度経度に変換すれば地図上にプロットできる。
よくある質問
メッシュコードから緯度経度を求めると「南西端」になるのはなぜ?
メッシュは面であり無数の緯度経度を内包するため、代表点が必要になる。JIS X 0410では区画の南西端(左下)を基準点と定めている。区画の中心点が必要な場合は、南西端の緯度経度に緯度幅・経度幅の半分を加算すればよい。
Excelでメッシュコードと緯度経度を変換できる?
可能だが複雑になる。1次〜3次メッシュの変換はINT関数とMOD関数の組み合わせで実現できる。ただし4次以降の分割ロジックはExcelでは煩雑になるため、Pythonスクリプトや専用ツール(国土地理院のメッシュコード確認ページなど)の利用を推奨する。
海外でもメッシュコードは使える?
JIS X 0410のメッシュコードは日本国内専用の規格である。海外ではUber H3、Google S2 Geometry、Geohashなどのグローバルなグリッドシステムが使われる。国際的なプロジェクトではこれらとの使い分けが必要になる。
まとめ
緯度経度とメッシュコードは相互に変換可能であり、対立する概念ではない。点の位置特定には緯度経度、面の統計集計にはメッシュコードという原則を押さえておけば、適切な使い分けができる。
実務では「緯度経度で収集 → メッシュコードで集計 → 緯度経度で可視化」というパイプラインを組むのが定石である。メッシュ次数は分析目的に応じて3次(約1km)を基本とし、必要に応じて上下の次数を選択する。