
Plus Code(プラスコード)は緯度経度でどこ? — 8Q7XMP5W+C5 の読み方と、地域メッシュコードとの違い
Plus Code は住所ではなく、緯度経度そのものを文字に置き換えたものです。 だから住所辞書もサーバも要らず、電卓と20文字の表さえあれば緯度経度に戻せます。基準は WGS84。8Q7XMP5W+C5 のように8文字+++2文字で書かれ、この10文字で約14m四方の範囲を指します。以下、変換のしくみと、日本の地域メッシュコードとの違いを整理します。
Plus Code とは何か
正式名称は Open Location Code(OLC)。Google が2014年に公開した位置参照コードで、仕様と参照実装は Apache License 2.0 で公開されています。設計の要点は3つです。
- 座標の変換であって、住所の検索ではない。オフラインで計算できる
- 短いほど広い範囲を指す。桁数がそのまま精度になる
- 紛らわしい文字を使わない。使う文字は
23456789CFGHJMPQRVWXの20種類だけ(0・1・A・E・I・O・Uなどは不採用で、読み間違いと単語の偶然生成を避けている)
読み方:2文字で1回、20分割する
計算はとても素直です。まず座標を正の数に直します。
lat' = 緯度 + 90 (0〜180)
lon' = 経度 + 180 (0〜360)
そのうえで、20度 → 1度 → 0.05度 → 0.0025度 → 0.000125度 と20分割を繰り返し、各段で「緯度の文字」「経度の文字」の順に1文字ずつ取ります。8文字目のうしろに + を書くのが表記の決まりです。
| 桁数 | 1セルの大きさ(度) | 南北の距離(およそ) |
|---|---|---|
| 2文字 | 20度 | 約2,200km |
| 4文字 | 1度 | 約111km |
| 6文字 | 0.05度 | 約5.6km |
| 8文字 | 0.0025度 | 約278m |
| 10文字 | 0.000125度 | 約13.9m |
10文字より細かくしたいときは、11文字目以降で4行×5列のグリッドにさらに分割します。11文字なら南北が約3.5m、東西が約2.8m(赤道付近)になります。
文字の対応表は次のとおりです(左から番号0〜19)。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
2 3 4 5 6 7 8 9 C F G H J M P Q R V W X
実際に1文字ずつ求めてみる
例として緯度 35.658581・経度 139.745433(東京タワー付近・WGS84)を入れてみます。
lat' = 35.658581 + 90 = 125.658581
lon' = 139.745433 + 180 = 319.745433
第1段(20度) : 125.658581 ÷ 20 = 6 余り 5.658581 → 番号6 = '8'
319.745433 ÷ 20 = 15 余り 19.745433 → 番号15 = 'Q'
第2段(1度) : 5.658581 ÷ 1 = 5 余り 0.658581 → 番号5 = '7'
19.745433 ÷ 1 = 19 余り 0.745433 → 番号19 = 'X'
第3段(0.05度) : 0.658581 ÷ 0.05 = 13 余り 0.008581 → 番号13 = 'M'
0.745433 ÷ 0.05 = 14 余り 0.045433 → 番号14 = 'P'
第4段(0.0025度): 0.008581 ÷ 0.0025 = 3 余り 0.001081 → 番号3 = '5'
0.045433 ÷ 0.0025 = 18 余り 0.000433 → 番号18 = 'W'
ここまでで8文字 → '+' を入れる
第5段(0.000125): 0.001081 ÷ 0.000125 = 8 → 番号8 = 'C'
0.000433 ÷ 0.000125 = 3 → 番号3 = '5'
結果は 8Q7XMP5W+C5。逆に戻すときは、各文字を番号に直して段ごとの幅を掛けて足し、最後に緯度から90・経度から180を引きます。返ってくるのは点ではなくセル(矩形)なので、代表点として中心を使うのが普通です。
計算上の注意がひとつあります。この手順は引き算を繰り返すので、浮動小数点の丸め誤差が最後の桁に効きます。座標がちょうどセルの境界に乗っているとき(たとえば経度の余りが 0.002125 のように、0.000125 で割り切れる値になるとき)、実装によって最後の1文字が隣のセルにずれることがあります。自前で実装するなら、整数化してから割るか、参照実装をそのまま使うのが安全です。
短縮形(+ の前を落とす書き方)
MP5W+C5 港区 のように、先頭4文字を省いて地名を添える書き方があります。これは地名を手がかりに、省いた4文字を復元するという約束です。先頭4文字は1度(約111km)のセルなので、地名がそのくらいの範囲に効いていれば復元できます。
ここが実務上の注意点で、短縮形は単独では座標に戻せません。CSVやデータベースに位置を保存するなら、地名とセットにするか、省略しない完全形(10文字以上)で持つべきです。
測地系は WGS84 — ここだけは間違えやすい
Plus Code の緯度経度は WGS84 です。日本で使う JGD2011/JGD2024 とは実用上ほぼ同じ大きさなので、そのまま扱って問題になることはまずありません。
問題は旧日本測地系(Tokyo Datum)の座標をそのまま Plus Code にしてしまうケースです。旧測地系の緯度経度は世界測地系と数百m違うため、生成される10文字コードはまったく別のセルになります。約14mのセルに対して数百mのずれですから、当然です。

古い図面や台帳から起こした座標を Plus Code に変換するときは、先に測地系を世界測地系へそろえる。順番を逆にしても取り返せません。
地域メッシュコード・geohash との違い
日本には標準地域メッシュコードという、同じ発想の古い仕組みがあります。並べると性格の違いが見えます。
| Plus Code | 標準地域メッシュコード | geohash | |
|---|---|---|---|
| 分割のしかた | 20分割の繰り返し | 1次(緯度40分×経度1度)→8分割→10分割と段階ごとに異なる | 32分割(ビット交互) |
| 使う文字 | 20文字(紛らわしい文字を除外) | 数字のみ | 32文字(base32) |
| 代表的な細かさ | 10文字=約14m | 3次メッシュ=約1km | 8文字=約19m |
| 対象範囲 | 全世界 | 日本の範囲を前提 | 全世界 |
| セルの形 | 緯度経度で等分(高緯度ほど横に細い) | 同左 | 同左 |
| 主な用途 | 場所の共有・住所のない土地 | 統計・国勢調査・メッシュ集計 | データベースの近傍検索 |
要点は目的が違うことです。地域メッシュは統計を集計するための区画で、コードが揃っていること自体に意味があります。geohash は文字列の前方一致が空間の近さに対応するので、索引に向きます。Plus Code は「人が読み上げて伝える」ことを狙っているので、紛らわしい文字を捨て、短縮形を用意しています。
共通するのは、どれも緯度経度の格子であって、面積が一定の区画ではない点です。高緯度ほど東西方向が詰まります。日本国内でも、北海道と沖縄では同じ桁数のセルの横幅が1割ほど違います。
現場でどう使うか
測量・建設の実務で Plus Code が効くのは、住所が付いていない場所を口頭や短文で伝えるときです。
- 山中の作業地点、海岸の護岸、造成前の区画など、住所表記が使えない場所
- 写真の添付ができない連絡手段(無線・電話)で、おおよその位置を確実に伝えたいとき
- 緯度経度を読み上げると桁の聞き間違いが起きる場面(
35.658581より8Q7XMP5W+C5の方が復唱しやすい)
一方で、成果として残す座標を Plus Code で持つのは避けたほうが無難です。セルの大きさ(約14m)は測量成果の精度に対して粗すぎますし、桁を増やしても格子の制約は残ります。位置の共有はコード、成果は緯度経度または平面直角座標、と使い分けるのが現実的です。

まとめ
- Plus Code(Open Location Code)は、WGS84 の緯度経度を20進の文字列に変換したもの。オフラインで相互に変換できる
- 2文字ごとに20分割を繰り返す。10文字で約14m四方、11文字目からは4×5グリッドでさらに細かくなる
- 使う文字は
23456789CFGHJMPQRVWXの20種のみ。紛らわしい文字を最初から排除している - 短縮形は地名とセットでないと座標に戻せない。保存するなら完全形で
- 旧日本測地系の座標をそのまま入れると、数百mずれた別のセルになる。変換は世界測地系にそろえてから
- 地域メッシュコードは統計集計、geohash は近傍検索、Plus Code は人が伝えるため——目的が違う
出典
- Open Location Code specification — GitHub(google/open-location-code): https://github.com/google/open-location-code/blob/main/docs/olc_definition.adoc
- Open Location Code(リポジトリ・参照実装): https://github.com/google/open-location-code
- Plus Codes: https://maps.google.com/pluscodes/
- 地域メッシュ統計の概要 — 総務省統計局: https://www.stat.go.jp/data/mesh/gaiyou.html
- 世界測地系 — 国土地理院: https://www.gsi.go.jp/sokuchikijun/datum-main.html
本記事で計算した値(いずれも仕様どおりの手順を python3 で検算)
| 値 | 根拠 |
|---|---|
| 10文字セル=0.000125度 | 20度 ÷ 20⁴ |
| 同・南北約13.9m | 0.000125度 × 111,319.49 m/度 |
35.658581 / 139.745433 → 8Q7XMP5W+C5 |
仕様どおりの手順を Decimal(誤差なし)で符号化 |
| 11文字セル=南北約3.5m・東西約2.8m | 13.9m ÷ 4行 / 13.9m ÷ 5列 |
次に確認する
- 標準地域メッシュコードとは — 本記事で比べた日本側の格子コード。桁と細かさの対応、統計データでの使われ方が分かります
- 住所から緯度経度を出すとき、何が起きているのか — Plus Code と違って辞書が要る「住所」側のしくみです
- WGS84 と JGD2024 はどういう関係か — 「WGS84 のまま扱ってよいのか」を判断する材料になります
- iPhone の GPS 座標は何測地系か — スマホで取った座標をそのままコード化してよいかの答えです
- 緯度・経度「1度」は何メートル?(GeoPrism JP) — セルの横幅が緯度で変わる理由を、図で確かめられます
開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。
お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。
コメントを残す