(deprecated)tmp‐v2‐rc - digital-go-jp/abr-geocoder GitHub Wiki
アドレス・ベース・レジストリのデータをダウンロードし、データベース作成します。
日本全国のデータをダウンロードするので、30GB程度の空き領域を必要とします。
$ abrg download
都道府県や市区町村を指定してデータをダウンロードすることができます。
総務省: 全国地方公共団体コード(以下、LG_CODE
と呼びます)を複数指定することが可能です。
ダウンロードするデータ容量を抑えることができ、データベース構築の時間も短縮されます。
# 130001 : 東京都のLG_Code
$ abrg download -c 130001
複数指定する場合は、半角空白で区切ります。
# 222038 : 静岡県沼津市のLG_Code
# 222062 : 静岡県三島市のLG_Code
$ abrg download -c 222038 222062
入力からデータを読み取り、ジオコーディングした結果を出力します。 入力にはファイルを指定する方法と、標準入力を通じて渡す方法があります。 出力も同様に、ファイルの書き込み先を指定するか、標準出力に出力することができます。 出力するデータの形式を指定することが可能です。
inputFile
からファイルを読み取り、outputFile
に出力結果を保存します。
$ abrg (inputFile) (outputFile)
パイプを使うと標準入力
からデータを読み取ります。
-
を指定すると、標準出力
にデータを出力します。
デフォルトの出力形式は、json
です。
$ echo "東京都千代田区紀尾井町1-3 東京ガーデンテラス紀尾井町 19階、20階" | abrg -
入力ファイルを指定することができます。結果は標準出力
に出力されます。
$ abrg ./input-address.txt
出力ファイルを指定することも可能です。
$ abrg ./input-address.txt ./output.json
ファイルから住所を入力する場合、1行に1つの住所を記載します。
//
は1行コメントアウト, /* ... */
は複数行をコメントアウトすることが可能です。
// 警察庁
東京都千代田区霞が関2丁目1番2号
/*
(ここはコメントアウトされるので、処理されない)
東松島市宮戸字月浜一丁目2番地22
紺屋町外6字入会字14号北谷日向甲89
*/
// =================================
// 大阪府北区と東京都北区のテスト
// =================================
北区扇町2丁目1番27号
北区王子2丁目1番21号
出力書式を指定します。省略された場合は json
で出力されます。
csv: カンマ区切りのcsv形式で結果を出力します。
input,score,output,other,match_level,lg_code,pref,county,city,ward,machiaza_id,oaza_cho,chome,koaza,block,block_id,rsdt_num,rsdt_id,rsdt_num2,rsdt2_id,rsdt_addr_flg,prc_num1,prc_num2,prc_num3,prc_id,lat,lon
"東京都千代田区紀尾井町1-3","1","東京都千代田区紀尾井町1-3",,residential_detail,131016,東京都,,千代田区,,0056000,紀尾井町,,,1,001,3,003,,,1,,,,,35.679107172,139.736394597
normalize: カンマ区切りのcsv形式で、限られたフィールドの結果のみを出力します
"東京都千代田区紀尾井町1-3","1","東京都千代田区紀尾井町1-3",residential_detail
json: JSON形式で結果を出力します
[
{
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 1,
"other": null,
"match_level": "residential_detail",
"lg_code": "131016",
"pref": "東京都",
"county": null,
"city": "千代田区",
"ward": null,
"machiaza_id": "0056000",
"oaza_cho": "紀尾井町",
"chome": null,
"koaza": null,
"block": "1",
"block_id": "001",
"rsdt_num": 3,
"rsdt_id": "003",
"rsdt_num2": null,
"rsdt2_id": null,
"rsdt_addr_flg": 1,
"prc_num1": null,
"prc_num2": null,
"prc_num3": null,
"prc_id": null,
"lat": 35.679107172,
"lon": 139.736394597
}
}
]
ndjson: NDJSON形式で結果を出力します
{
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 1,
"match_level": "residential_detail",
"lg_code": "131016",
"pref": "東京都",
"county": null,
"city": "千代田区",
"ward": null,
"oaza_cho": "紀尾井町",
"chome": null,
"koaza": null,
"machiaza_id": "0056000",
"block": "1",
"block_id": "001",
"rsdt_num": 3,
"rsdt_id": "003",
"rsdt_num2": null,
"rsdt2_id": null,
"rsdt_addr_flg": 1,
"prc_num1": null,
"prc_num2": null,
"prc_num3": null,
"prc_id": null,
"lat": 35.679107172,
"lon": 139.736394597
}
}
geojson: GeoJSON形式で結果を出力します
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
139.736394597,
35.679107172
]
},
"properties": {
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 1,
"other": null,
"match_level": "residential_detail",
"lg_code": "131016",
"pref": "東京都",
"county": null,
"city": "千代田区",
"ward": null,
"machiaza_id": "0056000",
"oaza_cho": "紀尾井町",
"chome": null,
"koaza": null,
"block": "1",
"block_id": "001",
"rsdt_num": 3,
"rsdt_id": "003",
"rsdt_num2": null,
"rsdt2_id": null,
"rsdt_addr_flg": 1,
"prc_num1": null,
"prc_num2": null,
"prc_num3": null,
"prc_id": null,
"lat": 35.679107172,
"lon": 139.736394597
}
}
}
]
}
ndgeojson: NdGeoJSON形式で結果を出力します
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
139.736394597,
35.679107172
]
},
"properties": {
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 1,
"match_level": "residential_detail",
"lg_code": "131016",
"pref": "東京都",
"county": null,
"city": "千代田区",
"ward": null,
"machiaza_id": "0056000",
"oaza_cho": "紀尾井町",
"chome": null,
"koaza": null,
"block": "1",
"block_id": "001",
"rsdt_num": 3,
"rsdt_id": "003",
"rsdt_num2": null,
"rsdt2_id": null,
"prc_num1": null,
"prc_num2": null,
"prc_num3": null,
"prc_id": null
}
}
}
--fuzzy
の後ろに、任意の1文字を指定することで、ワイルドカードとして使う文字を変更することが出来ます。
省略された場合は ?
です。
例:
echo "東京都町?市森野2-2-22" | abrg - -f json --fuzzy "?"
ジオコーディングに用いるデータベースの対象を選択します。
デフォルトでは、住所表記
と地番
の両方を使用します。
値 | 説明 |
---|---|
all |
住所表記 と地番 の両方のデータを用いる |
residential |
住所表記 データのみを用いる |
parcel |
地番 データのみを用いる |
ジオコーディング結果の精度を表します。
level | description |
---|---|
unknown | 全く判定できなかった |
prefecture | 都道府県まで判別できた |
city | 市区町村まで判別できた |
machiaza | 大字・町名まで判別できた |
machiaza_detail | 丁目・小字まで判別できた |
residential_block | 住居表示の街区までの判別ができた |
residential_detail | 住居表示の街区符号・住居番号までの判別ができた |
parcel | 地番まで判別ができた |
入力された文字列と、正規化された文字列の類似度を示しています。
文字列の類似度を計算するレーベンシュタイン距離を用いています。0.0〜1.0
の範囲で表され、1.0
が入力された住所と出力結果が同じ場合です。
スコアが低ければ信用度が低い、と概ね認識することは出来ます。 しかし、入力値が省略された表記の場合、出力結果のが長くなる場合には、スコアが低くなります。
スコアの例
[
{
"query": {
"input": "東京都千代田区紀尾井町1-3"
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 1, // "input" と "output" が完全一致
...
}
},
{
"query": {
"input": "東京都千代田区紀尾井町1丁目3" // 紀尾井町には「丁目」がないので「1丁目」は正しくない
},
"result": {
"output": "東京都千代田区紀尾井町1-3", // 正規化された結果
"score": 0.77, // "input" と "output" が概ね似ている
...
}
},
{
"query": {
"input": "東京都千代田区紀尾井町1番3号" // 正しい住所表記
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 0.82, // "input" と "output" が高い割合で似ている
...
}
},
{
"query": {
"input": "紀尾井町1-3" // 省略された住所表記
},
"result": {
"output": "東京都千代田区紀尾井町1-3",
"score": 0.5, // "input" と "output" が一部一致している。
...
}
}
]
このジオコーダーは、デジタル庁が公開するアドレス・ベース・レジストリ で公開しているデータセットに基づいて、住所の正規化を行います。
元にしているデータの精度等により、他サービスのジオコーディング結果と異なる結果の場合があります。
また2024年6月時点では、京都の通り名には未対応です。
このジオコーダーは、元にしている複数のデータの事情により、全てのジオコーディング結果に緯度経度が含まれるわけではありません。