(deprecated)tmp‐v2‐rc - digital-go-jp/abr-geocoder GitHub Wiki

abrg download コマンド

アドレス・ベース・レジストリのデータをダウンロードし、データベース作成します。

デフォルト

日本全国のデータをダウンロードするので、30GB程度の空き領域を必要とします。

$ abrg download

-c, --lgCode オプション

都道府県や市区町村を指定してデータをダウンロードすることができます。 総務省: 全国地方公共団体コード(以下、LG_CODEと呼びます)を複数指定することが可能です。 ダウンロードするデータ容量を抑えることができ、データベース構築の時間も短縮されます。

# 130001 : 東京都のLG_Code
$ abrg download -c 130001

複数指定する場合は、半角空白で区切ります。

# 222038 : 静岡県沼津市のLG_Code
# 222062 : 静岡県三島市のLG_Code

$ abrg download -c 222038 222062

abrg コマンド

入力からデータを読み取り、ジオコーディングした結果を出力します。 入力にはファイルを指定する方法と、標準入力を通じて渡す方法があります。 出力も同様に、ファイルの書き込み先を指定するか、標準出力に出力することができます。 出力するデータの形式を指定することが可能です。

デフォルト

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号

--format オプション

出力書式を指定します。省略された場合は 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 オプション

--fuzzy の後ろに、任意の1文字を指定することで、ワイルドカードとして使う文字を変更することが出来ます。
省略された場合は ? です。

例:

echo "東京都町?市森野2-2-22" | abrg - -f json --fuzzy "?"

--target オプション

ジオコーディングに用いるデータベースの対象を選択します。 デフォルトでは、住所表記地番の両方を使用します。

説明
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月時点では、京都の通り名には未対応です。

緯度経度について

このジオコーダーは、元にしている複数のデータの事情により、全てのジオコーディング結果に緯度経度が含まれるわけではありません。

⚠️ **GitHub.com Fallback** ⚠️