コマンドライン・インタフェース
ここでは jageocoder モジュールをコマンドラインから呼びだして 利用する方法を説明します。
同じ内容はオンラインヘルプでも確認できます。
(.venv) $ jageocoder -h
ジオコーディング
住所文字列をキーとして住所辞書データベースを検索し、 先頭から最長一致すると解釈できるレコードを取得し、 そのレコードの経緯度を含む情報を返します。
最長一致する長さが同じ候補が複数存在する場合、全ての候補を返します。
- コマンド
search
- パラメータ
住所文字列
- オプション
-d
デバッグ情報を表示します。--area=<area>
検索する都道府県や市区町村を指定します。 省略した場合は全国を対象とします。複数の都道府県・市区町村を 指定する場合は,
で区切ります。--db-dir=<dir>
住所辞書データベースを配置したディレクトリを 指定します。
実行例
# 「落合1-15-2」を検索します。
# 「栃木県下都賀郡壬生町落合一丁目15番2号」と
# 「広島県広島市安佐北区落合一丁目15番2号」が返ります。
(.venv) $ jageocoder search '落合1-15-2'
{"matched": "落合1-15-2", "candidates": [{"id": 6894076, "name": "2号", "x": 139.820208258, "y": 36.450565089, "level": 8, "priority": 4, "note": null, "fullname": ["栃木県", "下都賀郡", "壬生町", "落合", "一丁目", "15番", "2号"]}, {"id": 34195069, "name": "2号", "x": 132.510432116, "y": 34.473211622, "level": 8, "priority": 4, "note": null, "fullname": ["広島県", "広島市", "安佐北区", "落合", "一丁目", "15番", "2号"]}]}
# 「落合1-15-2」を東京都から検索します。
# 「東京都多摩市落合一丁目15番地」が返ります。
(.venv) $ jageocoder search --area=東京都 '落合1-15-2'
{"matched": "落合1-15-", "candidates": [{"id": 12724450, "name": "15番地", "x": 139.428969, "y": 35.625779, "level": 7, "priority": 3, "note": null, "fullname": ["東京都", "多摩市", "落合", "一丁目", "15番地"]}]}
逆ジオコーディング
経度・緯度を指定し、その地点を囲む3点のレコードを検索し、 そのレコードリストの情報を指定地点に近い順に返します。
岬の突端や離島など、3点のレコードが存在しない場合は リストに含まれるレコード数が3より小さい場合もあります。
住所辞書には「住所に対応する代表点」の座標しか含まれておらず、 その住所が表す範囲(形状)の情報は利用できないため、 「指定した地点に近い代表点」を検索していることに注意してください。
- コマンド
reverse
- パラメータ
経度 緯度 (WGS1984 の十進度表記)
- オプション
-d
デバッグ情報を表示します。--level=<level>
指定した住所レベルまで検索します。 デフォルトは 6 (字レベル) です。 より大きなレベルを指定すると、検索に時間がかかります。--db-dir=<dir>
住所辞書データベースを配置したディレクトリを 指定します。
実行例
# 経度 139.6917, 緯度 35.6896 の地点付近の住所を検索します。
# 「東京都新宿区西新宿二丁目」、「東京都新宿区西新宿六丁目」、
# 「東京都新宿区西新宿四丁目」が返ります。
(.venv) $ jageocoder reverse 139.6917 35.6896
[{"candidate": {"id": 12977775, "name": "二丁目", "x": 139.691774, "y": 35.68945, "level": 6, "priority": 2, "note": "aza_id:0023002/postcode:1600023", "fullname": ["東京都", "新宿区", "西新宿", "二丁目"]}, "dist": 17.940303970792183}, {"candidate": {"id": 12978643, "name": "六丁目", "x": 139.690969, "y": 35.693426, "level": 6, "priority": 2, "note": "aza_id:0023006/postcode:1600023", "fullname": ["東京都", "新宿区", "西新宿", "六丁目"]}, "dist": 429.6327545403412}, {"candidate": {"id": 12978943, "name": "四丁目", "x": 139.68762, "y": 35.68754, "level": 6, "priority": 2, "note": "aza_id:0023004/postcode:1600023", "fullname": ["東京都", "新宿区", "西新宿", "四丁目"]}, "dist": 434.31591285255234}]
# 経度 139.6917, 緯度 35.6896 の地点付近の住所を
# 街区(○○番)レベルで検索します。
# 「東京都新宿区西新宿二丁目8番」、「東京都新宿区西新宿二丁目」、
# 「東京都新宿区西新宿四丁目15番」が返ります。
(.venv) $ jageocoder reverse 139.6917 35.6896 --level=7
[{"candidate": {"id": 12977785, "name": "8番", "x": 139.691778, "y": 35.689627, "level": 7, "priority": 3, "note": null, "fullname": ["東京都", "新宿区", "西新宿", "二丁目", "8番"]}, "dist": 7.669497303543382}, {"candidate": {"id": 12977775, "name": "二丁目", "x": 139.691774, "y": 35.68945, "level": 6, "priority": 2, "note": "aza_id:0023002/postcode:1600023", "fullname": ["東京都", "新宿区", "西新宿", "二丁目"]}, "dist": 17.940303970792183}, {"candidate": {"id": 12979033, "name": "15番", "x": 139.688172, "y": 35.689264, "level": 7, "priority": 3, "note": null, "fullname": ["東京都", "新宿区", "西新宿", "四丁目", "15番"]}, "dist": 321.50874020809823}]
住所辞書ディレクトリの取得
実行中の Python 環境で、住所辞書データベースがインストールされている ディレクトリを取得します。
辞書データベースは {sys.prefix}/jageocoder/db/
の下に
作成されますが、ユーザが書き込み権限を持っていない場合には
{site.USER_DATA}/jageocoder/db/
に作成されます。
上記以外の任意の場所を指定したい場合、環境変数 JAGEOCODER_DB_DIR
でディレクトリを指定することができます。
- コマンド
get-db-dir
- パラメータ
(なし)
- オプション
-d
デバッグ情報を表示します。
実行例
(.venv) $ jageocoder get-db-dir
/home/sagara/.local/share/virtualenvs/jageocoder-kWBL7Ve6/jageocoder/db/
住所辞書ファイルのダウンロード
インストール済みの jageocoder と互換性のある 住所辞書ファイルを、ウェブからダウンロードします。
特に理由が無い限り URL は省略してください。
逆にダウンロードするべきファイルの URL が分かっている場合は
curl
や wget
コマンドでダウンロードしても構いません。
- コマンド
download-dictionary
- パラメータ
<url>
ダウンロードする URL を指定できます(省略可)。- オプション
-d
デバッグ情報を表示します。--gaiku
より軽量な街区レベルまでの住所辞書ファイルを ダウンロードします。
実行例
# 街区レベルまでの住所辞書ファイルをダウンロードします
(.venv) $ jageocoder download-dictionary --gaiku
INFO:jageocoder.module:157:Downloading zipped dictionary file from https://www.info-proto.com/static/gaiku-20220519.zip to ...
住所辞書ファイルのインストール
住所辞書ファイルを展開し、住所辞書データベースを作ります。
- コマンド
install-dictionary
- パラメータ
<url_or_path>
インストールする住所辞書ファイルの URL または パスを指定します(省略可)。省略した場合、互換性のあるファイルを ダウンロードしてからインストールします。- オプション
-d
デバッグ情報を表示します。--gaiku
より軽量な街区レベルまでの住所辞書ファイルを ダウンロード・インストールします。<url_or_path>
を 指定した場合にはこのオプションは意味がありません。--db-dir
住所辞書データベースを作るディレクトリを 指定します。
実行例
# ダウンロード済みの住所辞書ファイルをインストールします
(.venv) $ jageocoder install-dictionary gaiku-20220519.zip
住所辞書ファイルのアンインストール
住所辞書データベースをアンインストールします。
- コマンド
uninstall-dictionary
- パラメータ
(なし)
- オプション
-d
デバッグ情報を表示します。--db-dir=<dir>
住所辞書データベースのディレクトリを指定します。
実行例
# 住所辞書データベースをアンインストールします
(.venv) $ jageocoder uninstall-dictionary
INFO:jageocoder.module:248:Removing directory ...
INFO:jageocoder.module:251:Dictionary has been uninstalled.
住所辞書ファイルのマイグレーション
jageocoder
のバージョンを上げた際に、インストール済みの
住所辞書データベースが非互換になる場合、利用できるように変換します。
この処理は全てのレコードのチェックを行なうため、
インストールに比べても非常に長い時間がかかります。
大きく仕様が変更された場合はマイグレーションできない場合もあります。 特に理由が無い限り、バージョンアップした場合は辞書も新しいものを インストールしなおすことをお勧めします。
- コマンド
migrate-dictionary
- パラメータ
(なし)
- オプション
-d
デバッグ情報を表示します。--db-dir=<dir>
住所辞書データベースのディレクトリを指定します。
実行例
# 住所辞書データベースをマイグレートします
(.venv) $ jageocoder migrate-dictionary