-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBioMAD
107 lines (95 loc) · 3.09 KB
/
BioMAD
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#Load libraries
library(shiny)
library(leaflet)
library(mapview)
library(sp)
library(rgdal)
library(raster)
ui <- fluidPage(
# App title ----
titlePanel("BioMAD"),
sidebarPanel(
p(),
h1("Ingrese puntos:"),
p(),
numericInput("long", label = h3("Longitud:"), value = -73.839222),
numericInput("lat", label = h3("Latitud:"), value = 4.721806),
actionButton("locality", "Mapear"),
p(),
# Button
downloadButton("downloadData", "Download"),
p(),
p("BioMAD -BioModelos Apoya Decisiones-, es una herramienta desarrollada para generar
listados preliminares de especies a partir de la consulta de los mapas validados
disponibles en BioModelos."),
p(" Se sugiere usar con prudencia los listados generados. Si desea
conocer las distribuciones de las especies listadas, por favor consulte",
a("BioModelos.", href = "http://biomodelos.humboldt.org.co/")),
"Creado por Elkin A. Noguera-Urbano usando", a("Shiny.",
href = "http://shiny.rstudio.com")),
img(
src = "humboldt.png",
width = "850px", height = "100px"
),
mainPanel(
leafletOutput("mymap"),
p(),
fluidRow(
column(4,
DT::dataTableOutput('table')
)
)
)
)
server <- function(input, output, session) {
# Crea formato para los datos de la lacalidad ingresados por el usuario.
points <- eventReactive(input$locality, {
loc_user<-cbind(input$long, input$lat)
print(loc_user)
}, ignoreNULL = FALSE)
# Dibuja el mapa en el panel principal.
output$mymap <- renderLeaflet({
leaflet() %>%
setView(lat = 4.721806, lng = -73.839222, zoom = 7) %>%
addTiles() %>%
addEasyButton(easyButton(
icon="fa-globe", title="Zoom to Level 5",
onClick=JS("function(btn, map){ map.setZoom(5); }"))) %>%
addMarkers(data = points())
})
# Dibuja la localidad base en el mapa.
observeEvent(input$locality,{
isolate({
new_zoom <- 10
if(!is.null(input$map_zoom)) new_zoom <- input$map_zoom
leafletProxy('mymap') %>%
setView(lng = input$long, lat = input$lat, zoom = new_zoom)
})
})
# Carga la localidad y cruza con shapefiles BioModelos.
# spec_cross representa la tabla producto del cruce BioModelos * localidad.
spec_cross <-eventReactive(input$locality, {
temp<-cbind(input$long, input$lat)
temp<-as.data.frame(temp)
colnames(temp)<-c("x","y")
temp <- SpatialPointsDataFrame(temp,temp)
crs(temp) <- "+proj=longlat +datum=WGS84 +no_defs"
maps<-readOGR("./appData/Biom_UICN.shp") # Cargar archivo shapefile BioModelos.
as.data.frame(over(temp,maps,returnList = TRUE))
})
# Muestra la tabla en el panel principal.
# Table of selected dataset ----
output$table <- DT::renderDataTable({
spec_cross()
})
# Permite descargar la tabla "Downloadable csv" resultante.
output$downloadData <- downloadHandler(
filename = function() {
paste("Especies sugeridas",date(),".csv", sep = " ")
},
content = function(file) {
write.table(spec_cross(), file, row.names = FALSE,sep = ",")
}
)
}
shinyApp(ui, server)