Carga de paquetes y de datos
# Paquete para manipulación de datos
library(dplyr)
# Paquete para manejo de datos vectoriales
library(sf)
# Paquetes para manejo de datos raster
library(terra)
# Paquete para manejo de tablas
library(DT)
# Paquetes para graficación
library(ggplot2)
library(plotly)
# Paquete para mapas interactivos
library(leaflet)
# Lectura de una capa vectorial (GeoJSON) de provincias de Costa Rica
provincias <-
st_read(
"https://github.com/tpb728O-programaciongeoespacialr/2021ii/raw/main/datos/ign/delimitacion-territorial-administrativa/provincias-simplificadas_100m.geojson",
quiet = TRUE
)
# Transformación del CRS del objeto provincias
provincias <-
provincias %>%
st_transform(4326)
# Lectura de un archivo CSV con registros de presencia de felinos en Costa Rica
felidae <-
st_read(
"/vsicurl/https://raw.githubusercontent.com/tpb728O-programaciongeoespacialr/2021ii/main/datos/gbif/felidae.csv",
options = c(
"X_POSSIBLE_NAMES=decimalLongitude",
"Y_POSSIBLE_NAMES=decimalLatitude"
),
quiet = TRUE
)
# Asignación de un CRS al objeto felidae
st_crs(felidae) <- 4326
# Lectura de una capa raster de altitud
altitud <-
rast(
"/vsicurl/https://raw.githubusercontent.com/tpb728O-programaciongeoespacialr/2021ii/master/datos/worldclim/altitud.tif"
)
Tabla
felidae %>%
st_drop_geometry() %>%
select(scientificName, stateProvince, locality, eventDate) %>%
datatable()
Gráficos
Estacionalidad
# Gráfico de estacionalidad
felidae %>%
st_drop_geometry() %>%
group_by(mes = format(as.Date(eventDate, "%Y-%m-%d"), "%m")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(mes)) %>%
plot_ly(x = ~ mes,
y = ~ suma_registros,
type="scatter", mode="markers", fill = "tozeroy", fillcolor = "green") %>%
layout(title = "Estacionalidad",
xaxis = list(title = "Mes"),
yaxis = list(title = "Cantidad de registros"))
Historial
felidae %>%
st_drop_geometry() %>%
group_by(anio = format(as.Date(eventDate, "%Y-%m-%d"), "%Y")) %>%
summarize(suma_registros = n()) %>%
filter(!is.na(anio)) %>%
filter(anio >= 2011) %>%
plot_ly(x = ~ anio,
y = ~ suma_registros,
type="bar", color = I("blue")) %>%
layout(title = "Historial",
xaxis = list(title = "Año"),
yaxis = list(title = "Cantidad de registros"))
Mapa
# Conversión del objeto altitud a la clase RasterLayer
altitud_rl <- raster::raster(altitud)
# Mapa leaflet básico con capas de provincias y registros de presencia de felinos
leaflet() %>%
addTiles() %>%
addRasterImage(
altitud_rl,
opacity = 0.6
) %>%
addPolygons(
data = provincias,
color = "black",
fillColor = "transparent",
stroke = TRUE,
weight = 1.0,
) %>%
addCircleMarkers(
data = felidae,
stroke = F,
radius = 4,
fillColor = 'orange',
fillOpacity = 1
)