Geocodificação de dados espaciais com tidygeocoder em R

Em posts anteriores, demonstrei como geocodificar strings de localização usando a API Open Street Map de duas maneiras diferentes.

A primeira abordagem foi implementar uma função que enviasse uma string diretamente para a API OSM, usando http. A API então retorna as coordenadas espaciais no formato json.

A segunda abordagem foi usar o pacote osmdata em R, mais especificamente sua função getbb(). Esta função retorna uma matriz com valores de latitude e longitude para uma determinada string de localização, ou seja, ela faz o mesmo que a função implementada para a primeira abordagem, mas não deve ser implementada do zero.

Neste post eu mostro outro pacote em R que permite geocodificação simples, usando a API OSM: O pacote R de arrumaçãogeocoder.

Nas linhas abaixo, construo um modelo de quadro de dados com nomes de local predefinidos (cadeias de caracteres).

data_df = as.data.frame(matrix(nrow=20,ncol=3))
colnames(data_df) = c("location","lat","long")

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
                     )

Em seguida, geocodifico os locais usando o pacote arrumageocoder em R. Mais especificamente, uso sua função geo_osm.

library(tidygeocoder)

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
}

O quadro de dados agora está totalmente preenchido. Ele contém nomes de locais e suas respectivas coordenadas de latitude e longitude.

Em uma etapa final, uso o pacote Leaflet em R para plotar os locais em um mapa usando marcadores.

library(leaflet)
library(leaflet.extras)
library(magrittr)

data_df %>%
  leaflet() %>% 
  addTiles() %>% 
  addProviderTiles(providers$OpenStreetMap.DE) %>% 
  setView(mean(data_df$long),mean(data_df$lat),5) %>%
  addMarkers()

You May Also Like

Leave a Reply

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.