Repository navigation
Home
koswatana edited this page Jul 31, 2026
·
10 revisions
入力した住所文字列とデジタル庁が整備する アドレス・ベース・レジストリ(ABR: Address Base Registry)を突合し、正規化された住所文字列・町字 ID ・緯度経度等を出力するジオコーダーです。
- ABRの住所表記、階層に合わせて正規化
- 住居表示・地番に対応
- 町字IDの付与
- ABR座標情報の付与
sequenceDiagram
participant D as データ
participant G as ABRジオコーダー
participant DB as アドレス・ベース・レジストリ
Note over D: 住所文字列あり・緯度経度なし
D->>G: 住所文字列<br/>「東京都千代田区紀尾井町1番3号」
Note over G: 住所正規化・表記ゆらぎを置換
G->>DB: 正規化した住所要素で突合
DB-->>G: 町字ID・代表点緯度経度・住所の正規表記
Note over G: 正規化住所文字列を組み立て・マッチングレベル・緯度経度を付与
G-->>D: 正規化住所「東京都千代田区紀尾井町1-3」<br/>lg_code:131016 / machiaza_id:0056000<br/>match_level:rsdtdsp_rsdt<br/>経度:139.736389 / 緯度:35.679108
Note over D: 正規化住所・緯度経度・IDあり
- 住所文字列を含む何らかの一覧データを、他のデータとの紐付けや住所文字列の正規化をしたい場合に、機械による自動処理ができる部分を増やす。
- 位置情報に関するオープンデータのうち座標情報が付与されていないデータや、新規で公開する位置情報に関するオープンデータの整備を支援する。
- 地図閲覧機能を有するサービスを開発する際に、住所文字列による地図上の参照や検索機能の開発を支援する。
- ABRジオコーダーは、以下の項目を出力します。
| 出力項目 | 説明 |
|---|---|
matched_address |
出力住所文字列 |
unmatched_address |
マッチングできなかった文字列 |
score |
参考値 |
match_level |
matched_addressのマッチングレベル |
coordinates_level |
代表点のレベル |
lg_code |
全国地方公共団体コード |
machiaza_id |
町字 ID |
rsdt_addr_flg |
住居表示フラグ |
blk_id |
街区 ID |
rsdt_id |
住居 ID |
rsdt2_id |
住居 2ID |
prc_id |
地番 ID |
pref |
都道府県 |
county |
郡 |
city |
市区町村 |
ward |
政令市区 |
kyoto_st |
京都通り名 |
oaza_cho |
大字・町 |
chome |
丁目 |
koaza |
小字 |
machiaza_dist |
同一町字識別情報 |
blk_num |
街区符号 |
rsdt_num |
住居番号 |
rsdt_num2 |
住居番号 2 |
prc_num1 |
地番 1 |
prc_num2 |
地番 2 |
prc_num3 |
地番 3 |
- 出力項目の
match_levelには、以下のレベルが設定されます。 - 出力項目の
coordinates_levelには、代表点のレベルが設定されます。
| 正規化レベル | 説明 |
|---|---|
unknown |
不明 |
pref |
都道府県 |
city |
郡 / 市区町村 |
machiaza |
大字・町 |
machiaza_detail |
丁目・小字 |
rsdtdsp_blk |
街区符号 |
rsdtdsp_rsdt |
住居番号 |
parcel |
地番 |
- 住所階層とマッチングレベルの対応は以下の通りです。
flowchart LR
subgraph lpref["pref"]
p1["都道府県"]
end
subgraph lcity["city"]
c0["郡"] --> c1["市区町村"] --> c2["政令市区"]
end
subgraph lmz["machiaza"]
m1["大字・町"]
end
subgraph lmzd["machiaza_detail"]
d1["丁目"]
d2["小字"]
end
subgraph lblk["rsdtdsp_blk"]
b1["街区符号"]
end
subgraph lrsdt["rsdtdsp_rsdt"]
r1["住居番号"]
end
subgraph lprc["parcel"]
g1["地番"]
end
bld["建物名等(方書)"]
p1 --> c0
p1 --> c1
c1 --> m1
c2 --> m1
m1 --> d1
m1 --> d2
m1 --> b1
m1 --> g1
d1 --> b1
d1 --> g1
d2 --> g1
b1 --> r1
c1 --> d2
c2 --> d2
c1 --> g1
d2 --> b1
r1 --> bld
g1 --> bld
classDef lvl fill:none,stroke:#999,stroke-dasharray: 3 3
class lpref,lcity,lmz,lmzd,lblk,lrsdt,lprc lvl
classDef out stroke-dasharray: 5 5
class bld out
- 矢印は照合が進む順序を表します。入力がそこで尽きた状態が、その住所の
match_levelになります。 - 建物名等(方書)はABRの照合対象ではなく、
unmatched_addressに残ります。
-
scoreは候補の並べ替えに使う参考値です。表記のゆらぎを補って照合した場合に 1 未満、match_levelがunknownのときは -1 になります。 - マッチの正しさは表しません。下の表のように、ABRに存在しない番地が残っていても
scoreは 1 になります。採否の判断には使わず、match_levelを見てください。
| 入力 | matched_address |
unmatched_address |
score |
match_level |
|---|---|---|---|---|
| 東京都千代田区紀尾井町1番3号 | 東京都千代田区紀尾井町1-3 | なし | 1 | rsdtdsp_rsdt |
| 東京都千代田区紀尾井町1番3号ガーデンテラス | 東京都千代田区紀尾井町1-3 | ガーデンテラス | 1 | rsdtdsp_rsdt |
| 東京都千代田区紀尾井町999-999 | 東京都千代田区紀尾井町 | 999-999 | 1 | machiaza |
| 東京都千代田区紀尾伊町1-3 | 東京都千代田区紀尾井町1-3 | なし | 0.67 | rsdtdsp_rsdt |
| 存在しない架空市あいうえお町9-9 | なし | 存在しない架空市あいうえお町9-9 | -1 | unknown |
- 正規化の仕様は正規化仕様と対応事例を参照してください。
- APIの仕様はOpenAPI 定義を参照してください。
| V1 | V2 | V3(beta) | |
|---|---|---|---|
| 町字 ID の付与 | ✓ | ✓ | ✓ |
| 住所文字列正規化(町字・住居表示) | ✓ | ✓ | ✓ |
| 住所文字列正規化(地番) | - | ✓ | ✓ |
| アドレスから緯度経度 | ✓ | ✓ | ✓ |
| 緯度経度からアドレス | - | - | ✓(試験的) |
| 廃止されたアドレス | - | - | - |
- ABRの町字、住居表示(街区符号・住居番号)に対応した、正規化住所文字列、町字ID、座標を出力
- CLIのOSS公開
- ABRの地番マスターのジオコーディングに対応
- API, Web Client のOSS公開
- 京都の通り名に対応
- Go による実装に刷新
- ABR データ管理 CLI(
abrdb)とジオコーダー(abrg)を分離 - リバースジオコーディング(緯度経度からアドレス)に試験的に対応