Sto cercando una soluzione che mi consenta di eseguire la geocodifica degli indirizzi in Excel utilizzando lAPI Geocode di Google Maps.

Fondamentalmente, lattività è possibile tramite Fogli Google, come è stato discusso in Come geocodificare un foglio di lavoro Google?

e spiegato in dettaglio qui:

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

Fogli Google hanno un buon plugin – Awesome Table, che può farlo per te fino a 1000 record al giorno. La cosa più imbarazzante è che funziona in qualche modo su una piattaforma esterna, quale è il foglio di calcolo di Google e in qualsiasi momento richiede il trasferimento al nostro foglio di lavoro Excel.

Mi piacerebbe avere direttamente in Excel. Sfortunatamente, a causa delle norme di Google Maps, lAPI di geocodifica non è più gratuita ( anche per la piccola quantità di query ).

La politica è cambiata nellestate 2018, tuttavia ho notato qualcosa nel web che potrebbe essere utile per aggirare questo problema, anche senza il coinvolgimento delle macro VBA.

Secondo il thread di seguito:

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

questo problema può essere risolto fino a 2500 record al giorno , quando:

  1. crea la nostra chiave API

  2. limitala allopzione API Geocode

  3. Incolla nella nostra formula Excel, che sembra come segue:

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

Traducendolo nel mio esempio (con la mia chiave API Geocode) appare come segue:

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

Sfortunatamente, non funziona, poiché ricevo la stringa in questo modo:

REQUEST_DENIED < error_message > Questo progetto API non è autorizzato a utilizzare questa API. < / error_message >

Tuttavia, ciò significa che la mia API appena creata non è abilitata. Sono andato qui e lho fatto.

Anche questo non ha aiutato. Significa quindi che non è disponibile alcuna opzione per la geocodifica gratuita in Google? Qualcuno può chiarire, chi ha riscontrato questo problema o era disposto a fare un po di geocodifica tramite Google Maps?

entra descrizione dellimmagine qui

Commenti

  • Quanti codici geografici hai in totale? Alcuni come lAPI di Google Maps lo faranno solo ti consentono di geocodificare se lo mostri su una mappa di Google e non lo memorizzi in un file o database.
  • fondamentalmente 2 codici postali. Secondo il thread di Reddit, ' s fattibile tramite la funzione WEBSERVICE
  • MapQuest funziona ancora developer.mapquest.com/documentation/samples/geocoding/v1/…
  • Lo apprezzo, tuttavia il mio obiettivo è fare la geocodifica direttamente dal foglio Excel quando possibile. Conosco Nominatim e Bing Apis, tuttavia r Voglio il chiarimento in merito allAPI di Google Maps. Sapevo che era ' pagabile, finché non ho trovato questo suggerimento su Reddit che mi ha fatto scattare.

Risposta

Utilizzando il pacchetto Python GeoPy puoi geocodificare utilizzando lAPI di Google Maps v3. https://geopy.readthedocs.io/en/stable/#googlev3

Secondo https://developers.google.com/maps/documentation/geocoding/usage-and-billing , sembra che non esista più un livello gratuito.

“Promemoria: a usa lAPI di geocodifica, devi includere una chiave API con tutte le richieste API e devi abilitare la fatturazione su ciascuno dei tuoi progetti. “

Detto questo, Ho utilizzato questo pacchetto con altre opzioni di geocodificatore come Nominatim e ArcGIS con successo.

Il codice seguente può essere utilizzato per geocodificare gli indirizzi in ogni riga di una colonna per ogni foglio in un foglio di calcolo Excel e scrivere ogni output in una nuova colonna. Lho impostato per geocodificare una coppia “città, stato” e scrivere lat e long nelle singole colonne.

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() 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *