Google Maps GeocodeAPIを使用してExcelでアドレスジオコーディングを実行できるソリューションを探しています。

基本的に、このタスクは、 Google SpreadSheetをジオコーディングする方法

で説明されているように、Googleスプレッドシートを介して可能です。詳細はこちら:

http://www.mkrgeo-blog.com/the-costless-way-to-geocoding-addresses-in-excel/

Googleスプレッドシートには優れたプラグイン-AwesomeTableは、毎日最大1000レコードを処理できます。主な厄介な点は、Googleスプレッドシートである外部プラットフォームである程度機能し、いつでもExcelワークシートに転送する必要があることです。

Excelで直接使用したいと思います。残念ながら、Google Mapsのポリシーにより、ジオコーディングAPIは無料ではなくなりましたクエリ)。

ポリシーは2018年の夏に変更されましたが、VBAマクロが関与していなくても、この問題を回避するのに役立つ可能性のあるものをWebで見つけました。

以下のスレッドによると:

https://www.reddit.com/r/excel/comments/a2r3aq/converting_addresses_to_lat_and_long/eb0mkys/

この問題は、次の場合に 1日あたり最大2500レコードで解決できます。

  1. APIキーを作成します

  2. GeocodeAPIオプションに制限します

  3. Excelの数式に貼り付けます。次のように:

    = WEBSERVICE(" https://maps.googleapis.com/maps/api/directions/xml?key=PUTYOUROWNAPIKEYHERE&origin="&SUBSTITUTE(A1、" "、"%20 ")& " destination = " & SUBSTITUTE(A2、" "、"%20 "))

(独自のGeocode APIキーを使用して)例に変換すると、次のようになります。

 =WEBSERVICE("https://maps.googleapis.com/maps/api/directions/xml?key=AIzaSyCiAhXX59p2G2PworpQeu8ADcqIo0s8h8A&origin="&SUBSTITUTE(Z18," ","%20")&"&destination="&SUBSTITUTE(Z19," ","%20")) 

残念ながら、機能しません。次のような文字列を取得しているため:

REQUEST_DENIED < error_message >このAPIプロジェクトはこのAPIの使用を許可されていません。< / error_message >

つまり、新しく作成したAPIが有効になっていないということです。 ここに行って実行しました。

それも役に立ちませんでした。つまり、無料のジオコーディングのオプションがないということです。 Googleで?この問題に遭遇した人、またはGoogleマップを介してジオコーディングを行う意思のある人を誰かが明確にできますか?

ここに画像の説明

コメント

  • ジオコードは全部でいくつありますか?Google MapsAPIのようなものはGoogleマップに表示し、ファイルやデータベースに保存しない場合は、ジオコーディングできます。
  • 基本的に2つのポストコード。Redditスレッドによると' ■WEBSERVICE機能を介して実行可能
  • MapQuestは引き続き機能します developer.mapquest.com/documentation/samples/geocoding/v1/ …
  • ありがたいですが、私の目標は、可能な場合はエクセルシートから直接ジオコーディングを行うことです。NominatimとBing Apisについては知っていますが、 r Google MapsApiに関する説明が必要です。 Redditでこのヒントを見つけて私をつまずかせてしまうまで、'が支払われることはわかっていました。

回答

PythonパッケージGeoPyを使用すると、Google Maps v3APIを使用してジオコーディングできます。 https://geopy.readthedocs.io/en/stable/#googlev3

<によるdiv id = "617052f066">

、無料利用枠がなくなったようです。

“リマインダー:宛先Geocoding APIを使用するには、すべてのAPIリクエストにAPIキーを含め、各プロジェクトで課金を有効にする必要があります。」

このパッケージを、NominatimやArcGISなどの他のジオコーダーオプションとともに正常に使用しました。

以下のコードを使用して、Excelスプレッドシートの各シートの列の各行の住所をジオコーディングし、各出力を新しい列に書き込むことができます。 「都市、州」のペアをジオコーディングし、個々の列に緯度と経度を書き出すように設定しました。

import pandas as pd from geopy.geocoders import ArcGIS from openpyxl import load_workbook import xlrd from geopy.extra.rate_limiter import RateLimiter geolocator = GoogleV3(api_key, "maps.googleapis.com") #alter min_delay param if getting too many request error. May not need if using ArcGIS geocoder geocode = RateLimiter(geolocator.geocode) #min_delay_seconds=0.5 # Spreadsheet path adr_tble = (r"") #get sheet names sheets = [i for i in xlrd.open_workbook(adr_tble, on_demand = True).sheet_names()] book = load_workbook(adr_tble) writer = pd.ExcelWriter(adr_tble, engine="openpyxl") writer.book = book writer.sheets = dict((ws.title, ws) for ws in book.worksheets) for i in sheets: print("Sheet: " + i + "\n") #read in dataframe df = pd.read_excel(adr_tble, sheet_name = i) #check if city state column exists if "CITY_STATE" in df: # create empty lists list_lat = [] list_long = [] for index, row in df.iterrows(): cityState = row["DUTY_CITY_STATE"] location = geocode(cityState) lat = location.latitude long = location.longitude print(cityState + " = " + str(lat), str(long)) list_lat.append(lat) list_long.append(long) df["lat"] = list_lat df["lon"] = list_long df.to_excel(writer, sheet_name=i) print("\n-----------------------------------------------------------------------------------\n") writer.save() writer.close() 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です