Geocodificación de datos espaciales con tidygeocoder en R

En publicaciones anteriores, he demostrado cómo geocodificar cadenas de ubicación utilizando la API de Open Street Map de dos maneras diferentes.

El primer enfoque fue implementar una función que envía una cadena a la API de OSM directamente, utilizando http. Luego, la API devuelve coordenadas espaciales en formato json.

El segundo enfoque fue usar el paquete osmdata en R, más específicamente su función getbb (). Esta función devuelve una matriz con valores de latitud y longitud para una cadena de ubicación determinada, es decir, hace lo mismo que la función implementada para el primer enfoque, pero no debe implementarse desde cero.

En esta publicación muestro otro paquete en R que permite una geocodificación simple, usando la API de OSM: El paquete R tidygeocoder.

En las líneas siguientes, construyo una plantilla de marco de datos con nombres de ubicación predefinidos (cadenas de caracteres).

# definir una plantilla de marco de datos para completar el proceso de codificación geográfica
data_df = as.data.frame(matrix(nrow=20,ncol=3))
colnames(data_df) = c("location","lat","long")

# agregar nombres de ciudades y pueblos como ubicaciones
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
                     )

A continuación, geocodifico las ubicaciones usando el paquete tidygeocoder en R. Más específicamente, uso su función geo_osm

# importando el paquete tidygeocoder en R
library(tidygeocoder)

# usando la función geo_osm () para geocodificar ubicaciones
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
}

El marco de datos ahora está completamente poblado. Contiene nombres de ubicación y sus respectivas coordenadas de latitud y longitud.

En un paso final, utilizo el paquete Leaflet en R para trazar las ubicaciones en un mapa usando marcadores.

# importando prospecto, prospecto.extras y magrittr
library(leaflet)
library(leaflet.extras)
library(magrittr)

# crear un mapa de calor para la intensidad de búsqueda de hamburguesas de acuerdo con las tendencias de Google
data_df %>%
  leaflet() %>% 
  addTiles() %>% 
  addProviderTiles(providers$OpenStreetMap.DE) %>% 
  setView(mean(data_df$long),mean(data_df$lat),5) %>%
  addMarkers()

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Close

Meta