オープンデータな住所データを使用して文字列と緯度経度で住所検索できるNode.jsのモジュールを作りました。
japan-address-search
https://github.com/uedayou/japan-address-search
従来、住所検索を行う場合、GoogleやYahooなど外部のWebサービス・Web APIと連携して検索するものが多いと思います。少数のデータを検索する場合は特に問題ないですが、大量のデータを検索したい場合には外部サービスの制限やレスポンスの問題など利用するには不向きです。
このモジュールは、モジュール内のデータについて検索するので、大量のデータでも外部サービスに影響なくローカルで検索することができます。
このモジュールは、経済産業省のIMIコンポーネントツールを元に作成していますので、住所表記の正規化も行えます。
npmリポジトリにも公開しているので、npmコマンドで手軽にインストールできます。
https://www.npmjs.com/package/japan-address-search
インストール方法
コマンドラインで使う場合は npm でグローバルにインストールしてください。
$ npm install-g japan-address-search
Node.js のコード内で利用したい場合はローカルにインストールします。
$ npm install japan-address-search
使い方
コマンドラインで、文字列検索したい場合は以下のように実行します。
$ japan-address-search -s神保町
緯度経度による逆ジオコーディング検索は以下のようになります。
$ japan-address-search --lat 35.675551 --lng 139.750413
どちらもデフォルトで最大10件表示されます。任意の件数を得たい場合はパラメータに--limit 5
のように追加してください。
コード内での利用は
https://github.com/uedayou/japan-address-search#readme
を参照してください。
出力結果
検索結果は、JSONで以下のように出力されます。
町・丁目レベルには代表点として緯度経度が得られます。
{"@context":"https://imi.go.jp/ns/core/context.jsonld","場所":[{"@type":"場所型","住所":[{"@type":"住所型","表記":"神保町","都道府県":"千葉県","都道府県コード":"http://data.e-stat.go.jp/lod/sac/C12000","市区町村":"船橋市","市区町村コード":"http://data.e-stat.go.jp/lod/sac/C12204","町名":"神保町","種別":"位置参照情報"}],"地理座標":{"@type":"座標型","緯度":"35.762159","経度":"140.051552"}},{"@type":"場所型","住所":[{"@type":"住所型","表記":"神保町","都道府県":"新潟県","都道府県コード":"http://data.e-stat.go.jp/lod/sac/C15000","市区町村":"見附市","市区町村コード":"http://data.e-stat.go.jp/lod/sac/C15211","町名":"神保町","種別":"位置参照情報"}],"地理座標":{"@type":"座標型","緯度":"37.500056","経度":"138.970828"}},{"@type":"場所型","住所":[{"@type":"住所型","表記":"神保町","都道府県":"千葉県","都道府県コード":"http://data.e-stat.go.jp/lod/sac/C12000","市区町村":"船橋市","市区町村コード":"http://data.e-stat.go.jp/lod/sac/C12204","町名":"大神保町","種別":"位置参照情報"}],"地理座標":{"@type":"座標型","緯度":"35.773812","経度":"140.061923"}},{"@type":"場所型","住所":[{"@type":"住所型","表記":"神保町","都道府県":"東京都","都道府県コード":"http://data.e-stat.go.jp/lod/sac/C13000","市区町村":"千代田区","市区町村コード":"http://data.e-stat.go.jp/lod/sac/C13101","町名":"神田神保町","種別":"位置参照情報"}]}]}
その他の機能
japan-address-search
モジュールには、現在の住所以外に明治時代以前の地名についても、文字列と緯度経度で検索することができます。コマンドラインでは、--old
をつけると検索対象が明治時代以前の地名になります。
$ japan-address-search -s神保町 --old$ japan-address-search --lat 35.675551 --lng 139.750413 --old
japan-address-search について
japan-address-search
はIMIコンポーネントツールを改修して作成したものです。改修の経緯は以下のQiitaの記事にまとめています。
- IMI住所変換コンポーネントでいろんな住所を正規化してみた
- IMI住所変換コンポーネントを改造してリバースジオコーディングに対応してみた
- IMI住所変換コンポーネントを魔改造して昔の地名を検索できるようにしてみた
また、オープンデータとして
を利用しています。
各ツール・データを公開していただいている皆様には深く感謝いたします。