Codificación geográfica con osmdata en R

En una publicación anterior, demostré cómo se pueden generar gráficos de distribución de mapas de calor basados ​​en mapas utilizando el paquete Leaflet en R.En ese ejemplo, implementé una función que envía ubicaciones como cadenas a una API de Open Street Map y luego recibe las coordenadas de latitud y longitud como retorno. valores en formato JSON.

En este post demostraré cómo se puede usar el paquete osmdata para realizar la parte de geocodificación, sin tener que implementar una función “complicada”.

Primero defino un conjunto de ciudades y pueblos para usar como ubicaciones; Los agrego a una plantilla de marco de datos vacía con nombres de encabezados predefinidos, así como recuentos de filas y columnas

# 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=4))
colnames(data_df) = c("location","lat","long","values")

# agregar nombres de ciudades y pueblos como ubicaciones
data_df$location = c("Siegen, Germany",      #1
                     "Kreuztal, Germany",    #2
                     "Netphen, Germany",     #3
                     "Olpe, Germany",        #4 
                     "Freudenberg, Germany", #5
                     "Hilchenbach, Germany", #6
                     "Wilnsdorf, Germany",   #7
                     "Betzdorf, Germany",    #8
                     "Dillenburg, Germany",  #9
                     "Marburg, Germany",     #10
                     "Biedenkopf, Germany",  #11
                     "Koblenz, Germany",     #12
                     "Erndtebrück, Germany", #13
                     "Herborn, Germany",     #14
                     "Cölbe, Germany",       #15
                     "Haiger, Germany",      #16
                     "Krombach, Germany",    #17
                     "Wenden, Germany",      #18
                     "Betzdorf, Germany",    #19
                     "Münchhausen, Germany"  #20
                     )

A continuación, geocodifico las ubicaciones usando el paquete osmdata en R.

# importando paquete osmdata en R
library(osmdata)

# uso de la función getbb () para geocodificar ubicaciones
for(i in 1:nrow(data_df)){
  coordinates = getbb(data_df$location[i])
  data_df$long[i] = (coordinates[1,1] + coordinates[1,2])/2
  data_df$lat[i] = (coordinates[2,1] + coordinates[2,2])/2
}

Ahora el marco de datos contiene nombres de ubicación y coordenadas geocodificadas de longitud y latitud; Además, agrego algún valor de observación distribuido aleatoriamente por ubicación (esto definirá la intensidad del color del gráfico del mapa de calor).

# agregar valores distribuidos aleatoriamente por ubicación (distribución uniforme)
data_df$values = runif(n = 20, min = 0, max = 100)

En un paso final, genero un mapa de calor que muestra la distribución de los valores de observación por ubicación, usando Leaflet en R.

# 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),8) %>%
  addHeatmap(lng=~long,lat=~lat,intensity=~values,max=100,radius=30,blur=20)

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