緯度経度をまとめて取得:無料ツールと精度の違い

目次

先に結論

いま困ってるあなたへ
住所リストから一括で緯度経度を付けたい。でもAPIや料金、精度の違いが不安——よくある悩みです。

最短3手

  1. 少量~中量なら:国土地理院・住所検索APIで無料ジオコーディング。plugins.qgis.org
  2. 大量・安定なら:位置参照情報(MLITの住所→座標表)にJOIN国土数値情報+1
  3. 海外混在や屋根精度が欲しいなら:Google Geocoding API(精度ラベルで品質判定)。Google for Developers

下のレシピから自分の条件(件数/コスト/精度)に合うものをそのままコピペで。


無料ツールと「精度」の違い(ざっくり比較)

  • 国土地理院 住所検索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スプレッドシートで一括化

用途:数十~数千件の国内住所。追加費用ゼロで共有しやすい。

  1. シートAに住所一覧(列A)を用意。
  2. 拡張機能 → 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;
}
  1. シートのB列に =GEOCODE_GSI(A2) を入力し下までコピー。

この関数は国土地理院の住所検索APIを叩いて座標を返します([QGIS公式プラグインの参照APIと同じエンドポイント])。大量実行は間隔を空けるのがマナーです。plugins.qgis.org


レシピ②(無料・大量安定)位置参照情報をExcelでJOIN

用途:数万~数百万件の一括付与。API呼び出し不要、再現性が高い。

  1. 位置参照情報をダウンロード(大字・町丁目 or 街区レベル)。国土数値情報+1
  2. Excel → データ → テキスト/CSVから → 参照データを読み込み。
  3. 住所リスト側で都道府県+市区町村+町丁目(+街区)のキー列を作る。
  4. 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_typeROOFTOPなら「屋根相当」、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駆動国土地理院APIplugins.qgis.org
  • 世界対応・屋根精度が要るGoogle Geocodinglocation_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

一次情報(公式)

最終更新日: 2025-08-25
佐藤航
佐藤航|ライター
生活インフラ支援

【佐藤航】(ライター)。
専門は
①地図サービスの業務活用(配送・不動産・営業)、
②高齢ドライバーの講習・手続きの実務支援。一次情報(省庁・自治体・メーカー等)を起点に、体験・実測・スクリーンショットで検証。記事は出典・最終更新日・更新履歴を必ず付与します。これまで100件以上、検証ログ20本を公開。X/noteでは作業メモや失敗例も含めて透明化しています。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次