Etsin ratkaisua, jonka avulla voin tehdä osoitteiden geokoodauksen Excelissä Google Maps Geocode -sovellusliittymän avulla.

Pohjimmiltaan tehtävä on mahdollista Google Sheetsin kautta, kuten on keskusteltu osoitteessa Kuinka Google-laskentataulukko geokoodataan?

ja selitetty yksityiskohdat täällä:

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

Google Sheetsillä on hyvä lisäosa – Mahtava taulukko, joka voi tehdä sen sinulle jopa 1000 levyä päivittäin. Suurin hankala asia on, että se toimii jonkin verran ulkoisella alustalla, mikä on Google-laskentataulukko ja edellyttää milloin tahansa siirtoa Excel-laskentataulukkoon.

Haluaisin, että pääsen suoraan Exceliin. Valitettavasti Google Maps -käytännön vuoksi geokoodaus-sovellusliittymä ei ole enää ilmainen ( jopa pienelle määrälle kyselyt ).

Käytäntö muuttui kesällä 2018, mutta havaitsen kuitenkin jotain verkosta, josta voi olla apua ongelman kiertämisessä, jopa ilman VBA-makrojen osallistumista.

Alla olevan säikeen mukaan:

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

tämä ongelma voidaan ratkaista enintään 2500 tietuetta päivässä , kun:

  1. luo API-avain

  2. rajoita se Geocode API -vaihtoehtoon

  3. Liitä Excel-kaavaan, joka näyttää seuraavasti:

    = VERKKOPALVELU (" https://maps.googleapis.com/maps/api/directions/xml?key=PUTYOUROWNAPIKEYHERE&origin="&SUBSTITUTE (A1, " ", "% 20 ") & " määränpää = " & SUBSTITUTE (A2, " ", "% 20 ")

Käännä se esimerkkini (omalla Geocode API -avaimellani) näyttää seuraavalta:

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

Valitettavasti se ei toimi, kun saan merkkijonon näin:

REQUEST_DENIED < error_message > Tällä API-projektilla ei ole oikeutta käyttää tätä API: ta. < / error_message >

Tarkoitan kuitenkin, että äskettäin luotu sovellusliittymäni ei ole käytössä. Menin tänne ja tein sen.

Se ei myöskään auttanut. Tarkoittaako se siis, että ilmaista geokoodausta ei ole Googlessa? Voiko kukaan selventää, kuka on kohdannut tämän ongelman tai halunnutko tehdä geokoodausta Google Mapsin kautta?

enter kuvakuvaus täällä

Kommentit

  • Kuinka monta geokoodia sinulla on? Jotkut, kuten Google Maps -sovellusliittymä, anna geokoodin, jos näytät sitä Google-kartalla etkä tallenna sitä tiedostoon tai tietokantaan.
  • periaatteessa 2 postinumeroa. Reddit-ketjun mukaan se ' s toteutettavissa WEBSERVICE-toiminnon kautta
  • MapQuest toimii edelleen developer.mapquest.com/documentation/samples/geocoding/v1/…
  • Arvostan sitä, mutta tavoitteeni on kuitenkin tehdä geokoodaus suoraan Excel-arkista aina kun mahdollista. Tiedän Nominatimista ja Bing Apiksesta, howeve r Haluan selvennystä Google Maps Apiin. Tiesin, että se ' on maksettava, kunnes löysin tämän vihjeen Redditistä, joka laukaisi minut.

Vastaa

Python-pakettia GeoPy käyttämällä voit geokoodata Google Maps v3 -sovellusliittymän avulla. https://geopy.readthedocs.io/en/stable/#googlev3

https://developers.google.com/maps/documentation/geocoding/usage-and-billing , näyttää siltä, että vapaata tasoa ei ole enää olemassa.

”Muistutus: käytä geokoodaus-sovellusliittymää, sinun on liitettävä API-avain kaikkiin API-pyyntöihin ja sinun on sallittava laskutus jokaisessa projektissasi. ”

Tästä huolimatta Olen käyttänyt tätä pakettia muiden geokooderivaihtoehtojen, kuten Nominatim ja ArcGIS, kanssa onnistuneesti.

Alla olevaa koodia voidaan käyttää excel-laskentataulukon kunkin taulukon sarakkeen jokaisen rivin osoitteiden geokoodaamiseen ja kunkin tuloksen kirjoittamiseen uuteen sarakkeeseen. Minulla on se asetettu geokoodaamaan ”kaupunki, valtio” -parin ja kirjoittamaan lat ja long yksittäisiin sarakkeisiin.

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *