Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
GISDday 2014 Geocodierung mit R am Beispiel Google Maps API
1. Geographisches Institut / Abteilung Geomatik
Geocodierung mit RStudio
am Beispiel Google Maps API
Thomas Mönkemeier, B.Eng.
Prof. Dr. Tobia Lakes
Humboldt-Universität zu Berlin
moenkemt@geo.hu-berlin.de
2. Geographisches Institut / Abteilung Geomatik
Aufgabe: Geocodierung
• Häufige Anforderung aus der Praxis am Institut:
„Liste mit Adressen in ein Shape umwandeln“
• Gegeben: Liste mit Adressen
• Gewünscht: Shape für irgendeine GIS-Software
• Verwendung von RStudio mit der Google Maps API
als kleines Beispiel für Flexibilität von R
3. Geographisches Institut / Abteilung Geomatik
Umgebung: RStudio
• R ist eine freie Programmiersprache für statistisches Rechnen
(z.B. Regressionsanalyse, ANOVA...) und statistische Grafiken
• R gilt zunehmend als Standardsprache für statistische
Problemstellungen
• R ist open source und Teil des GNU-Projekts
• Kommandozeilenkonsole führt Befehle direkt aus
• RStudio wohl die beliebteste Entwicklungsumgebung
• Packages für R stellen weitere Funktionen bereit
4. Geographisches Institut / Abteilung Geomatik
Beispiel: Google Maps API
• Aufgabe: Geocodierung
• Vorteil: Toleranz bei Eingabefehlern
• Webservice, ohne Registrierung verfügbar
• Kein API-Schlüssel mehr erforderlich
• Lizenzbedingungen: Maximal 2500 Anfragen pro Tag,
Ergebnisse müssen auf einer GoogleMap angezeigt werden
• Beispiel übertragbar auf andere Geocoder
wie OpenCage, Nominatim, BingMaps...
5. Geographisches Institut / Abteilung Geomatik
Funktion für Google Maps API
library(RCurl)
library(RJSONIO)
googleurl=function(address, format = "json", sensor
= "false") {
root="http://maps.google.com/maps/api/geocode/"
url=paste(root, format, "?address=", address,
"&sensor=", sensor, sep = "")
return(URLencode(url))
}
6. Geographisches Institut / Abteilung Geomatik
Liste der Adressen einlesen
• Komplette Adressen in erster Spalte (für Google Maps)
• Optional: Weitere Attribute CSV-getrennt
• Adress-Liste einlesen in R-Studio Dataframe:
liste=read.csv("adressen.txt", header=FALSE,
sep=";", fileEncoding="UTF-8")
zeilen=nrow(liste)
spalten=ncol(liste)
8. Geographisches Institut / Abteilung Geomatik
Punkte aus Liste erzeugen
• Spatial Data Packages für R einbinden:
library(sp)
library(rgdal)
library(raster)
• Spatial Dataframe erzeugen aus Liste:
shapefile = SpatialPointsDataFrame
(liste[(spalten+1):(spalten+2)], liste)
• Räumliches Bezugssystem festlegen:
projection(shapefile)=
CRS("+proj=longlat +datum=WGS84")
9. Geographisches Institut / Abteilung Geomatik
Optional: Höhenangaben
• SRTM-Daten für die Höhe bei Bedarf vorher ergänzen
• Raster-Package hält geographische Daten vor:
srtm=getData('alt',country="DEU")
• Spalte für Höhe anbinden:
liste=cbind(liste,ele=
extract(srtm,liste[(spalten+1):(spalten+2)],
method="bilinear"))
10. Geographisches Institut / Abteilung Geomatik
Punkte als Shape speichern
• Spatial Dataframe zur Kontrolle plotten:
plot(shapefile)
• Und schließlich abspeichern:
writeOGR(shapefile, dsn = '.',
layer ='adressen',
driver = 'ESRI Shapefile')
• Fertig!
11. Geographisches Institut / Abteilung Geomatik
Selbst ausprobieren
• Download R (z.B. für Windows):
http://cran.rstudio.com/bin/windows/base/
• Download RStudio Desktop Open Source Edition:
http://www.rstudio.com/
• Software installieren, Libraries aus Packages holen
• Adressen in Textdatei vorbereiten
• Beispiel für erste eigene Schritte verwenden
• Am Ergebnis erfreuen und weitermachen!