Skip to content

Extracting results from Google Search

2 messages · ECAMF, Duncan Temple Lang

#
Dear list,

I have a long list of towns in Africa and would need to get their
geographical coordinates. The Google query [/TownName Country coordinates/]
works for most of the TownNames I have and give a nicely formatted Google
output (try Ingall Niger coordinates for an example). I would like to launch
a loop on the list of names I have and automatically extract the coordinates
given by Google. Does anyone knows how it can be done?

ex.
DB<-data.frame(town=c('Ingall', 'Dogondoutchi', 'Tera'),
country=rep('Niger',3))
# Get lat and lon from the Google search on : 
for (i in 1:3)   {
      paste(DB$town[i], DB$country[i], 'coordinates',  sep="")
}

Many thanks!

Eduardo.





--
View this message in context: http://r.789695.n4.nabble.com/Extracting-results-from-Google-Search-tp4647136.html
Sent from the R help mailing list archive at Nabble.com.
#
Hi Eduardo

 Scraping the coordinates from the HTML page can be a little tricky
in this case.  Also, Google may not want you using their search engine
for that. Instead, you might use their Geocoding API
(https://developers.google.com/maps/documentation/geocoding),
but do ensure that this fits within their terms of use.

If you do use the Geocoding API, you can do with the following code:

library(RJSONIO)
library(RCurl)

DB<-data.frame(town=c('Ingall', 'Dogondoutchi', 'Tera'),
               country=rep('Niger',3))

location = with(DB, paste(town, country))

ans = lapply(location,
              function(loc)
                 fromJSON(getForm("http://maps.googleapis.com/maps/api/geocode/json",
                              address = loc, sensor = "false"))$results[[1]]$geometry$location
             )

DB = cbind(DB, do.call(rbind, ans))

And now the data frame has the lat and lng variables.

Again, check that the Geocoding terms of use allows you to do this.

 HTH
   D.
On 10/23/12 6:33 AM, ECAMF wrote: