Instantly share code, notes, and snippets.

@tts /global.R
Last active Aug 29, 2015

Embed
What would you like to do?
Finnish Breeding Bird Atlas (1-2) open data as a Shiny web app
library(shiny)
library(leaflet)
library(shinythemes)
library(dplyr)
# See http://tuijasonkkila.fi/blog/2015/03/birds-on-a-map/
# http://atlas3.lintuatlas.fi/taustaa/kaytto
#
# linnut <- read.table("lajit.csv", sep = ",", stringsAsFactors = F, quote = "")
# names(linnut) <- c("lyhenne", "latina", "suomi", "ruotsi", "englanti", "julkisuus")
#
# ruudut <- read.table("ruudut.csv", sep = ",", stringsAsFactors = F, quote = "")
# names(ruudut) <- c("N", "E", "selvitysaste1", "selvitysaste2", "selvitys12")
#
# http://www.luomus.fi/fi/tietotekniikkapalvelut
# coord <- read.table("allcoord.csv", header = F, sep = ",", quote = "", stringsAsFactors = F)
#
# cd <- coord %>%
# mutate(N = V2, E = V3, lat = V5, lon = V6) %>%
# select(N, E, lat, lon)
#
# havainnot <- read.table("havainnot.csv", sep = ",", stringsAsFactors = F, quote = "")
# names(havainnot) <- c("lyhenne", "N", "E", "varmuus1", "varmuus2", "varmuus12")
#
# lintuhavainnot <- left_join(linnut, havainnot, by = "lyhenne")
#
# data <- inner_join(lintuhavainnot, cd, by = c("N" = "N", "E" = "E"))
#
# 4 Blues from ColorBrewer
# data$color <- sapply(data$varmuus12, function(x) {
# if (x == 2) "#a1dab4"
# else if (x == 3) "#41b6c4"
# else if (x == 4) "#225ea8"
# else "#ffffcc"
#})
#
#
# write.table(data, file = "birds.csv", sep = ";", row.names = F)
data <- read.table(file = "birds.csv", sep = ";", header = T, stringsAsFactors = F)
data$ruotsi <- sapply(data$ruotsi, function(x) iconv(x, from = "ISO-8859-1", to = "UTF-8"))
data$suomi <- sapply(data$suomi, function(x) iconv(x, from = "ISO-8859-1", to = "UTF-8"))
shinyServer(function(input, output, session) {
# See http://stackoverflow.com/a/28985414/2613636
observe({
updateSelectizeInput(session, 'birds', choices = c("", unique(data[[input$lan]])))
})
birds <- reactive({
if( is.null(input$birds) )
return()
data[data[[isolate(input$lan)]] == input$birds, ]
})
output$leaflet <- renderLeaflet({
m <- leaflet(birds())
m %>%
addTiles() %>%
addCircles(lat = ~lat, lng = ~lon,
color = ~color)
})
output$species <- renderText({
paste(birds()$suomi[1],
birds()$ruotsi[1],
birds()$englanti[1],
birds()$latina[1],
birds()$lyhenne[1],
sep = "<br/>")
})
})
shinyUI(fluidPage(
theme = shinytheme("cosmo"),
titlePanel("Finnish Breeding Bird Atlas"),
sidebarLayout(
sidebarPanel(
br(),
selectInput(inputId = "lan",
label = "Language:",
choices = c("Finnish" = "suomi",
"Swedish" = "ruotsi",
"English" = "englanti",
"Latin" = "latina",
"Acronym" = "lyhenne"),
selected = "englanti"
),
br(),
selectizeInput(
inputId = "birds",
label = "Select species",
multiple = F,
choices = c("", unique(data[["englanti"]]))
),
br(),
p("First, select language (or acronym) and then species"),
br(),
p("The darker blue the circle, the bigger the certainty that the species was breeding in that grid"),
br(),
HTML("Results of the 1st and 2nd Finnish bird atlas. Finnish Museum of Natural History, University of Helsinki. Used with Creative Commons Attribution 3.0 -license")
),
mainPanel(
tabsetPanel(
tabPanel("Map",
leafletOutput("leaflet"),
br(),
htmlOutput("species"))
)
)
)
))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment