Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8875

オープンデータを使って住所検索ライブラリを作りました

$
0
0

オープンデータな住所データを使用して文字列と緯度経度で住所検索できる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-searchIMIコンポーネントツールを改修して作成したものです。改修の経緯は以下のQiitaの記事にまとめています。

  1. IMI住所変換コンポーネントでいろんな住所を正規化してみた
  2. IMI住所変換コンポーネントを改造してリバースジオコーディングに対応してみた
  3. IMI住所変換コンポーネントを魔改造して昔の地名を検索できるようにしてみた

また、オープンデータとして

を利用しています。
各ツール・データを公開していただいている皆様には深く感謝いたします。


Viewing all articles
Browse latest Browse all 8875

Trending Articles