library(readr)
<- read_csv("df_places.csv")
data <- "XXXXX" # Her skal du indsætte din egen api-nøgle.
api_nøgle register_google(key = api_nøgle)
<- function(bynavn) {
geokod_bynavn <- geocode(as.character(bynavn), output = "latlon")
result return(result)
}
$longitude <- NA
data$latitude <- NA
data
# for loop
for (i in 1:nrow(data)) {
<- data$stednavn[i]
bynavn <- geokod_bynavn(bynavn)
geodata if (!is.na(geodata$lon) & !is.na(geodata$lat)) {
$latitude[i] <- geodata$lat
data$longitude[i] <- geodata$lon
data
}
}
write.csv2(data,"data/df_manuelt_kort.csv")
Andet eksperiment med kort
Forrige artikel beskrev et forsøg på at skabe et kort-interface ved hjælp af en automatiseret genkendelse af stednavne og en liste over koordinater på danske navne. Problemet med eksperimentet er både, at algoritmen kæmper med dansk fra starten af 1800-tallet, og at avisen også indeholder oplysninger om andre lokaliteter end Danmark.
Denne artikel beskriver et forsøg på at skabe et kort af et sample af 1000 artikler, hvor projektmedlemmerne manuelt identificerede stednavne. Disse stednavnes koordinater identificeres efterfølgende via et api-kald til Google Maps.
Koden nedenfor starter med at loade et datasæt struktureret om specifikke stednavne. Hver artikel kan optræde flere gange, hvis det indeholder flere stednavne. Hvert stednavn sendes efterfølgende til Google Maps, der returnerer dets koordinater.
Det endelige kort er, som i forrige tilfælde, skabt med Leaflet og følgende kode.
library(tidyverse)
library(shiny)
library(leaflet)
<- read_csv2("data/df_manuelt_kort.csv") %>%
df_map arrange(dato) %>%
mutate(tekst = paste0("<b>Dato:</b> ",
"<br><b>Sted:</b> ",
dato, "<br><b>Tekst:</b> ",
stednavn, %>%
tekst)) group_by(stednavn) %>%
reframe(tekst = paste0(tekst, collapse = "<p>_____<p>"),
longitude = as.numeric(paste0(longitude)),
latitude = as.numeric(paste0(latitude))) %>%
distinct() %>%
select(tekst, longitude, latitude, stednavn) %>%
filter(!str_detect(stednavn, "Ranzau|Dalby")) %>%
na.omit()
<- fluidPage(
ui leafletOutput("mymap", height = "95vh"),
p()
)
<- function(input, output, session) {
server $mymap <- renderLeaflet({
outputleaflet() %>%
addProviderTiles("Esri.WorldGrayCanvas") %>%
addMarkers(df_map,
lng = df_map$longitude,
lat = df_map$latitude,
popup = df_map$tekst,
popupOptions = popupOptions(maxHeight = 300))
})
}
shinyApp(ui, server)
Du kan gå på opdagelse i kortet her: https://hislabaau.shinyapps.io/Manuelt_kort/