目次
先に結論
いま困ってるあなたへ
住所リストから一括で緯度経度を付けたい。でもAPIや料金、精度の違いが不安——よくある悩みです。
最短3手
- 少量~中量なら:国土地理院・住所検索APIで無料ジオコーディング。plugins.qgis.org
- 大量・安定なら:位置参照情報(MLITの住所→座標表)にJOIN。国土数値情報+1
- 海外混在や屋根精度が欲しいなら:Google Geocoding API(精度ラベルで品質判定)。Google for Developers
- Googleの
location_type
はROOFTOP/範囲内補間/幾何中心/概略の区別あり。Google for Developers+1 - Nominatim(OSM)は公的インスタンスでの大量一括は非推奨・スロットリング必須。operations.osmfoundation.org
- 日本の位置参照情報は大字・町丁目/街区の代表点を提供。国土数値情報+1
下のレシピから自分の条件(件数/コスト/精度)に合うものをそのままコピペで。
無料ツールと「精度」の違い(ざっくり比較)
- 国土地理院 住所検索API(日本国内・無料)
住所→座標を返すエンドポイント。QGISプラグインでも採用。少量~中量の無料取得に向く。plugins.qgis.org - 位置参照情報(ダウンロード)(日本全国・無料)
住所と緯度経度の対応表。大字・町丁目代表点や街区レベル代表点を年1回更新で提供。大量一括は表JOINで超安定。国土数値情報+1 - OpenStreetMap Nominatim(公共インスタンス)(世界対応・無料)
学術・小規模用途向け。大量一括は非推奨、1スレッドなど厳格なポリシー。必要なら自前インスタンスを。operations.osmfoundation.org - Google Geocoding API(世界対応・高精度)
ROOFTOP
(屋根)/RANGE_INTERPOLATED
(道路補間)/GEOMETRIC_CENTER
(幾何中心)/APPROXIMATE
で結果精度が判別可能。2025/03/01以降は**$200クレジットではなく“SKUごとの無料枠”**に変更。Google for Developers+1Google Maps Platform
目安:番地レベルの真値に最も近いのは “ROOFTOP”。
RANGE_INTERPOLATED
は道路上の内挿なので数十mズレが出ます。Google for Developers
レシピ①(無料・即席)国土地理院APIをGoogleスプレッドシートで一括化
用途:数十~数千件の国内住所。追加費用ゼロで共有しやすい。
- シートAに住所一覧(列A)を用意。
- 拡張機能 → Apps Script を開き、下記を貼付→保存→再読み込み。
function GEOCODE_GSI(addr){
if(!addr) return "";
var url = "https://msearch.gsi.go.jp/address-search/AddressSearch?q=" + encodeURIComponent(addr);
var res = UrlFetchApp.fetch(url, {muteHttpExceptions:true});
var json = JSON.parse(res.getContentText());
if(!json || !json.length) return "";
// GSIは [lon, lat] の順。スプレッドシートでは lat,lon で返します
var lon = json[0].geometry.coordinates[0];
var lat = json[0].geometry.coordinates[1];
return lat + "," + lon;
}
- シートのB列に
=GEOCODE_GSI(A2)
を入力し下までコピー。
この関数は国土地理院の住所検索APIを叩いて座標を返します([QGIS公式プラグインの参照APIと同じエンドポイント])。大量実行は間隔を空けるのがマナーです。plugins.qgis.org
レシピ②(無料・大量安定)位置参照情報をExcelでJOIN
用途:数万~数百万件の一括付与。API呼び出し不要、再現性が高い。
- 位置参照情報をダウンロード(大字・町丁目 or 街区レベル)。国土数値情報+1
- Excel → データ → テキスト/CSVから → 参照データを読み込み。
- 住所リスト側で都道府県+市区町村+町丁目(+街区)のキー列を作る。
- Power Query → クエリのマージでキー結合 → 緯度・経度列を展開して完成。
- 住所の表記揺れは正規化(GeoloniaのOSSが便利)でヒット率UP。geolonia.github.io
精度の考え方:位置参照情報は代表点。屋根ピンが必要なら③へ。国土数値情報
レシピ③(世界対応・精度判定つき)Google GeocodingをPythonで
用途:世界混在や屋根判定(ROOFTOP)を使い分けたい時。
2025/03/01から月次$200クレジットは廃止され、SKUごとの無料枠に変更。最新の無料枠・料金は公式のPricing/FAQを確認してください。Google for Developers+1Google Maps Platform
# pip install pandas requests
import time, requests, pandas as pd
API_KEY = "YOUR_KEY"
def geocode(addr):
url = "https://maps.googleapis.com/maps/api/geocode/json"
r = requests.get(url, params={"address": addr, "key": API_KEY})
js = r.json()
if js.get("status") != "OK": return "", "", "", ""
res = js["results"][0]
loc = res["geometry"]["location"]
ltype = res["geometry"].get("location_type","")
return loc["lat"], loc["lng"], ltype, res.get("partial_match", False)
df = pd.read_csv("addresses.csv") # address列
rows = []
for a in df["address"]:
lat, lon, ltype, partial = geocode(a)
rows.append((a, lat, lon, ltype, partial))
time.sleep(0.05) # レート制御
out = pd.DataFrame(rows, columns=["address","lat","lon","location_type","partial_match"])
out.to_csv("geocoded.csv", index=False)
location_type
がROOFTOPなら「屋根相当」、RANGE_INTERPOLATEDなら「道路補間」、GEOMETRIC_CENTER/APPROXIMATEは精度が落ちる、と公式が定義。Google for Developers+1- **
partial_match
**がtrue
でも要件を満たす場合あり、とGoogleが明記。Google for Developers
Nominatim(OSM)を使うときの注意
- 公共Nominatimは大量一括非推奨。やるなら1スレッド・1台・結果キャッシュ・適正レートが必須(ポリシー)。operations.osmfoundation.org
- ビジネスで継続的に使う場合は自前インスタンスや別サービスを検討。OpenStreetMapヘルプ
どれを選ぶ?(判断フローチャート)
- 日本国内・大量・無料・安定重視 → 位置参照情報JOIN(代表点OKなら最速)。国土数値情報
- 日本国内・中量・無料・API駆動 → 国土地理院API。plugins.qgis.org
- 世界対応・屋根精度が要る → Google Geocoding(
location_type
で判定、無料枠は最新版を確認)。Google for Developers+1
再現性UPの実務Tips
- 住所正規化→キー結合が命(
都道府県+市区町村+町丁目
)。OSSで前処理。geolonia.github.io - 検証列を持つ:Googleなら
location_type
、Nominatimならclass/type
を見る。nominatim.org - バルク時のエラー処理:未一致は手がかり(郵便番号/ランドマーク)で再試行。
- 測地系/座標系の変換は国土地理院のAPIで担保(必要に応じて)。vldb.gsi.go.jp
まとめ
- 無料で一括取得は、国内ならGSI API or 位置参照情報JOINが鉄板。plugins.qgis.org国土数値情報
- 精度はラベルで見極め:
ROOFTOP
最良、補間・中心・概略は用途に合わせて。Google for Developers - 大量・継続はAPIよりローカルJOINが安定、世界対応や屋根精度はGoogle。料金は2025年の新制度を必ず確認。Google for Developers
一次情報(公式)
- Google Geocoding API|
location_type
の定義(ROOFTOP/INTERPOLATED/GEOMETRIC_CENTER/APPROXIMATE)。Google for Developers+1 - Google|Address/Geocodingの検証指針(
partial_match
等)。Google for Developers - Google Maps Platform|2025年の料金制度変更(SKU別の無料枠)。Google for DevelopersGoogle Maps Platform
- OpenStreetMap Nominatim|利用ポリシー(バルク非推奨、1スレッド等)。operations.osmfoundation.org
- 国土数値情報|位置参照情報(住所↔座標の対応表)。国土数値情報+1
- 国土地理院 住所検索API(QGIS公式プラグインが利用するエンドポイント)。plugins.qgis.org
- 住所正規化OSS(Geolonia)。geolonia.github.io