#Librerias
require(raster)
require(rgdal)
require(tmaptools)
require(rasterVis)
library(leaflet)
library(sf)
library(tmap)
library(ggplot2)
library(terra)
# Cargar Datos - Temperatura promedio (worldclim.org)
archivos_temp <- list.files("wc2.1_10m_tavg/", pattern = "\\.tif$", full.names = TRUE)
temperaturas <- stack(archivos_temp)
print(temperaturas)
## class : RasterStack
## dimensions : 1080, 2160, 2332800, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.1666667, 0.1666667 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## names : wc2.1_10m_tavg_01, wc2.1_10m_tavg_02, wc2.1_10m_tavg_03, wc2.1_10m_tavg_04, wc2.1_10m_tavg_05, wc2.1_10m_tavg_06, wc2.1_10m_tavg_07, wc2.1_10m_tavg_08, wc2.1_10m_tavg_09, wc2.1_10m_tavg_10, wc2.1_10m_tavg_11, wc2.1_10m_tavg_12
## min values : -45.88400, -44.80000, -57.92575, -64.19250, -64.81150, -64.35825, -68.46075, -66.52250, -64.56325, -55.90000, -43.43475, -45.32700
## max values : 34.00950, 32.82425, 32.90950, 34.19375, 36.25325, 38.35550, 39.54950, 38.43275, 35.79000, 32.65125, 32.78800, 32.82525
# Cargar Datos - Precipitaciones (worldclim.org)
archivos_prec <- list.files("wc2.1_10m_prec/", pattern = "\\.tif$", full.names = TRUE)
precipitaciones <- stack(archivos_prec)
print(precipitaciones)
## class : RasterStack
## dimensions : 1080, 2160, 2332800, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.1666667, 0.1666667 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## names : wc2.1_10m_prec_01, wc2.1_10m_prec_02, wc2.1_10m_prec_03, wc2.1_10m_prec_04, wc2.1_10m_prec_05, wc2.1_10m_prec_06, wc2.1_10m_prec_07, wc2.1_10m_prec_08, wc2.1_10m_prec_09, wc2.1_10m_prec_10, wc2.1_10m_prec_11, wc2.1_10m_prec_12
## min values : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## max values : 908, 793, 720, 1004, 2068, 2210, 2381, 1674, 1955, 2328, 718, 806
# Rangos óptimos - temperatura para caña de azúcar
temp_min <- 22.5
temp_max <- 28
# Máscara áreas con rango de temperatura
temp_adecuada <- calc(temperaturas, function(x) x >= temp_min & x <= temp_max)
# Mapa de aptitud climática basado en temperatura media
levelplot(temp_adecuada, main = "Mapa Global de Aptitud Climática - Caña de Azúcar (Temperatura Media)",
col.regions = rev(terrain.colors(100)),
at = seq(0, 1, length = 101))
# Cargar primera capa (anual)
prec_anual <- raster(archivos_prec[[1]])
# Rangos óptimos - precipitaciones para caña de azúcar
prec_anual_min <- 1500
prec_anual_max <- 3500
# Paleta de colores
colores_personalizados <- rev(terrain.colors(10)) # Usa una paleta personalizada
# intervalos manuales para los valores de precipitación
intervalos <- c(0, 1500, 2000, 2500, 3000, 3500, 4000)
# Graficar utilizando intervalos y nueva paleta
levelplot(prec_anual,
main = "Mapa Global de Aptitud Climática - Caña de Azúcar (Precipitación Anual)",
col.regions = colores_personalizados,
at = intervalos,
xlab = "Longitud", ylab = "Latitud")
# Rangos óptimos precipitación mensual para caña de azúcar
prec_mensual_min <- 125
prec_mensual_max <- 290
# Máscara rango de precipitación mensual en todas las capas
prec_mensual_adecuada <- calc(precipitaciones, function(x) all(x >= prec_mensual_min & x <= prec_mensual_max, na.rm = TRUE))
# Mapa de aptitud climática de la precipitación mensual para la caña de azúcar
levelplot(prec_mensual_adecuada, main = "Mapa Global de Aptitud Climática - Caña de Azúcar (Precipitación Mensual)",
col.regions = rev(terrain.colors(100)),
at = seq(0, 1, length = 101))
# Cargar el shapefile global de países
shapefile_path <- "world-countries/World_Countries_Generalized.shp"
world_shapefile <- st_read(shapefile_path)
## Reading layer `World_Countries_Generalized' from data source
## `/Users/manuel/R-Studio-Jav/analis-geoespacial/infor2-rmarkdown-m1u2/world-countries/World_Countries_Generalized.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 251 features and 4 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -20037510 ymin: -30240970 xmax: 20037510 ymax: 18418390
## Projected CRS: WGS 84 / Pseudo-Mercator
# Nombres de las columnas en el shapefile
print(names(world_shapefile))
## [1] "COUNTRY" "ISO" "COUNTRYAFF" "AFF_ISO" "geometry"
# Filtrar dos países con áreas de alto potencial para la caña de azúcar (ejemplo: Brasil, Tailandia)
selected_countries <- world_shapefile[world_shapefile$COUNTRY %in% c("Brazil", "Thailand"), ]
# Mapa visual
tmap_mode("view")
## tmap mode set to interactive viewing
tm_shape(selected_countries) +
tm_polygons(col = "gray", border.col = "black") +
tm_layout(title = "Países con Potencial para la Caña de Azúcar")
# Definir las coordenadas de puntos específicos en el Valle del Cauca (ejemplo)
puntos <- data.frame(
nombre = c("Punto1", "Punto2", "Punto3"),
lon = c(-76.522, -76.529, -76.444),
lat = c(3.451, 3.404, 3.537)
)
# Datos temperatura para cada punto
temp_data <- extract(temperaturas, SpatialPoints(puntos[, c("lon", "lat")]), df = TRUE)
# datos precipitación para cada punto
prec_data <- extract(precipitaciones, SpatialPoints(puntos[, c("lon", "lat")]), df = TRUE)
# Combinar las series con los nombres de los puntos
temp_data <- cbind(puntos, temp_data)
prec_data <- cbind(puntos, prec_data)
# Convertir datos a formato largo (long format) para ggplot
temp_long <- reshape2::melt(temp_data, id.vars = c("nombre", "lon", "lat"))
prec_long <- reshape2::melt(prec_data, id.vars = c("nombre", "lon", "lat"))
# Gráficos de series temporales
temp_plot <- ggplot(temp_long, aes(x = variable, y = value, group = nombre, color = nombre)) +
geom_line() +
labs(title = "Series de Temperatura Promedio", x = "Meses", y = "Temperatura (°C)") +
theme_minimal()
prec_plot <- ggplot(prec_long, aes(x = variable, y = value, group = nombre, color = nombre)) +
geom_line() +
labs(title = "Series de Precipitación Mensual", x = "Meses", y = "Precipitación (mm)") +
theme_minimal()
# Mostrar los gráficos
print(temp_plot)
print(prec_plot)
# Coordenadas de los puntos de referencia Valle del Cauca
puntos <- data.frame(
nombre = c("Punto1", "Punto2", "Punto3"),
lon = c(-76.522, -76.529, -76.444),
lat = c(3.451, 3.404, 3.537)
)
# Extraer datos de temperatura y precipitación para los puntos de referencia
temp_puntos <- extract(temperaturas, SpatialPoints(puntos[, c("lon", "lat")]), df = TRUE)
prec_puntos <- extract(precipitaciones, SpatialPoints(puntos[, c("lon", "lat")]), df = TRUE)
# Calcular promedios para cada punto
temp_promedios <- colMeans(temp_puntos[, -1], na.rm = TRUE)
prec_promedios <- colMeans(prec_puntos[, -1], na.rm = TRUE)
# Calcular distancia euclidiana entre la referencia y las celdas globales
calcular_similaridad <- function(temp_raster, prec_raster, temp_valor, prec_valor) {
dist_temp <- abs(temp_raster - temp_valor)
dist_prec <- abs(prec_raster - prec_valor)
sqrt(dist_temp^2 + dist_prec^2)
}
# Raster de similaridad para cada punto de referencia
mapas_similaridad <- lapply(1:nrow(puntos), function(i) {
distancia <- overlay(temperaturas[[1]], precipitaciones[[1]],
fun = function(t, p) calcular_similaridad(t, p, temp_promedios[i], prec_promedios[i]))
return(distancia)
})
# Visualizar todos los mapas de similaridad
combined_plots <- stack(mapas_similaridad)
levelplot(combined_plots,
names.attr = puntos$nombre,
col.regions = rev(terrain.colors(100)),
main = "Comparación de Mapas de Similaridad para los Puntos de Referencia",
xlab = "Longitud", ylab = "Latitud")
El mapa muestra regiones con similitudes climáticas destacadas para la agricultura y la siembra de caña de azucar, particularmente en partes de África, Sudamérica, y el sudeste asiático.
Las regiones con similitudes significativas tienden a estar en zonas tropicales y subtropicales, lo que indica que los puntos seleccionados tienen condiciones climáticas comparables con estas regiones.
Cada punto tiene diferencias notables en la distribución de áreas con alta similitud. Esto podría deberse a diferencias en los promedios de temperatura y precipitación en cada punto.