R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Google Geocoding API ja GoogleMaps

Google tarjoaa ilmaisia palveluita esimerkiksi osoitteen sijainnin selvittämiseen (Geocoding) sekä karttojen esittämiseen. Näitä voi käyttää suoraan R:stä laajennuspaketin RgoogleMaps avulla.

Ennen käyttöä on kuitenkin syytä tutustua Googlen palveluiden käyttösääntöihin mm. osoitteessa http://code.google.com/intl/fi/apis/maps/documentation/geocoding/. Esimerkiksi Geocoding-palvelun käyttö on kielletty, ellei tuloksia esitetä GoogleMaps:n avulla.

Geocoding onnistuu R:stä kutsumalla suoraan Google Geocoding API:a. Alla oleva funktio toteuttaa tarvittavan toiminnallisuuden R:ssä:

getCoordinates<-function(street, number, city, country) {
   library(RCurl)
   library(XML)
   URL<-paste("http://maps.googleapis.com/maps/api/geocode/xml?address=", street, "+", number, ",+", city, ",+", country, "&sensor=false", sep="")
   doc<-xmlTreeParse(URL, useInternalNodes = TRUE)
   lat<-as.numeric(xpathSApply(doc, "/GeocodeResponse/result/geometry/location/lat", xmlValue))
   lon<-as.numeric(xpathSApply(doc, "/GeocodeResponse/result/geometry/location/lng", xmlValue))
   return(c(lat, lon))
}

Seuraavassa esimerkissä selvitetään Hiljaistenmiestenlaakson sijainti Kangasalla. Ensin funktiolla getCoordinates() etsitään paikan sijainti, ja sitten se esitetään tiekartalla. Kartta haetaan funktiolla GetMap(), ja paikan sijainti punaisella ympyrällä lisätään kartalle funktiolla PlotOnStaticMap():

library(RgoogleMaps)
coords<-getCoordinates("Hiljaistenmiestenlaakso", 1, "Kangasala", "Finland")
MyMap<-GetMap(center=coords, zoom=11, destfile="map.png", maptype="street", size=c(640,640), GRAYSCALE=FALSE)
PlotOnStaticMap(MyMap, lat=coords[1], lon=coords[2], FUN=points, pch=1, col="red", cex=2, add=FALSE)

Muodostuva kuva näyttää seuraavalta:

Kuvaan voi lisätä useampiakin pisteitä kerralla, kunhan antaa funtiolle PlotOnStaticMap() useampia sijainteja vektoreina.


Vastaa

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