Using Google maps API and R
[This article was first published on Jose Gonzalez » R, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
This post shows how to use Google Maps‘ API with R. Combine the first part with Plyr and it becomes a very powerful tool in just a few lines of code.
You can find a gist in RMarkdown with the code here or click below to continue reading.
#### This script uses RCurl and RJSONIO to download data from Google's API: #### Latitude, longitude, location type (see explanation at the end), formatted address #### Notice ther is a limit of 2,500 calls per day library(RCurl) library(RJSONIO) library(plyr) url <- function(address, return.call = "json", sensor = "false") { root <- "http://maps.google.com/maps/api/geocode/" u <- paste(root, return.call, "?address=", address, "&sensor=", sensor, sep = "") return(URLencode(u)) } geoCode <- function(address,verbose=FALSE) { if(verbose) cat(address,"\n") u <- url(address) doc <- getURL(u) x <- fromJSON(doc,simplify = FALSE) if(x$status=="OK") { lat <- x$results[[1]]$geometry$location$lat lng <- x$results[[1]]$geometry$location$lng location_type <- x$results[[1]]$geometry$location_type formatted_address <- x$results[[1]]$formatted_address return(c(lat, lng, location_type, formatted_address)) } else { return(c(NA,NA,NA, NA)) } } ##Test with a single address #address <- geoCode("The White House, Washington, DC") #address #[1] "38.8976831" #[2] "-77.0364972" #[3] "APPROXIMATE" #[4] "The White House, 1600 Pennsylvania Avenue Northwest, Washington, D.C., DC 20500, USA" # Use plyr to getgeocoding for a vector #address <- c("The White House, Washington, DC","The Capitol, Washington, DC") #locations <- ldply(address, function(x) geoCode(x)) #names(locations) <- c("lat","lon","location_type", "forAddress") #Location type, for more info check here: https://developers.google.com/maps/documentation/directions/ #"ROOFTOP" indicates that the returned result is a precise geocode for which we have location information accurate down to street address precision. #RANGE_INTERPOLATED" indicates that the returned result reflects an approximation (usually on a road) interpolated between two precise points (such as intersections). Interpolated results are generally returned when rooftop geocodes are unavailable for a street address. #GEOMETRIC_CENTER" indicates that the returned result is the geometric center of a result such as a polyline (for example, a street) or polygon (region). #APPROXIMATE" indicates that the returned result is approximate.
The post Using Google maps API and R appeared first on Jose Gonzalez.
To leave a comment for the author, please follow the link and comment on their blog: Jose Gonzalez » R.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.