L P L P - 2 months ago 7
R Question

Increase the api limit in ggmap's geocode function (in R)

I'm trying to use the

geocode
function from the
ggmaps
library in
R
to get coordinates for specific locations. I'm able to use the function fine so far.

The issue I'm running into is that I would like to increase my daily limit from
2,500
to
100,000
. The official Google documentation
says that this is readily possible if you enable billing on the project, which I'm happy to do. When you proceed with this process, the
Google Developers Console
gives you a personalized API key.

However, the
geocode
function doesn't have an option to put in this personalized API key. Instead, it asks for the
client
(client ID for business users) and
signature
(signature for business users), which is how Google Maps API for Work customers can access the API. I get that this is also an option, but that seems to be a very use case, since Google Maps API for Work seems to be designed for large enterprise accounts:


Daily quota starting at 100,000 requests per 24 hours, based on annual contractual purchase.


So my question boils down to this: can I use the
geocode
function from the
ggmaps
library in
R
to ping the Google Maps Geocoding API?

L P L P
Answer

I didn't find a way to use the existing geocode function (from the ggmap library) to answer this question, so I just created a new function to just do this myself using the existing getURL function (from the RCurl library) and the fromJSON function (from the RJSONIO library).

Write the new function:

library(RJSONIO)
library(RCurl)

getGeoData <- function(location){
  location <- gsub(' ','+',location)
  geo_data <- getURL(paste("https://maps.googleapis.com/maps/api/geocode/json?address=",location,"&key=**[YOUR GOOGLE API KEY HERE]**", sep=""))
  raw_data_2 <- fromJSON(geo_data)
  return(raw_data_2)
}

Test: getGeoData("San Francisco")

This gives you a list with the same data that's almost (but not quite) in the same exact format as the list produced by geocode("San Francisco").

Comments