一色政彦の技術ノート

AI、開発、データを中心に、試したこと・調べたこと・分かったことをまとめる個人技術ブログです。

地図のメッシュ入門 標準地域メッシュ・H3・S2・独自グリッドをPythonで比較

地図を一定の区画に分けてデータを集計するとき、よく「メッシュ」という言葉を使います。日本の人口統計で使われる標準地域メッシュや、六角形で世界を分割するH3は有名ですが、メッシュは一つの規格ではありません。

そこで今回は、標準地域メッシュ、H3、S2、Geohash、Web地図のXYZタイルとQuadkey、MGRS、独自に作った正方形・六角形グリッドをPythonで比べました。同じ場所を指定しても、方式によってセルの形、面積、ID、得意な用途が変わります。

先に結論を書くと、日本の公的統計なら標準地域メッシュ、世界規模の集計や近傍探索ならH3やS2、Web地図の配信ならXYZタイル、分析条件を自分で決めるなら独自グリッド、というように目的から選ぶ必要があります。「resolution 8」「level 14」「500m」の数字だけを見て、同じ細かさだとは判断できません。

同じ地点でも、方式によってセルの形、面積、IDが変わります。

「メッシュ」は一つの規格ではない

メッシュとは、地域を規則的なセルへ分割する考え方、または分割された一つひとつの区画です。日本では「網の目」を意味するメッシュという呼び方が定着していますが、海外ではグリッドと呼ばれることも多くあります。

ただし、メッシュと呼ばれる仕組みの目的は同じではありません。

分類 代表例 主な目的
公的統計の共通区画 標準地域メッシュ 日本の人口・事業所などを共通コードで集計
全球の階層インデックス H3、S2、Geohash 位置検索、近傍探索、世界規模の集計
Web地図のタイル XYZ、Quadkey 地図画像やデータの分割・配信
位置を伝える参照グリッド MGRS UTM/UPSに基づく位置の表現
目的に応じた分析区画 独自の正方形・六角形 範囲、セル幅、原点を決めた独自集計

OGC(Open Geospatial Consortium)には、地球全体をセルへ分割して位置をIDで参照するDGGS(Discrete Global Grid Systems)という標準的な枠組みもあります。DGGSは単一のセルID方式ではなく、H3など個別の仕組みを理解するための上位概念です。

統計区画、位置索引、地図タイル、分析区画では目的が異なります。DGGSは個別のセルIDではなく上位の枠組みです。

同じ吉祥寺でも所属する区画は違う

吉祥寺駅の代表点を各方式のセルIDへ変換し、その地点を含む区画を描きました。比較に使ったレベルは、標準地域メッシュが約500mの「2分の1地域メッシュ」、H3がresolution 8、S2がlevel 14、Geohashが6文字、XYZとQuadkeyがzoom 16です。

独自グリッドは、東京都周辺でメートル単位を扱える平面直角座標系を使い、500m正方形と外接半径300mの六角形を作りました。MGRSには500mを直接表す精度桁がないため、今回は1km区画です。

方式 今回のレベル 吉祥寺のセル面積
標準地域メッシュ 2分の1・9桁 0.2615km²
H3 resolution 8 0.6756km²
S2 level 14 0.2344km²
Geohash 6文字 0.6060km²
XYZ・Quadkey zoom 16 0.2460km²
MGRS precision 2 1.0004km²
独自正方形 500m 0.2500km²
独自六角形 外接半径300m 0.2339km²

同じ吉祥寺の地点が入る9方式の区画。同じ縮尺、北が上で、選択したレベルは同面積ではありません。

数字が大きいレベルほど細かい、という規則さえ方式ごとに異なります。H3のresolution 8とS2のlevel 14を、数字だけで比べることはできません。今回も同程度の大きさに見えるレベルを選びましたが、面積を完全にそろえてはいません。

XYZとQuadkeyの面積が同じなのは、同じWeb地図タイルを別のIDで表しているためです。XYZはzoom/x/y、Quadkeyは階層を表す数字列を使います。

IDだけでなく、親子と近傍の考え方も違う

メッシュを使う利点の一つは、緯度・経度を毎回比較しなくても、セルIDから位置や階層を扱えることです。ただし、IDの構造やセルのつながり方も共通ではありません。

標準地域メッシュでは、約1kmの第3次地域メッシュを4分割すると約500m、その一つをさらに4分割すると約250mになります。H3の通常の六角形セルには7個の子があり、周囲には6個の隣接セルがあります。S2とXYZは一つのセルを4分割します。Geohashは1文字増やすと32個の子へ分かれます。

import h3
import s2sphere as s2

lat, lon = 35.70314448120142, 139.57980985190306

h3_id = h3.latlng_to_cell(lat, lon, 8)
h3_neighbors = h3.grid_disk(h3_id, 1)

s2_id = s2.CellId.from_lat_lng(
    s2.LatLng.from_degrees(lat, lon)
).parent(14)

print(h3_id)          # 882f5a34ddfffff
print(s2_id.to_token())  # 6018ee47

ここで使ったs2sphereは、S2の非公式なPython移植で、リポジトリはすでにアーカイブされています。今回の検証環境では動作を確認しましたが、新しいシステムの本番ライブラリとして推奨する意図はありません。

ID、面積、子の数、辺を共有する近傍数、主な用途を比較しました。

同じレベルでもセル面積は一定とは限らない

札幌付近、東京・吉祥寺、那覇付近でも同じレベルのセル面積を計算しました。

方式 札幌付近 東京・吉祥寺 那覇付近
標準地域メッシュ 0.2357km² 0.2615km² 0.2883km²
H3 0.6932km² 0.6756km² 0.6799km²
S2 0.2783km² 0.2344km² 0.2962km²
Geohash 0.5462km² 0.6060km² 0.6682km²
XYZ・Quadkey 0.1995km² 0.2460km² 0.2997km²

標準地域メッシュとGeohashは、メートルではなく緯度・経度を一定の角度で区切ります。経度1度が表す東西距離は赤道付近で最も長く、高緯度ほど短くなります。緯度方向の距離も、地球が完全な球ではないため場所によってわずかに変わります。そのため、同じ階層の標準地域メッシュでも、全国で同じ辺長・面積の正方形にはなりません。Web Mercatorを使うXYZタイルも、地表上の面積は緯度によって変わります。

H3とS2もすべてのセルが完全な等面積ではなく、位置による差があります。上の表は日本の3地点を測った結果で、世界全体の最小・最大を示したものではありません。

一方、独自正方形は投影した平面上で500m×500mにできます。ただし、どの座標参照系を使うか、原点をどこに置くかを自分で決めなければなりません。同じ500m正方形でも、原点をずらせば境界と集計結果は変わります。

何をしたいかで方式を選ぶ

作業目的から方式を選び、レベル、原点、測地系などの条件を確認します。

日本の国勢調査や経済センサスのメッシュ統計と結合するなら、同じ桁数、測地系、調査年の標準地域メッシュコードを使うのが基本です。H3やS2のIDへ変換しても、公表されている標準地域メッシュ表と文字列のまま結合できるわけではありません。

世界規模のPOIや移動データを集計し、周辺セルをたどりたい場合はH3が扱いやすい候補です。H3の基本は、H3とは? 地球を六角形で区切る地理空間インデックスを調べてみたで詳しく整理しています。球面上の位置検索や大規模な空間インデックスにはS2があります。Geohashは文字列で位置を索引化できますが、境界付近の近さを文字列の共通部分だけで判断できない場合があります。

XYZとQuadkeyは、主にWeb地図を高速に表示・配信するための仕組みです。分析用の区画として流用することはできますが、地図表示用のタイルと統計上の地域単位は目的が違います。

既存の方式に分析目的が合わない場合は、正方形や六角形の独自グリッドを作れます。その代わり、座標参照系、セル幅、原点、境界上の点をどちらへ入れるかまで記録しないと、同じ結果を再現できません。

メッシュを選ぶときに確認すること

今回比べて分かったのは、メッシュの名前だけでなく、次の条件を一緒に決める必要があることです。

  • 何のデータと結合するのか
  • 日本だけか、世界全体か
  • セルの大きさと形
  • 階層や近傍探索が必要か
  • 区画の位置が固定されている必要があるか
  • 地図表示、位置検索、統計集計のどれが目的か

どの方式が常に最も正確ということではありません。標準地域メッシュ、H3、S2、地図タイル、独自グリッドは、似た見た目でも答えようとしている問いが違います。

次の記事では、この中から日本の標準地域メッシュに絞り、約1km・500m・250mの階層、コードの読み方、Pythonでの変換、公的統計やPOIとの結合を整理します。

コードと資料

面積は各方式から得た境界をWGS84楕円体上で測定しました。比較用に固定したレベルの結果であり、すべてを同面積へ調整した性能比較ではありません。全球、極域、日付変更線、MGRSのゾーン境界は検証していません。