1. Utilizando los datos de clima de línea base a nivel global, genere un código en R que permita construir mapas de aptitud en términos climáticos para la caña de azúcar (con base en los rangos óptimos). Grafique los mapas con una escala de colores adecuada.

library(geodata)
library(terra)

# Descargar datos globales
temperatura_global <- worldclim_global(var = "tavg", res = 5, path = "Datos", version = 2.1)
precipitacion_global <- worldclim_global(var = "prec", res = 5, path = "Datos", version = 2.1)

# Calcular temperatura media anual y precipitación total anual
temp_media <- mean(temperatura_global)
prec_media <- sum(precipitacion_global)

# Definir rangos aptos para temperatura y precipitación
rango_t_apto <- (temp_media >= 22.5) & (temp_media <= 28)
rango_p_apto <- (prec_media >= 1500) & (prec_media <= 3500)


# Paleta para temperatura media 
my_palette_t <- colorRampPalette(c("#56B4E9", "#F0E442", "#E69F00")) 

# Graficar temperatura media anual
plot(temp_media, col = my_palette_t(20), main = "Temperatura media anual (°C)",
     legend.args=list(text='°C', side=4, font=2, line=2.5, cex=0.8))

# Graficar áreas aptas para temperatura 
plot(rango_t_apto, col = c("lightgrey", "forestgreen"), legend = FALSE, 
     main = "Áreas con temperatura entre 22.5°C y 28°C")

# Para agregar leyenda manual
legend("topright", legend = c("No apto", "Apto"), fill = c("lightgrey", "forestgreen"))

Los mapas de temperatura media anual y precipitación acumulada muestran que las áreas óptimas para el cultivo de caña de azúcar se ubican principalmente en regiones con temperaturas entre 22.5 °C y 28 °C y precipitaciones anuales entre 1500 mm y 3500 mm. Estas condiciones climáticas son esenciales para el crecimiento adecuado y la productividad de la caña. Las zonas aptas identificadas en los mapas corresponden a regiones tropicales y subtropicales, donde se espera un desarrollo agrícola favorable. La visualización con paletas de colores facilita la identificación rápida de estas áreas, lo que es útil para la planificación agrícola y estudios de potencial productivo a nivel global.

library(terra)

# Paleta para precipitación: verde claro a azul oscuro
my_palette_p <- colorRampPalette(c("#A8E6CF", "#379683"))

# Suma anual de precipitación global
prec_media <- sum(precipitacion_global)

# Graficar precipitación acumulada anual con nueva paleta
plot(prec_media, col = my_palette_p(20), main = "Precipitación acumulada anual (mm)",
     legend.args=list(text='mm', side=4, font=2, line=2.5, cex=0.8))

# Paleta para áreas aptas: gris claro y naranja fuerte
col_aptos <- c("lightgrey", "#FF6F61")  # naranja fuerte

# Graficar áreas aptas para precipitación
plot(rango_p_apto, col = col_aptos, legend = FALSE,
     main = "Áreas con precipitación entre 1500 mm y 3500 mm")

# Leyenda manual
legend("topright", legend = c("No apto", "Apto"), fill = col_aptos)

2. Áreas potenciales para caña de azucar en Colombia Identifique países con áreas de alto potencial para la caña de azúcar y realice un corte para estas zonas con el shape global. Grafique los mapas con una escala de colores adecuada.

library(terra)
library(rnaturalearth)
library(sf)

# Cargar datos climáticos globales
temperatura_global <- worldclim_global(var = "tavg", res = 5, path = "Datos", version = 2.1)
precipitacion_global <- worldclim_global(var = "prec", res = 5, path = "Datos", version = 2.1)

# Calcular temperatura media anual global 
temp_media_global <- mean(temperatura_global)

# Calcular precipitación acumulada anual global 
prec_media_global <- sum(precipitacion_global)

# Función para recortar raster y calcular zonas aptas
zonas_aptas_pais <- function(pais_sf, temp_raster, prec_raster) {
  ext_p <- terra::ext(pais_sf)
  temp_crop <- terra::crop(temp_raster, ext_p)
  temp_mask <- terra::mask(temp_crop, terra::vect(pais_sf))
  
  prec_crop <- terra::crop(prec_raster, ext_p)
  prec_mask <- terra::mask(prec_crop, terra::vect(pais_sf))
  
  rango_temp <- (temp_mask >= 22.5) & (temp_mask <= 28)
  rango_prec <- (prec_mask >= 1500) & (prec_mask <= 3500)
  zonas_aptas <- rango_temp & rango_prec
  
  return(list(temp = temp_mask, prec = prec_mask, aptas = zonas_aptas))
}

# Obtener shapes de países
map_paises <- rnaturalearth::ne_countries(scale = "medium", returnclass = "sf")
colombia <- subset(map_paises, admin == "Colombia")
indonesia <- subset(map_paises, admin == "Indonesia")

# Aplicar función para ambos países
res_colombia <- zonas_aptas_pais(colombia, temp_media_global, prec_media_global)
res_indonesia <- zonas_aptas_pais(indonesia, temp_media_global, prec_media_global)

# Paletas para graficar
paleta_temp <- colorRampPalette(c("#56B4E9", "#F0E442", "#E69F00"))(20)
paleta_prec <- colorRampPalette(c("#A8E6CF", "#379683"))(20)

# Graficar resultados Colombia
plot(res_colombia$temp, col = paleta_temp, main = "Temperatura media en Colombia")
plot(sf::st_geometry(colombia), add = TRUE)

plot(res_colombia$prec, col = paleta_prec, main = "Precipitación total en Colombia")
plot(sf::st_geometry(colombia), add = TRUE)

plot(res_colombia$aptas, col = c("lightgrey", "darkgreen"), main = "Zonas aptas en Colombia")
legend("topright", legend = c("No apto", "Apto"), fill = c("lightgrey", "darkgreen"))
plot(sf::st_geometry(colombia), add = TRUE)

# Graficar resultados Indonesia
plot(res_indonesia$temp, col = paleta_temp, main = "Temperatura media en Indonesia")
plot(sf::st_geometry(indonesia), add = TRUE)

plot(res_indonesia$prec, col = paleta_prec, main = "Precipitación total en Indonesia")
plot(sf::st_geometry(indonesia), add = TRUE)

plot(res_indonesia$aptas, col = c("lightgrey", "darkgreen"), main = "Zonas aptas en Indonesia")
legend("topright", legend = c("No apto", "Apto"), fill = c("lightgrey", "darkgreen"))
plot(sf::st_geometry(indonesia), add = TRUE)

Al recortar los mapas globales para Colombia e Indonesia, se evidencia que ambos países cuentan con extensas zonas climáticamente aptas para el cultivo de caña de azúcar. Sin embargo, la distribución espacial y extensión de estas zonas varía según las condiciones locales de temperatura y precipitación. En Colombia, las zonas aptas están mayormente concentradas en regiones bajas y cálidas, mientras que en Indonesia se observa una distribución más dispersa debido a su diversidad topográfica. Estos resultados pueden guiar decisiones en políticas agrícolas, ayudando a enfocar esfuerzos en áreas con mayor potencial para la caña.

3. Identificar algunos puntos (2 o 3) al azar en la región del valle del cauca (use google maps) y extraer la información de clima. Grafique las series de tiempo de temperatura y precipitación.

library(terra)
library(dplyr)
library(tidyr)
library(stringr)

# Tus puntos con nombres y coordenadas
puntos <- data.frame(
  nombre = c("Riofrio", "Yocoto", "Zarzal"),
  lon = c(-76.277184, -76.379200, -76.080536),
  lat = c(4.145683, 3.862932, 4.398576)
)

# Convertir a objeto spatial para terra
puntos_vect <- vect(puntos, geom = c("lon", "lat"), crs = crs(temperatura_global))

# Extraer valores mensuales de temperatura y precipitación
temp_ts <- terra::extract(temperatura_global, puntos_vect)
prec_ts <- terra::extract(precipitacion_global, puntos_vect)

# Procesar temperatura en formato largo
temp_long <- temp_ts %>%
  select(-ID) %>%
  mutate(punto = puntos$nombre) %>%
  pivot_longer(-punto, names_to = "mes", values_to = "temp") %>%
  filter(!is.na(temp))

# Extraer el número del mes desde el nombre original
temp_long$mes <- str_sub(temp_long$mes, -2, -1)   # extrae los dos últimos caracteres
temp_long$mes <- as.numeric(as.character(temp_long$mes))  # convierte a num

# Procesar precipitación en formato largo
prec_long <- prec_ts %>%
  select(-ID) %>%
  mutate(punto = puntos$nombre) %>%
  pivot_longer(-punto, names_to = "mes", values_to = "prec") %>%
  filter(!is.na(prec))

prec_long$mes <- str_sub(prec_long$mes, -2, -1)
prec_long$mes <- as.numeric(as.character(prec_long$mes))

# Etiquetas para meses
month_labels <- c("Ene", "Feb", "Mar", "Abr", "May", "Jun",
                  "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")

# Dibujar gráficos con base R

colores <- rainbow(length(unique(temp_long$punto)))

# Gráfico temperatura
plot(1, type = "n", xlim = c(1, 12), ylim = range(temp_long$temp, na.rm = TRUE),
     xlab = "Mes", ylab = "°C", xaxt = "n", main = "Temperatura Media Mensual")
axis(1, at = 1:12, labels = month_labels)
puntos_unicos <- unique(temp_long$punto)
for (i in seq_along(puntos_unicos)) {
  datos_punto <- temp_long[temp_long$punto == puntos_unicos[i], ]
  lines(datos_punto$mes, datos_punto$temp, col = colores[i], lwd = 2)
}
legend("topright", legend = puntos_unicos, col = colores, lwd = 2, cex = 0.8)

# Gráfico precipitación
plot(1, type = "n", xlim = c(1, 12), ylim = range(prec_long$prec, na.rm = TRUE),
     xlab = "Mes", ylab = "mm", xaxt = "n", main = "Precipitación Mensual")
axis(1, at = 1:12, labels = month_labels)
puntos_unicos <- unique(prec_long$punto)
for (i in seq_along(puntos_unicos)) {
  datos_punto <- prec_long[prec_long$punto == puntos_unicos[i], ]
  lines(datos_punto$mes, datos_punto$prec, col = colores[i], lwd = 2)
}
legend("topright", legend = puntos_unicos, col = colores, lwd = 2, cex = 0.8)

La extracción y graficación de series de tiempo mensuales de temperatura y precipitación en tres puntos representativos del Valle del Cauca muestran un patrón climático estable durante el año. Las temperaturas medias oscilan alrededor de los 22 a 24 °C, mientras que las precipitaciones presentan variabilidad estacional, con meses de mayor concentración de lluvia. Estos datos locales confirman que la región presenta condiciones climáticas favorables para la caña de azúcar, validando los resultados espaciales previos y permitiendo un análisis más detallado a nivel de localidades específicas.

4. Por medio de alguna métrica de similaridad (ejemplo: distancia euclidiana) genere un código en R que permita identificar mapas de similaridad a nivel global para los sitios identificados en 3. Grafique los mapas con una escala de colores adecuada.

library(terra)
library(dplyr)
library(rnaturalearth)
library(sf)



# Unir capas temperatura y precipitación
clima_global <- c(temperatura_global, precipitacion_global)
names(clima_global) <- c(paste0("tavg_", 1:12), paste0("prec_", 1:12))

# Puntos de interés en Valle del Cauca
puntos <- data.frame(
  nombre = c("Riofrio", "Yocoto", "Zarzal"),
  lon = c(-76.277184, -76.379200, -76.080536),
  lat = c(4.145683, 3.862932, 4.398576)
)
puntos_vect <- vect(puntos, geom = c("lon", "lat"), crs = crs(clima_global))

# Extraer valores climáticos para cada punto
valores_puntos <- terra::extract(clima_global, puntos_vect)[,-1]
valores_puntos[,1:12] <- valores_puntos[,1:12] / 10  # Temperatura en °C reales

# Extraer valores globales en matriz 
global_vals <- terra::values(clima_global)
global_vals[,1:12] <- global_vals[,1:12] / 10

# Función para calcular distancia euclidiana a un vector referencia
calc_distancia <- function(ref_vec) {
  dist_vec <- apply(global_vals, 1, function(x) sqrt(sum((x - ref_vec)^2, na.rm=TRUE)))
  dist_rast <- clima_global[[1]]
  terra::values(dist_rast) <- dist_vec
  return(dist_rast)
}

# Calcular mapas de distancia para cada punto
mapas_distancia <- lapply(seq_len(nrow(puntos)), function(i) {
  calc_distancia(as.numeric(valores_puntos[i,]))
})
names(mapas_distancia) <- puntos$nombre

# Obtener shape mundial para máscara 
world <- rnaturalearth::ne_countries(returnclass = "sf")
world_vect <- terra::vect(world)

# Crear raster máscara 
mask_rast <- terra::rasterize(world_vect, clima_global[[1]], field=1, background=NA)

# Aplicar máscara a los mapas de distancia
mapas_distancia_masked <- lapply(mapas_distancia, function(rast) {
  terra::mask(rast, mask_rast)
})

# Graficar mapas con máscara

for (nombre in names(mapas_distancia_masked)) {
  plot(mapas_distancia_masked[[nombre]],
       main = paste("Similaridad climática -", nombre),
       col = hcl.colors(50, "YlGnBu", rev = TRUE))
}

5.Comparación entre mapas y conclusiones

En conjunto, los análisis realizados integran información climática global, regional y local para identificar y validar zonas aptas para el cultivo de caña de azúcar. La combinación de mapas de aptitud, análisis puntual y métricas de similaridad provee un marco robusto para la toma de decisiones en planificación agrícola. Los resultados destacan la importancia de considerar múltiples escalas y variables climáticas para evaluar el potencial productivo, y ofrecen una base sólida para estudios futuros y estrategias de expansión agrícola sostenible.

Además, al observar las áreas aptas para el cultivo de caña de azúcar, se evidencia que las zonas cercanas a la línea ecuatorial presentan patrones climáticos similares tanto en temperatura como en precipitación. Este comportamiento homogéneo se refleja claramente en la escala de colores de los mapas, donde regiones de África central y partes de Asia tropical muestran tonalidades similares, indicando condiciones climáticas análogas. Esta coincidencia no es casual, ya que la proximidad al Ecuador influye en la estabilidad térmica y la distribución de lluvias durante el año, creando ambientes óptimos para cultivos tropicales como la caña de azúcar. Por lo tanto, estas regiones podrían compartir un potencial agrícola comparable y ser consideradas prioritarias en estudios y estrategias de desarrollo agrícola regional.