Este informe presenta un análisis geoespacial y climático orientado a evaluar la aptitud global para el cultivo de caña de azúcar, identificar regiones con alto potencial productivo, caracterizar el comportamiento meteorológico local en el Valle del Cauca y cuantificar la similitud climática a escala global. El flujo de trabajo integra datos WorldClim, la API de Open-Meteo y herramientas del ecosistema tidyverse y terra.


1 Modelado de Aptitud Climática Global para Caña de Azúcar

Objetivo: Construir un índice climático de aptitud para el cultivo de caña de azúcar a escala global, utilizando datos de línea base de temperatura y precipitación, y representarlo cartográficamente con una escala de colores interpretativa.

1.1 Metodología y Procedimiento

Los archivos ráster de temperatura máxima, mínima y precipitación mensual se cargaron mediante el paquete terra, optimizado para el manejo eficiente de datos espaciales de gran escala. Las capas de temperatura de WorldClim se encontraban almacenadas en décimas de grado Celsius, por lo que fue necesario dividir sus valores entre diez para obtener temperaturas expresadas correctamente en grados Celsius. A partir de estas capas, se calculó la temperatura media como promedio entre los valores máximos y mínimos, variable que representa de forma más adecuada las condiciones térmicas generales que inciden sobre el crecimiento del cultivo.

Con las variables climáticas disponibles, se definieron criterios de aptitud fundamentados en los rangos óptimos agronómicos documentados para la caña de azúcar. La lógica empleada consistió en construir índices parciales de aptitud para cada variable, asignando valores entre 0 y 1: los valores cercanos a 1 representan condiciones altamente favorables, mientras que los próximos a 0 indican zonas poco aptas para el desarrollo del cultivo.

Para la temperatura media, se estableció como rango óptimo el intervalo entre 24 °C y 32 °C, en el que se favorecen procesos fisiológicos clave como la fotosíntesis, el crecimiento vegetativo y la acumulación de biomasa. Los valores ligeramente fuera de este rango fueron clasificados como condiciones intermedias (aptitud 0.5), mientras que temperaturas extremas —muy bajas o excesivamente altas— recibieron una calificación de aptitud nula. Para la temperatura mínima, se consideró que valores superiores a 18 °C representan condiciones óptimas, dado que temperaturas bajas pueden limitar la brotación y el crecimiento inicial del cultivo.

En cuanto a la precipitación mensual, se utilizaron umbrales que reflejan una disponibilidad hídrica adecuada: entre 100 mm y 300 mm mensuales corresponden a condiciones óptimas, dada la alta demanda hídrica del cultivo, especialmente en sus etapas iniciales. Las regiones áridas o con lluvias insuficientes recibieron valores bajos de aptitud.

Los tres índices parciales —temperatura media, temperatura mínima y precipitación— fueron integrados mediante un promedio simple, generando un índice climático total que sintetiza la información en una única capa ráster. Este enfoque facilita la interpretación espacial de las condiciones favorables a escala global. La visualización se realizó con ggplot2 utilizando geom_raster(), con una escala cromática continua que va del rojo oscuro (baja aptitud) al verde (alta aptitud), pasando por el amarillo como condición intermedia.

## cargar tmp max y min
setwd("~/Estudio/MAESTRIA EN CIENCIA DE DATOS/Analisis_Datos_Geo/Actividad_2")
temp_max <- rast("wc2.1_cruts4.09_10m_tmax_2024-05.tif")
temp_min <- rast("wc2.1_cruts4.09_10m_tmin_2024-05.tif")
precipitaciones <- rast("wc2.1_cruts4.09_10m_prec_2024-05.tif")

temp_max <- temp_max / 10
temp_min <- temp_min / 10

# Temperatura media
temp_media <- (temp_max + temp_min) / 2
# Aptitud temperatura media
apt_temp <- ifel(
  temp_media >= 24 & temp_media <= 32,
  1,
  ifel(
    temp_media >= 20 & temp_media < 24 |
    temp_media > 32 & temp_media <= 35,
    0.5,
    0
  )
)

# Aptitud temperatura mínima
apt_tmin <- ifel(
  temp_min >= 18,
  1,
  ifel(
    temp_min >= 15 & temp_min < 18,
    0.5,
    0
  )
)

# Aptitud precipitación mensual
apt_prec <- ifel(
  precipitaciones >= 100 & precipitaciones <= 300,
  1,
  ifel(
    precipitaciones >= 50 & precipitaciones < 100,
    0.5,
    0
  )
)

# =========================
# 4. Índice climático total
# =========================

aptitud_total <- (apt_temp + apt_tmin + apt_prec) / 3

names(aptitud_total) <- "aptitud"
df <- as.data.frame(
  aptitud_total,
  xy = TRUE,
  na.rm = TRUE
)

1.2 Mapa Global de Aptitud Climática

El siguiente mapa muestra la distribución espacial del índice climático de aptitud para la caña de azúcar a escala global. El lector debe prestar especial atención a las zonas tropicales y subtropicales, donde se concentran los valores más altos. La escala cromática facilita la identificación rápida de las regiones más favorables: el verde indica alta aptitud, el amarillo condiciones intermedias y el rojo zonas no aptas.

ggplot(df) +
  geom_raster(
    aes(
      x = x,
      y = y,
      fill = aptitud
    )
  ) +
  coord_equal() +
  scale_fill_gradientn(
    colours = c(
      "#8B0000",   # rojo oscuro
      "#FFD700",   # amarillo
      "#006400"    # verde oscuro
    ),
    values = c(0, 0.5, 1),
    limits = c(0, 1),
    name = "Aptitud"
  ) +
  labs(
    title = "Mapa Global de Aptitud Climática para la Caña de Azúcar",
    subtitle = "Basado en temperatura y precipitación mensual",
    x = "Longitud",
    y = "Latitud"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    panel.grid = element_blank(),
    axis.text = element_text(color = "black"),
    plot.title = element_text(
      face = "bold",
      size = 18
    ),
    legend.position = "right"
  )

Interpretación: El mapa revela una marcada concentración de zonas con alta aptitud climática en las regiones tropicales de América del Sur, África subsahariana y el sudeste asiático. Estas áreas combinan temperaturas medias dentro del rango óptimo y disponibilidad hídrica adecuada. En contraste, las regiones áridas, los desiertos y las latitudes altas presentan valores de aptitud cercanos a cero.


2 Países con Mayor Potencial para el Cultivo — Análisis Focalizado

Objetivo: Identificar países líderes en producción de caña de azúcar con condiciones climáticas favorables, recortar el índice de aptitud global a sus límites territoriales y generar una representación cartográfica comparativa.

2.1 Selección de Países y Procesamiento Espacial

A partir del índice global de aptitud climática construido en la sección anterior, esta etapa busca delimitar espacialmente las regiones más favorables y profundizar el análisis sobre territorios reconocidos internacionalmente por su producción de caña de azúcar. Se seleccionaron Brasil, India y Tailandia por combinar extensas áreas con temperaturas tropicales, alta disponibilidad hídrica y tradición agrícola en este cultivo.

El procedimiento metodológico inició con la carga de un shapefile de límites políticos mundiales mediante rnaturalearth. Posteriormente, se realizó un filtrado espacial para conservar únicamente los países seleccionados, los cuales se convirtieron a un objeto SpatVector compatible con terra. Sobre este vector se aplicaron operaciones de recorte (crop) y enmascaramiento (mask) sobre el ráster global de aptitud: el recorte limitó la extensión espacial al área de los países de interés, mientras que el enmascaramiento eliminó los valores fuera de sus fronteras. El ráster resultante fue convertido a data.frame para su visualización con ggplot2, superponiendo los límites políticos como capa vectorial para facilitar la interpretación territorial.

# =========================
# 1. Cargar shapefile mundial
# =========================

mundo <- ne_countries(
  scale = "medium",
  returnclass = "sf"
)

# =========================
# 2. Seleccionar países
# =========================

paises <- mundo |>
  filter(
    admin %in% c(
      "Brazil",
      "India",
      "Thailand"
    )
  )

# =========================
# 3. Convertir a SpatVector
# =========================

paises_vect <- vect(paises)

# =========================
# 4. Recortar raster
# =========================

aptitud_crop <- crop(
  aptitud_total,
  paises_vect
)

aptitud_mask <- mask(
  aptitud_crop,
  paises_vect
)

# =========================
# 5. Convertir a dataframe
# =========================

df_crop <- as.data.frame(
  aptitud_mask,
  xy = TRUE,
  na.rm = TRUE
)

2.2 Mapa de Aptitud por País Seleccionado

El siguiente mapa presenta la distribución interna del índice de aptitud climática dentro de Brasil, India y Tailandia. Los límites nacionales se superponen para contextualizar territorialmente los resultados. Se espera observar una distribución heterogénea al interior de cada país, reflejando la variabilidad climática entre sus regiones.

ggplot() +

  geom_raster(
    data = df_crop,
    aes(
      x = x,
      y = y,
      fill = aptitud
    )
  ) +

  geom_sf(
    data = paises,
    fill = NA,
    color = "black",
    linewidth = 0.3
  ) +

  coord_sf() +

  scale_fill_gradientn(
    colours = c(
      "#8B0000",
      "#FFD700",
      "#006400"
    ),
    values = c(0, 0.5, 1),
    limits = c(0, 1),
    name = "Aptitud"
  ) +

  labs(
    title = "Áreas de Alto Potencial Climático para la Caña de Azúcar",
    subtitle = "Brasil, India y Tailandia",
    x = "Longitud",
    y = "Latitud"
  ) +

  theme_minimal(base_size = 14) +

  theme(
    panel.grid = element_blank(),
    plot.title = element_text(
      face = "bold",
      size = 18
    ),
    axis.text = element_text(
      color = "black"
    )
  )

Interpretación: Los tres países exhiben zonas con alta aptitud climática, aunque con patrones espaciales diferenciados. En Brasil, las regiones de alta aptitud se concentran en el centro-sur y noreste; en India, en las llanuras costeras del Decán; y en Tailandia, predominantemente en las llanuras centrales. Estas observaciones son coherentes con la distribución real de las zonas cañeras en cada país.


3 Extracción de Datos Climáticos Locales — Valle del Cauca

Objetivo: Seleccionar puntos de muestreo en el Valle del Cauca mediante Google Maps, extraer datos horarios de temperatura y precipitación a través de la API de Open-Meteo, y visualizar las series de tiempo para los próximos siete días.

3.1 Diseño del Muestreo y Consulta a la API

Para este ejercicio se seleccionaron tres puntos geográficos representativos del Valle del Cauca —Palmira, Candelaria y Buga— utilizando Google Maps como herramienta de localización. Mediante la API pública de Open-Meteo se automatizó la extracción de datos horarios de temperatura (°C) y precipitación (mm) para un horizonte de pronóstico de siete días. El procesamiento y la consolidación de la información se realizaron con las librerías httr2 y purrr del ecosistema tidyverse, estructurando un flujo de trabajo replicable para el monitoreo climático local.

# Tu dataframe original con los puntos en el Valle del Cauca
puntos <- data.frame(
  sitio = c("Palmira", "Candelaria", "Buga"),
  lon = c(-76.3036, -76.3487, -76.2978),
  lat = c(3.5394, 3.4067, 3.9009)
)

# 2. Función para extraer datos del clima (Pronóstico para los próximos 7 días)
get_clima <- function(sitio, lat, lon) {
  url <- "https://api.open-meteo.com/v1/forecast"
  
  # Construir y ejecutar la solicitud HTTP
  req <- request(url) %>% 
    req_url_query(
      latitude = lat,
      longitude = lon,
      hourly = "temperature_2m,precipitation", # Variables solicitadas
      timezone = "America/Bogota"
    )
  
  resp <- req_perform(req)
  data <- resp_body_json(resp, simplifyVector = TRUE)
  
  # Organizar la respuesta en un dataframe limpio
  df_clima <- data.frame(
    fecha_hora = as.POSIXct(data$hourly$time, format="%Y-%m-%dT%H:%M", tz="America/Bogota"),
    temperatura = data$hourly$temperature_2m,
    precipitacion = data$hourly$precipitation,
    sitio = sitio
  )
  
  return(df_clima)
}

# 3. Descargar los datos para todos los puntos y unirlos en un solo dataframe
datos_clima <- puntos %>%
  split(.$sitio) %>%  # Divide el dataframe por sitio
  purrr::map_dfr(~get_clima(sitio = .x$sitio, lat = .x$lat, lon = .x$lon))

# Visualizar una muestra de los datos obtenidos
head(datos_clima)
|>            fecha_hora temperatura precipitacion sitio
|> 1 2026-06-03 00:00:00        21.6           0.5  Buga
|> 2 2026-06-03 01:00:00        21.9           1.5  Buga
|> 3 2026-06-03 02:00:00        21.5           0.5  Buga
|> 4 2026-06-03 03:00:00        21.1           1.7  Buga
|> 5 2026-06-03 04:00:00        21.2           0.6  Buga
|> 6 2026-06-03 05:00:00        21.1           0.3  Buga

3.2 Serie de Tiempo: Temperatura Horaria

El siguiente gráfico muestra la evolución horaria de la temperatura a 2 metros de altura para los tres municipios durante el período de pronóstico. El lector debe observar los ciclos térmicos diarios —con mínimos en las madrugadas y máximos en las horas de la tarde— y las posibles diferencias de comportamiento entre sitios de muestreo.

# 4. Graficar la Serie de Tiempo de Temperatura
ggplot(datos_clima, aes(x = fecha_hora, y = temperatura, color = sitio)) +
  geom_line(linewidth = 1) +
  labs(
    title = "Serie de Tiempo: Temperatura de 2 metros",
    subtitle = "Puntos seleccionados en el Valle del Cauca (Próximos 7 días)",
    x = "Fecha y Hora",
    y = "Temperatura (°C)",
    color = "Municipio"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Interpretación: Las tres series muestran un patrón de ciclo diurno claramente definido, característico del clima tropical de montaña del Valle del Cauca. Las variaciones entre municipios reflejan diferencias altitudinales y de exposición, con Buga tendiendo a presentar registros ligeramente diferenciados respecto a Palmira y Candelaria.

3.3 Serie de Tiempo: Precipitación Horaria

Este gráfico de barras muestra la distribución temporal de la precipitación horaria por municipio. Es importante identificar los episodios de lluvia intensa y comparar su ocurrencia entre los tres sitios seleccionados, lo que permite apreciar la variabilidad espacial de las precipitaciones en la región.

# 5. Graficar la Serie de Tiempo de Precipitación
ggplot(datos_clima, aes(x = fecha_hora, y = precipitacion, fill = sitio)) +
  geom_col(position = "dodge", alpha = 0.8) +
  labs(
    title = "Serie de Tiempo: Precipitación",
    subtitle = "Puntos seleccionados en el Valle del Cauca (Próximos 7 días)",
    x = "Fecha y Hora",
    y = "Precipitación (mm)",
    fill = "Municipio"
  ) +
  theme_minimal() +
  theme(legend.position = "bottom")

Interpretación: La distribución de las precipitaciones muestra una marcada intermitencia, con episodios de lluvia concentrados en horas específicas del día. La variabilidad espacial entre municipios es evidente, lo que sugiere que los fenómenos convectivos locales tienen una influencia determinante sobre la precipitación en la región.


4 Análisis de Similitud Climática Global mediante Distancia Euclidiana

Objetivo: Calcular mapas de similitud climática global para los tres sitios del Valle del Cauca, utilizando la distancia euclidiana sobre variables bioclimáticas estandarizadas de WorldClim, e identificar sus análogos climáticos en el mundo.

4.1 Metodología: Estandarización y Cálculo de Distancias

Para cuantificar la similitud climática entre los sitios de interés y el resto del planeta, se emplearon las 19 variables bioclimáticas de WorldClim (resolución de 10 minutos). Dado que estas variables presentan escalas muy diferentes —temperaturas en décimas de grado y precipitaciones en milímetros—, fue indispensable estandarizar los datos mediante la transformación Z-score, restando la media global y dividiendo por la desviación estándar de cada variable.

Sobre el ráster estandarizado se calculó la distancia euclidiana de cada píxel global respecto al vector de variables bioclimáticas estandarizadas de cada uno de los tres municipios. Valores menores de distancia indican mayor similitud climática: un píxel con distancia cercana a cero posee condiciones climáticas prácticamente idénticas a las del sitio de referencia.

# 2. Definir tus puntos originales
puntos <- data.frame(
  sitio = c("Palmira", "Candelaria", "Buga"),
  lon = c(-76.3036, -76.3487, -76.2978),
  lat = c(3.5394, 3.4067, 3.9009)
)

# 3. Descargar datos bioclimáticos globales de WorldClim (Resolución de 10 minutos para agilidad)
# Esto descargará 19 variables (Bio1 = Temp Media Anual, Bio12 = Precipitación Anual, etc.)
bioclim_global <- worldclim_global(var = "bio", res = 10, path = tempdir())

# 4. Extraer los valores climáticos de tus 3 sitios
coordenadas <- puntos[, c("lon", "lat")]
valores_sitios <- terra::extract(bioclim_global, coordenadas)
valores_sitios$sitio <- puntos$sitio

# 5. Estandarizar los datos (Crucial para Distancia Euclidiana)
# Como la precipitación (mm) y la temperatura (°C) tienen escalas muy diferentes,
# debemos normalizar los datos globales y de los sitios usando la media y desv. estándar global.

bioclim_mean <- global(bioclim_global, fun = mean, na.rm = TRUE)[[1]]
bioclim_sd   <- global(bioclim_global, fun = sd, na.rm = TRUE)[[1]]

# Estandarizar el Ráster Global: (X - Media) / Desviación Estándar
bioclim_global_std <- (bioclim_global - bioclim_mean) / bioclim_sd

# Estandarizar los valores de nuestros 3 sitios de interés
valores_sitios_std <- valores_sitios %>% 
  select(starts_with("wc2.1_10m_bio_")) %>% 
  as.matrix()
valores_sitios_std <- scale(valores_sitios_std, center = bioclim_mean, scale = bioclim_sd)

# 6. Calcular la Distancia Euclidiana a nivel global para cada sitio
# Nota: Una distancia menor (cercana a 0) significa ALTA similaridad climática.

mapas_lista <- lapply(1:nrow(puntos), function(i) {
  target_sitio <- valores_sitios_std[i, ]
  dif_cuadrado <- (bioclim_global_std - target_sitio)^2
  dist_euclidiana <- sqrt(app(dif_cuadrado, sum))
  return(dist_euclidiana)
})

# Unimos las capas y les asignamos los nombres de los municipios
mapas_raster <- rarify <- terra::rast(mapas_lista)
names(mapas_raster) <- puntos$sitio

4.2 Mapas de Similitud Climática Global

Los mapas a continuación muestran, para cada municipio, las zonas del planeta con mayor similitud climática (tonos claros, distancia menor) y las más disímiles (tonos oscuros, distancia mayor). Los puntos rojos indican la ubicación de los sitios de referencia en el Valle del Cauca. El lector debe identificar las regiones del mundo donde se replican las condiciones climáticas de cada municipio.

# 2. Graficar con ggplot2 + tidyterra (Resultado profesional en HTML)
ggplot() +
  # geom_spatraster de tidyterra dibuja el mapa a la perfección
  geom_spatraster(data = mapas_raster) +
  # facet_wrap divide el mapa automáticamente en 3 paneles (uno por sitio)
  facet_wrap(~lyr, ncol = 1) + 
  # Escala de colores continua e invertida (lo brillante es más similar)
  scale_fill_viridis_c(
    name = "Distancia\nEuclidiana", 
    direction = -1, 
    na.value = "transparent"
  ) +
  # Añadimos los puntos rojos interactivos/estéticos sobre cada mapa
  geom_point(
    data = puntos, 
    aes(x = lon, y = lat), 
    color = "red", 
    size = 2.5
  ) +
  labs(
    title = "Análisis de Similaridad Climática Global",
    subtitle = "Zonas brillantes (menor distancia) representan homólogos climáticos",
    x = "Longitud",
    y = "Latitud"
  ) +
  theme_minimal() +
  theme(
    strip.text = element_text(face = "bold", size = 11), # Títulos de las facetas
    plot.title = element_text(face = "bold", size = 14),
    panel.background = element_rect(fill = "#f0f8ff", color = NA), # Fondo azul claro para el mar
    legend.position = "right"
  )

Interpretación: Los análogos climáticos de los tres municipios se concentran principalmente en regiones tropicales húmedas de baja altitud del sudeste asiático, África central y América Central. La similitud entre Palmira, Candelaria y Buga es alta a escala global, aunque a escala local existen diferencias microclimáticas relevantes que se explorarán en la sección siguiente.


5 Comparación de Aproximaciones y Conclusiones

Objetivo: Contrastar los resultados obtenidos mediante el análisis de aptitud climática global (basado en datos históricos WorldClim) con la dinámica meteorológica local horaria (obtenida de Open-Meteo), e integrar ambas perspectivas en una conclusión fundamentada.

5.1 Resumen Estadístico Local — Pronóstico de 7 Días

La siguiente tabla resume las estadísticas meteorológicas operativas para los tres sitios del Valle del Cauca durante el horizonte de pronóstico. Se presentan la temperatura máxima, mínima y promedio, así como la precipitación total acumulada y el máximo horario registrado.

# Calculamos estadísticas descriptivas horarias para ver la dinámica del Valle
resumen_local <- datos_clima %>%
  group_by(sitio) %>%
  summarise(
    Temp_Max = max(temperatura),
    Temp_Min = min(temperatura),
    Temp_Promedio = mean(temperatura),
    Precip_Total_7dias = sum(precipitacion),
    Precip_Max_Hora = max(precipitacion)
  )

# En HTML, knitr::kable formatea las tablas de manera hermosa y limpia
knitr::kable(resumen_local, caption = "Resumen Meteorológico Local Operativo (Próximos 7 Días)")
Resumen Meteorológico Local Operativo (Próximos 7 Días)
sitio Temp_Max Temp_Min Temp_Promedio Precip_Total_7dias Precip_Max_Hora
Buga 27.0 19.6 21.92381 160.7 6.4
Candelaria 25.8 19.0 21.40774 135.9 4.1
Palmira 23.9 18.4 20.31190 170.3 6.9

5.2 Correlación Espacial Global — WorldClim

La matriz de correlación presentada a continuación cuantifica el grado de similitud entre los mapas de distancia euclidiana de los tres municipios a escala planetaria. Valores de correlación cercanos a 1 indican que los patrones espaciales de similitud climática de dos municipios son prácticamente idénticos a escala global.

# ==============================================================================
# 2. ANÁLISIS DE LA APROXIMACIÓN 2: Correlación Espacial Global (Largo Plazo)
# ==============================================================================

# Al usar 'mapas_raster' (el objeto de tidyterra), podemos extraer los valores
# globales y calcular la correlación de Pearson directamente de forma nativa y ultra veloz.

valores_globales <- terra::values(mapas_raster, dataframe = TRUE)
correlacion_global <- cor(valores_globales, use = "complete.obs")

print("--- MATRIZ DE CORRELACIÓN DE SIMILARIDAD GLOBAL ---")
|> [1] "--- MATRIZ DE CORRELACIÓN DE SIMILARIDAD GLOBAL ---"
knitr::kable(correlacion_global, caption = "Matriz de Correlación Espacial Global (WorldClim)")
Matriz de Correlación Espacial Global (WorldClim)
Palmira Candelaria Buga
Palmira 1.0000000 0.9994380 0.9898846
Candelaria 0.9994380 1.0000000 0.9896183
Buga 0.9898846 0.9896183 1.0000000

5.3 Contraste entre Escala Global y Dinámica Horaria Local

El gráfico a continuación confronta directamente ambas aproximaciones: muestra la variación horaria de temperatura durante las primeras 24 horas de pronóstico y destaca en el subtítulo el porcentaje de correlación global entre Palmira y Candelaria. El lector debe observar cómo, a pesar de una alta correlación macroclimática, la dinámica horaria revela desfases y diferencias de amplitud térmica entre los sitios.

# ==============================================================================
# 3. GRAFICAR EL CONTRASTE DE AMBAS APROXIMACIONES
# ==============================================================================

# Filtramos las primeras 24 horas para evaluar el comportamiento local detallado
dia_uno <- datos_clima %>% 
  filter(fecha_hora <= min(fecha_hora) + as.difftime(1, units="days"))

# Extraemos la correlación exacta entre Palmira y Candelaria para el subtítulo
corr_ejemplo <- round(correlacion_global["Palmira", "Candelaria"] * 100, 1)

ggplot(dia_uno, aes(x = fecha_hora, y = temperatura, color = sitio)) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2) +
  labs(
    title = "Contraste Estadístico: Macroclima Global vs. Dinámica Horaria Local",
    subtitle = paste0("A escala GLOBAL los mapas correlacionan al ", corr_ejemplo, 
                      "%, pero a microescala horaria se evidencian desfases térmicos."),
    x = "Línea de Tiempo Horaria",
    y = "Temperatura (°C)",
    color = "Sitio de Muestreo"
  ) +
  scale_color_brewer(palette = "Set1") + # Paleta de colores atractiva para el reporte
  theme_minimal(base_size = 11) +
  theme(
    plot.title = element_text(face = "bold", size = 13, color = "#2c3e50"),
    plot.subtitle = element_text(size = 10, color = "#7f8c8d"),
    legend.position = "bottom",
    panel.grid.minor = element_blank()
  )

5.4 Conclusiones Integradas

Aproximación 1 — Aptitud climática global (WorldClim): Este enfoque ofrece una perspectiva macroclimática de largo plazo, capturando los patrones climáticos promedio que determinan la idoneidad estructural de un territorio para el cultivo de caña de azúcar. Los mapas revelan con claridad las grandes zonas tropicales y subtropicales con condiciones favorables, siendo especialmente útiles para la planificación estratégica a escala regional o nacional.

Aproximación 2 — Dinámica meteorológica local (Open-Meteo): A diferencia del análisis anterior, esta aproximación captura la variabilidad temporal a escala horaria, evidenciando ciclos diurnos, episodios de precipitación y desfases térmicos entre sitios cercanos. Es especialmente valiosa para la toma de decisiones operativas y el monitoreo agrometeorológico en tiempo real.

Contraste y síntesis: Aunque los tres municipios del Valle del Cauca exhiben una alta correlación a escala global (macroclima similar), a escala local se observan diferencias microclimáticas significativas en los patrones horarios de temperatura y precipitación. Esto subraya una conclusión metodológica fundamental: la escala de análisis determina la información que se puede extraer. Un análisis global es insuficiente para capturar heterogeneidades locales, y viceversa. La integración de ambas aproximaciones proporciona una caracterización climática más robusta y operativamente útil para la gestión del cultivo.


Informe generado con R Markdown · Maestría en Ciencia de Datos · Análisis de Datos Geográficos