Geokodning af rumlige data med tidygeocoder i R

I tidligere indlæg har jeg demonstreret, hvordan man geokoder placeringser ved hjælp af Open Street Map API på to forskellige måder.

Den første tilgang var at implementere en funktion, der sender en streng direkte til OSM API ved hjælp af http. API’en returnerer derefter rumlige koordinater i json-format.

Den anden tilgang var at bruge osmdata-pakken i R, mere specifikt dens getbb() -funktion. Denne funktion returnerer en matrix med bredde- og længdegradsværdier for en given placeringsstreng, dvs. den gør det samme som den første funktion uden at skulle implementeres fra bunden af.

I dette indlæg viser jeg en anden pakke i R som giver mulighed for simpel geokodning ved hjælp af OSM API: Tidygeocoder R-pakken.

I nedenstående linjer konstruerer jeg en datarammeskabelon med foruddefinerede placeringsnavne (tegnstrenge).

# definerer en datarammeskabelon, der skal udfyldes gennem geokodningsprocessen
data_df = as.data.frame(matrix(nrow=20,ncol=3))
colnames(data_df) = c("location","lat","long")

# tilføjelse af by- og bynavne som placeringer
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
                     )

Dernæst geokoder jeg placeringerne ved hjælp af tidygeocoder-pakken i R. Mere specifikt bruger jeg dens geo_osm-funktion:

# importer tidygeocoder-pakke i R
library(tidygeocoder)

# gekodning ved hjælp af geo_osm ()-funktionen til at geokode placeringer
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
}

Datarammen er nu fuldt udfyldt. Den indeholder placeringsnavne og deres respektive bredde- og længdegradskoordinater.

I et sidste trin plotter jeg placeringerne i datarammen på et kort ved hjælp af markører.

# importerende folder, folder. ekstra og magrittr
library(leaflet)
library(leaflet.extras)
library(magrittr)

# opretter et varmekort til burgerens søgeintensitet i henhold til Googles tendenser
data_df %>%
  leaflet() %>% 
  addTiles() %>% 
  addProviderTiles(providers$OpenStreetMap.DE) %>% 
  setView(mean(data_df$long),mean(data_df$lat),5) %>%
  addMarkers()

Leave a Reply

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Close

Meta