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()
Cientista de dados com foco em simulação, otimização e modelagem em R, SQL, VBA e Python
Leave a Reply