In früheren Beiträgen habe ich gezeigt, wie Standortdaten mithilfe der Open Street Map-API auf zwei verschiedene Arten geokodiert werden können.
Der erste Ansatz bestand darin, eine Funktion zu implementieren, die mithilfe von http eine Zeichenfolge direkt an die OSM-API sendet. Die API gibt dann räumliche Koordinaten im JSON-Format zurück.
Der zweite Ansatz bestand darin, das osmdata-Paket in R zu verwenden, genauer gesagt die Funktion getbb(). Diese Funktion gibt eine Matrix mit Breiten- und Längengradwerten für eine gegebene Ortszeichenfolge zurück, d.h. sie macht dasselbe wie der erste Ansatz, muss aber nicht von Grund auf neu implementiert werden.
In diesem Beitrag zeige ich ein weiteres Paket in R das eine einfache Geokodierung mithilfe der OSM-API ermöglicht: Das Tidygeocoder R-Paket.
In den folgenden Zeilen konstruiere ich eine Datenrahmenvorlage mit vordefinierten Ortsnamen (Zeichenfolgen).
# Definieren einer Datenrahmenvorlage zum Auffüllen des Geokodierungsprozesses
data_df = as.data.frame(matrix(nrow=20,ncol=3))
colnames(data_df) = c("location","lat","long")
# Hinzufügen von Stadt- und Ortsnamen als Standorte
data_df$location = c("Hamburg, Germany", #1
"Dortmund, Germany", #2
"Stuttgart, Germany", #3
"Berlin, Germany", #4
"Dresden, Germany", #5
"Bremen, Germany", #6
"Leipzig, Germany", #7
"Kiel, Germany", #8
"Rostock, Germany", #9
"Karlsruhe, Germany", #10
"Siegen, Germany", #11
"Bonn, Germany", #12
"Essen, Germany", #13
"Gelsenkirchen, Germany", #14
"Marburg, Germany", #15
"Frankfurt am Main, Germany", #16
"Heidelberg, Germany", #17
"Freiburg, Germany", #18
"Pforzheim, Germany", #19
"Flensburg, Germany" #20
)
Als nächstes gekodiere ich die Standorte mit dem tidygeocoder-Paket in R. Insbesondere verwende ich die geo_osm-Funktion
# importiere das Tidygeocoder-Pakets in R.
library(tidygeocoder)
# verwende die Funktion geo_osm () zum Geocodieren von Standorten
for(i in 1:nrow(data_df)){
coordinates = geo_osm(data_df$location[i])
data_df$long[i] = coordinates$long
data_df$lat[i] = coordinates$lat
}
Der Datenrahmen ist jetzt vollständig ausgefüllt. Es enthält Ortsnamen und ihre jeweiligen Längen- und Breitengradkoordinaten.
In einem letzten Schritt verwende ich das Leaflet-Paket in R um die Positionen auf einer Karte mithilfe von Markierungen zu zeichnen.
# leaflet, leaflet.extras und magrittr importieren
library(leaflet)
library(leaflet.extras)
library(magrittr)
# Erstellung einer Heatmap für die Burger-Suchintensität gemäß Google-Trends
data_df %>%
leaflet() %>%
addTiles() %>%
addProviderTiles(providers$OpenStreetMap.DE) %>%
setView(mean(data_df$long),mean(data_df$lat),5) %>%
addMarkers()
Wirtschaftsingenieur mit Interesse an Optimierung, Simulation und mathematischer Modellierung in R, SQL, VBA und Python
Leave a Reply