abr-geocoder を使用してみる

概要

デジタル庁から abr-geocoder という正規化ツールが発表されていたため、使用してみます。

abr-geocoder
ABRジオコーダー(abr-geocoder)は、アドレス・ベース・レジストリ(ABR)で整備された住所・所在地を用いたジオコーダーです。

環境

OS: Windows 11 Pro
Node.js: v20 latest

手順

abr-geocoder のインストール

適当なディレクトリに npm で abr-geocoder をインストールします。
npm が無い場合は Node.js をインストールします。
データに50GBほど必要とするため、容量に余裕のあるドライブで実施してください。

npm install @digital-go-jp/abr-geocoder
npm link @digital-go-jp/abr-geocoder

データダウンロード

データダウンロードします。
デフォルトだと C ドライブのユーザーディレクトリ(C:\users\***\.abr-geocoder)に保存してしまうので、data サブディレクトリを作成してそちらに保存します。

abrg download -d ./data/

データ量が多いため、ダウンロードには、おおよそ1時間ほどかかります。

PS D:\Code\abr-geocoder> abrg download -d ./data/
download: ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 0% | 0/1 | ETA: 0s

大量のエラーが出力される場合があります。
この場合は無視して良いと思います。

--------> retry!!! Error: read ECONNRESET
    at TLSWrap.onStreamRead (node:internal/stream_base_commons:218:20) {
  errno: -4077,
  code: 'ECONNRESET',
  syscall: 'read'
}
{
  kind: 'download',
  dataset: 'town_pos',
  packageId: 'ba-o1-205907_g2-000006',
  useCache: true,
  lgCode: '205907'
}

また、ダウンロードが停止する場合もあります。進捗表示のまま固まります。
この場合はCtrl+Cでキャンセルして再実行します。

download: ███████████████████████░░░░░░░░░░░░░░░░░ 58% | 6303/10806 | ETA: 3h15m

データダウンロード(補完)

だいたい、データダウンロードで失敗するので、データダウンロードが一旦完了したら、再度ダウンロードを行い補完します。

abrg update-check -d ./data/ --yes

データ量

ダウンロード完了すると、これくらいのデータ量があります。
やたらとデータ量があります。

サーバー開始

サーバーをスタートします。
データディレクトリを変更したため -d でデータを指定する必要があります。

abrg serve start -d .\data\

ブラウザ等で以下のURLにアクセス

http://localhost:3000/geocode?address=東京都千代田区紀尾井町1-3

結果

[
	{
		"query": {
			"input": "東京都千代田区紀尾井町1-3"
		},
		"result": {
			"output": "東京都千代田区紀尾井町1-3",
			"others": [],
			"score": 1,
			"match_level": "residential_detail",
			"coordinate_level": "residential_detail",
			"lat": 35.679107172,
			"lon": 139.736394597,
			"lg_code": "131016",
			"machiaza_id": "0056000",
			"rsdt_addr_flg": 1,
			"blk_id": "001",
			"rsdt_id": "003",
			"rsdt2_id": null,
			"prc_id": null,
			"pref": "東京都",
			"county": null,
			"city": "千代田区",
			"ward": null,
			"oaza_cho": "紀尾井町",
			"chome": null,
			"koaza": null,
			"blk_num": "1",
			"rsdt_num": "3",
			"rsdt_num2": null,
			"prc_num1": null,
			"prc_num2": null,
			"prc_num3": null
		}
	}
]

色々と試してみましたが、品質は悪くないと思います。

メモリ消費が激しい

ストレージだけでなく、メモリもかなり消費します。
私の環境では5GBほど消費していました。サーバーは最低でも8GBのスペックは用意する必要があると思います。

所感

品質は悪くはないのですが、やたらとデータ量が重い・初期化に時間がかかる点は非常にネックです。
失敗すると止まってしまうため自動化が困難です。
55GBはコンテナにすると大きすぎますし、VMで個別ダウンロードも止まってしまうためあまり現実的ではありません。

メモリ消費もかなり激しいので少々コストが重いと思います。

本番で運用することを考えると、厳しい点がいくつかあります。
もう少しクオリティアップしていただく必要があるかなという印象です。経産省のimiツールは軽かったのですが・・・

とはいえ、公式からこういったツールが発表されていることは非常に評価できますし、今後に期待したいところです。

参考資料

コマンドヘルプ

> abrg
====================================
= abr-geocoder version: 2.2.0       
====================================
abrg <inputFile> [outputFile] [options]

指定されたファイルに含まれる日本の住所を緯度経度に変換します

コマンド:
  abrg update-check [options]                 データセットのアップデートを確認します
  abrg download [options]                     アドレス・ベース・レジストリの最新データをダウンロードします
  abrg <inputFile> [outputFile] [options]     指定されたファイルに含まれる日本の住所を緯度経度に変換します  [デフォルト]
  abrg debug <command>                        デバッグ用のコマンド
  abrg serve <command>                        REST apiサーバーとしてジオコーディング機能を提供します

位置:
  inputFile   日本の住所を1行ごとに記入したテキストファイルへのパス。'-'を指定すると、標準入力から読み取ります  [文字列]
  outputFile  出力するファイルのパス。省略すると、標準出力に出力します。                                        [文字列]

オプション:
      --help     ヘルプを表示                                                                                     [真偽]
      --version  バージョンを表示                                                                                 [真偽]
  -d, --abrgDir  データを格納するディレクトリを指定します。デフォルトは (home)/.abr-geocoder です
                                                                  [文字列] [デフォルト: "C:\Users\***\.abr-geocoder"]
      --target   検索ターゲットを指定します。デフォルトは'all'
                                         [文字列] [選択してください: "all", "residential", "parcel"] [デフォルト: "all"]
      --fuzzy    指定した1文字をワイルドカードとして処理します                                                  [文字列]
  -f, --format   出力フォーマットを指定します。デフォルトは'json'
         [文字列] [選択してください: "csv", "json", "ndjson", "geojson", "ndgeojson", "simplified"] [デフォルト: "json"]
      --debug    デバッグ情報を出力します                                                                         [真偽]
      --silent   プログレスバーを表示しません                                                                     [真偽]
GitHub - digital-go-jp/abr-geocoder: Address Base Registry Geocoder by digital.go.jp
Address Base Registry Geocoder by digital.go.jp. Contribute to digital-go-jp/abr-geocoder development by creating an acc...

コメント

タイトルとURLをコピーしました