全国の住所データを HTTP API として公開するためのツールを公開いたします。
本データは、デジタル庁が整備する「アドレス・ベース・レジストリ」を元に加工し、様々なアプリケーションから便利に使えるように整理したものとなります。
以前、「Geolonia 住所データ」を管理しましたが、v2は従来版と比べて下記の違いがあります。
- 住居表示住所データと対応(番地・号までのデータが含まれる)
- 地番住所のデータと対応(住居表示住所が導入されていない地域のデータが含まれる)
このデータを使用した API をご提供しています。現在、制限無しの無料公開をしていますが、様子見ながら公開を停止や変更など行うことがあります。商用稼働は、ご自身でデータを作成しホスティングすることを強くおすすめします。 Geolonia は有償で管理・ホスティングするサービスありますので、ご利用の方はお問い合わせてください。
https://japanese-addresses-v2.geoloniamaps.com/api/ja.json
例: https://japanese-addresses-v2.geoloniamaps.com/api/ja.json
{ "meta": { "updated": 00000 }, "data": [
{
"code": 10006,
"pref": "北海道",
"point": [
141.347906782,
43.0639406375
]
"cities": [
{
"code": 11011,
"city": "札幌市",
"ward": "中央区",
"point": [
141.35389,
43.061414
]
},
...
]
},
...
https://japanese-addresses-v2.geoloniamaps.com/api/ja/<都道府県名>/<市区町村名>.json
※ 都道府県名及び市区町村名は URL エンコードを行ってください。
{ "meta": { "updated": 00000 }, "data": [
...
// 地番情報なしの住居表示未実施大字「新宿区北町」
{"machiaza_id":"0001000","oaza_cho":"北町","point":[139.735037,35.69995]},
// 地番情報ありの住居表示実施「新宿区新宿三丁目」
{"machiaza_id":"0020003","oaza_cho":"新宿","chome":"三丁目","rsdt":true,"point":[139.703563,35.691227],"csv_ranges":{"住居表示":{"start":151421,"length":19193},"地番":{"start":189779,"length":8895}}},
...
- 町丁目エンドポイントは、すべての地名を網羅しているわけではありません。
- アドレス・ベース・レジストリの整備状況によって住居表示が実施されている町字でも住居表示住所のデータが無いや、地番住所のデータが無いなどのことがあります。また、住居表示や地番の文字列が存在しても位置情報データがまだ存在しないケースもあります。
$ git clone [email protected]:geolonia/japanese-addresses-v2.git
$ cd japanese-addresses-v2
$ npm install
$ npm run run:all # APIを全て生成する
# オプション
$ npm run run:01_make_prefecture_city # 都道府県・市区町村のみ作成
$ npm run run:02_make_machi_aza # 町字API作成
$ npm run run:03_make_rsdt # 住居表示住所API作成 (町字APIが先に作らないとエラーになります)
$ npm run run:04_make_chiban # 地番住所API作成 (町字APIが先に作らないとエラーになります)
└── api
├── ja
│ │── {都道府県名}
│ │ ├── {市区町村名}-住居表示.txt
│ │ ├── {市区町村名}-地番.txt
│ │ └── {市区町村名}.json # 町字一覧
│ └── {都道府県名}.json # 市区町村一覧
└── ja.json # 都道府県と市区町村の一覧
各ファイルの詳細な仕様は、 src/data.ts
の型定義を参照してください。
-地番.txt
と -住居表示.txt
は容量節約のため、市区町村の住所を全て一つのファイルに集約するものです。そのテキストファイルのフォーマットは下記となります。
<町字1>,<start byte position>,<length in bytes>
<町字2>,<start byte position>,<length in bytes>
...
=END=
<padding>地番,<町字1>
prc_num1,prc_num2,prc_num3,lng,lat
1,,,<経度>,<緯度>
...
論理的な構造としては
- ファイル全体のヘッダー
- ファイル内の町字(丁目、小字含む)一覧
- それぞれのデータのバイトレンジ(開始バイト数、容量バイト数)
- ファイル内の町字(丁目、小字含む)一覧
- 町字データ(ループ)
- 町字データのヘッダー
- 地番・住居表示か
- カラム名定義
- 住所・位置情報データ
- 町字データのヘッダー
ヘッダーは5万バイトの倍数となります。末尾に =END=
を挿入し、残りまで 0x20
(半角スペース)で埋めます。クライアントは =END=
を確認できるまで、5万バイトずつ読み込むことをおすすめします。
また、 api/ja/{都道府県名}/{市区町村名}.json
エンドポイントにも、 csv_ranges
にヘッダーの start / length 情報入っているので、市区町村エンドポイントを既に読み込まれている場合はそのまま利用することをおすすめしております。
本データは、以下のデータを元に、毎月 Geolonia にて更新作業を行っています。
「アドレス・ベース・レジストリ」(デジタル庁)住居表示住所・住居マスターデータセット をもとに株式会社 Geolonia が作成したものです。
- normalize-japanese-addresses 日本の住所を正規化するライブラリ
Geolonia 住所データのライセンスは以下のとおりです。
注: リポジトリに同梱されているデータ生成用のスクリプトのライセンスは MIT ライセンスとします。