全国の住所データを 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 git@github.com: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作成
$ npm run run:04_make_chiban # 地番住所API作成
$ npm run run:10_refresh_csv_ranges # 町字APIのCSVレンジを更新 (01〜04 を先に実行しておく必要があります)
$ npm run run:99_create_stats # 統計情報を作成run:01 〜 run:04 はそれぞれ独立して実行できます。町字マスターはアドレス・ベース・レジストリから直接取得するため、run:03_make_rsdt と run:04_make_chiban に run:02_make_machi_aza の出力は必要ありません。
一方 run:10_refresh_csv_ranges は、run:01 が生成する ja.json、run:02 が生成する {市区町村}.json、run:03 と run:04 が生成する .txt ファイルをすべて参照します。.txt ファイルが無い市区町村はエラーにせずスキップされるため、先行ステップを実行していないと CSV レンジが更新されないまま処理が完了します。
settings.json に設定を入れてください。内容は src/lib/settings.ts を参照してください。
例えば、出力を北海道にしぼりたい場合は下記のように設定してください。
{
"lgCodes": ["^01"]
}deploy/01a_create_archive.sh を参照してください
└── 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 ライセンスとします。