Contexto

En el contexto de la agroclimatología y la planificación territorial, resulta fundamental comprender cómo las condiciones climáticas influyen en la aptitud de diferentes regiones para el cultivo de especies agrícolas estratégicas como la caña de azúcar. Factores como la temperatura y la precipitación determinan en gran medida la productividad potencial del cultivo, por lo que el análisis espacial del clima permite identificar zonas favorables, evaluar riesgos y orientar decisiones relacionadas con expansión agrícola, sostenibilidad y adaptación al cambio climático.

A partir de información climática global de línea base, se busca construir mapas de aptitud climática para la caña de azúcar utilizando rangos óptimos de variables ambientales asociados al desarrollo del cultivo. Asimismo, se pretende explorar la distribución espacial de áreas con alto potencial productivo en distintos países del mundo, así como comparar dichas zonas con regiones agrícolas reconocidas por su producción cañera.

Adicionalmente, se busca analizar condiciones climáticas específicas dentro del Valle del Cauca, una de las principales regiones productoras de caña de azúcar en Colombia, mediante la selección de algunos puntos geográficos y la extracción de información climática asociada. Finalmente, se pretende evaluar la similitud climática entre estas zonas y otras regiones del mundo utilizando métricas cuantitativas como la distancia euclidiana, con el fin de identificar territorios con características ambientales comparables.

Este análisis permitirá generar una visión integral de la distribución espacial de la aptitud climática para la caña de azúcar, identificar regiones con condiciones favorables para el cultivo y comparar diferentes metodologías de caracterización agroclimática. Los resultados pueden servir como apoyo para procesos de planificación agrícola, evaluación de expansión productiva, priorización de inversiones y formulación de estrategias de adaptación frente a variaciones climáticas futuras.

Objetivo

El objetivo es desarrollar un análisis espacial y climático que permita identificar regiones con condiciones adecuadas para el cultivo de caña de azúcar a escala global, utilizando información climática de línea base y herramientas de análisis geográfico en R. Para ello, se busca construir mapas de aptitud climática a partir de rangos óptimos de temperatura y precipitación, así como identificar países y regiones con alto potencial productivo.

Adicionalmente, se pretende analizar el comportamiento climático de algunos puntos representativos del Valle del Cauca mediante la extracción y visualización de series de tiempo de temperatura y precipitación. Posteriormente, se busca aplicar métricas de similaridad climática para identificar regiones del mundo con condiciones comparables a las observadas en el Valle del Cauca y contrastar los resultados obtenidos mediante diferentes aproximaciones metodológicas.

Con esta información será posible evaluar patrones espaciales de aptitud agrícola, identificar similitudes climáticas entre regiones productoras y generar insumos útiles para la planificación agroindustrial y territorial asociada al cultivo de caña de azúcar.

Preguntas de investigación

En este caso se tienen 5 preguntas a resolver:

  1. ¿Qué regiones del mundo presentan condiciones climáticas óptimas para el cultivo de caña de azúcar según los rangos ideales de temperatura y precipitación?

  2. ¿Qué países concentran áreas de alto potencial climático para la caña de azúcar y cómo se distribuyen espacialmente dichas zonas dentro de su territorio?

  3. ¿Cómo se comportan las variables climáticas de temperatura y precipitación en algunos puntos representativos del Valle del Cauca?

  4. ¿Qué regiones del mundo presentan condiciones climáticas similares a las observadas en los puntos seleccionados del Valle del Cauca según métricas de similaridad climática?

  5. ¿Qué diferencias y similitudes se observan entre los mapas generados mediante la aproximación de aptitud climática y aquellos obtenidos a partir de métricas de similaridad?

Tabla de variables

Los tipos de variable de acuerdo con su naturaleza son los siguientes:

library(dplyr)
library(knitr)

tabla_variables <- tibble::tibble(
  Variable = paste0("BIO", 1:19),
  
  Nombre_bioclimatico = c(
    "Annual Mean Temperature",
    "Mean Diurnal Range",
    "Isothermality",
    "Temperature Seasonality",
    "Max Temperature of Warmest Month",
    "Min Temperature of Coldest Month",
    "Temperature Annual Range",
    "Mean Temperature of Wettest Quarter",
    "Mean Temperature of Driest Quarter",
    "Mean Temperature of Warmest Quarter",
    "Mean Temperature of Coldest Quarter",
    "Annual Precipitation",
    "Precipitation of Wettest Month",
    "Precipitation of Driest Month",
    "Precipitation Seasonality",
    "Precipitation of Wettest Quarter",
    "Precipitation of Driest Quarter",
    "Precipitation of Warmest Quarter",
    "Precipitation of Coldest Quarter"
  ),
  
  Que_mide = c(
    "Temperatura media anual",
    "Rango medio diurno de temperatura",
    "Relación entre variación diaria y anual de temperatura",
    "Variabilidad anual de temperatura",
    "Temperatura máxima del mes más cálido",
    "Temperatura mínima del mes más frío",
    "Diferencia entre temperaturas extremas anuales",
    "Temperatura media del trimestre más lluvioso",
    "Temperatura media del trimestre más seco",
    "Temperatura media del trimestre más cálido",
    "Temperatura media del trimestre más frío",
    "Precipitación total anual",
    "Precipitación del mes más lluvioso",
    "Precipitación del mes más seco",
    "Variabilidad de precipitación",
    "Precipitación del trimestre más lluvioso",
    "Precipitación del trimestre más seco",
    "Precipitación del trimestre más cálido",
    "Precipitación del trimestre más frío"
  ),
  
  Unidad = c(
    "°C (×10)",
    "°C (×10)",
    "%",
    "Desviación estándar ×100",
    "°C (×10)",
    "°C (×10)",
    "°C (×10)",
    "°C (×10)",
    "°C (×10)",
    "°C (×10)",
    "°C (×10)",
    "mm",
    "mm",
    "mm",
    "Coeficiente de variación",
    "mm",
    "mm",
    "mm",
    "mm"
  ),
  
  Relevancia_cana = c(
  "Muy alta. Determina productividad general y duración del ciclo",
  "Media. Alta amplitud térmica puede generar estrés fisiológico",
  "Baja-media. Describe estabilidad térmica",
  "Media. La caña prefiere baja estacionalidad térmica",
  "Muy alta. Relacionada con estrés térmico y reducción de sacarosa",
  "Muy alta. La caña es sensible al frío y heladas",
  "Media. Alta amplitud puede indicar climas menos favorables",
  "Media-alta. Influye en crecimiento vegetativo",
  "Alta. Importante para maduración y acumulación de azúcar",
  "Muy alta. Relacionada con productividad potencial",
  "Alta. Útil para evaluar limitaciones térmicas",
  "Muy alta. Principal determinante hídrico",
  "Media. Exceso de lluvia puede afectar cosecha y enfermedades",
  "Alta. Indica riesgo de estrés hídrico",
  "Alta. La caña requiere cierto balance entre humedad y estación seca",
  "Alta. Relacionada con crecimiento máximo",
  "Muy alta. Fundamental para evaluar necesidad de riego",
  "Muy útil. Alta relevancia para productividad en zonas tropicales",
  "Media-baja. Menos crítica en regiones tropicales cálidas"
)
)

kable(
  tabla_variables,
  caption = "Descripción de las variables bioclimáticas BIO utilizadas en el análisis de aptitud climática para caña de azúcar"
)
Descripción de las variables bioclimáticas BIO utilizadas en el análisis de aptitud climática para caña de azúcar
Variable Nombre_bioclimatico Que_mide Unidad Relevancia_cana
BIO1 Annual Mean Temperature Temperatura media anual °C (×10) Muy alta. Determina productividad general y duración del ciclo
BIO2 Mean Diurnal Range Rango medio diurno de temperatura °C (×10) Media. Alta amplitud térmica puede generar estrés fisiológico
BIO3 Isothermality Relación entre variación diaria y anual de temperatura % Baja-media. Describe estabilidad térmica
BIO4 Temperature Seasonality Variabilidad anual de temperatura Desviación estándar ×100 Media. La caña prefiere baja estacionalidad térmica
BIO5 Max Temperature of Warmest Month Temperatura máxima del mes más cálido °C (×10) Muy alta. Relacionada con estrés térmico y reducción de sacarosa
BIO6 Min Temperature of Coldest Month Temperatura mínima del mes más frío °C (×10) Muy alta. La caña es sensible al frío y heladas
BIO7 Temperature Annual Range Diferencia entre temperaturas extremas anuales °C (×10) Media. Alta amplitud puede indicar climas menos favorables
BIO8 Mean Temperature of Wettest Quarter Temperatura media del trimestre más lluvioso °C (×10) Media-alta. Influye en crecimiento vegetativo
BIO9 Mean Temperature of Driest Quarter Temperatura media del trimestre más seco °C (×10) Alta. Importante para maduración y acumulación de azúcar
BIO10 Mean Temperature of Warmest Quarter Temperatura media del trimestre más cálido °C (×10) Muy alta. Relacionada con productividad potencial
BIO11 Mean Temperature of Coldest Quarter Temperatura media del trimestre más frío °C (×10) Alta. Útil para evaluar limitaciones térmicas
BIO12 Annual Precipitation Precipitación total anual mm Muy alta. Principal determinante hídrico
BIO13 Precipitation of Wettest Month Precipitación del mes más lluvioso mm Media. Exceso de lluvia puede afectar cosecha y enfermedades
BIO14 Precipitation of Driest Month Precipitación del mes más seco mm Alta. Indica riesgo de estrés hídrico
BIO15 Precipitation Seasonality Variabilidad de precipitación Coeficiente de variación Alta. La caña requiere cierto balance entre humedad y estación seca
BIO16 Precipitation of Wettest Quarter Precipitación del trimestre más lluvioso mm Alta. Relacionada con crecimiento máximo
BIO17 Precipitation of Driest Quarter Precipitación del trimestre más seco mm Muy alta. Fundamental para evaluar necesidad de riego
BIO18 Precipitation of Warmest Quarter Precipitación del trimestre más cálido mm Muy útil. Alta relevancia para productividad en zonas tropicales
BIO19 Precipitation of Coldest Quarter Precipitación del trimestre más frío mm Media-baja. Menos crítica en regiones tropicales cálidas

Descripción de datos climáticos CMIP6

El objeto cmip corresponde a un conjunto de capas raster multivariadas provenientes de WorldClim versión 2.1 y proyecciones climáticas CMIP6.

Características principales:

  • Tipo de objeto: SpatRaster
  • Número de capas: 19 variables bioclimáticas (BIO1–BIO19)
  • Resolución espacial: 2.5 minutos (~5 km aproximadamente)
  • Cobertura espacial: global
  • Sistema de referencia: WGS84 (EPSG:4326)
  • Escenario climático: SSP245
  • Horizonte temporal: 2041–2060
  • Modelo climático utilizado: EC-Earth3-Veg
  • Fuente: WorldClim + CMIP6

Las variables BIO sintetizan condiciones de temperatura y precipitación mediante métricas ecológicamente relevantes, ampliamente utilizadas en modelación climática, análisis agroclimático y distribución potencial de especies.

No se reportan valores faltantes significativos en zonas continentales. Los valores NA corresponden principalmente a océanos o regiones sin cobertura climática válida.

Utilizando el paquete geodata, se realiza el caché de datos de WorldClim. El archivo seleccionado contiene las 19 variables BIO de WorldClim para:

modelo: EC-Earth Consortium EC-Earth3-Veg escenario: SSP245 periodo: 2041–2060 resolución: 2.5 minutos

path_act<-"C:/Users/User/Documents/2025 PUJ R projects/Modulo 1 - Unidad 1 - AIGE/Casos/"


library(geodata)
cmip <- load_or_download_cmip(
  model = "EC-Earth3-Veg",
  ssp = "245",
  time = "2041-2060",
  var = "bio",
  res = 2.5,
  path = "data/"
)
## Descargando archivo...
names(cmip) <- paste0("BIO", 1:19)

names(cmip)
##  [1] "BIO1"  "BIO2"  "BIO3"  "BIO4"  "BIO5"  "BIO6"  "BIO7"  "BIO8"  "BIO9" 
## [10] "BIO10" "BIO11" "BIO12" "BIO13" "BIO14" "BIO15" "BIO16" "BIO17" "BIO18"
## [19] "BIO19"

Extraer variables clave y validar las escalas de temperatura

bio1  <- cmip[["BIO1"]]
bio5  <- cmip[["BIO5"]]
bio6  <- cmip[["BIO6"]]

bio12 <- cmip[["BIO12"]]
bio15 <- cmip[["BIO15"]]
bio17 <- cmip[["BIO17"]]
bio18 <- cmip[["BIO18"]]
global(bio5, c("min","max"), na.rm=TRUE)
##        min  max
## BIO5 -29.4 51.2
global(bio12, c("min","max"), na.rm=TRUE)
##       min   max
## BIO12   0 11693

Pregunta 1. ¿Qué regiones del mundo presentan condiciones climáticas óptimas para el cultivo de caña de azúcar según los rangos ideales de temperatura y precipitación?

Para responder a la pregunta se ejecutan los siguientes pasos:

1. Crear funciones de aptitud de acuerdo con las variables de mayor relevancia para el cultivo de la caña

Para crear funciones de aptitud se cargan las siguientes variables que se consideran de mayor relevancia para el cultivo de caña:

BIO1 — Temperatura media anual

La temperatura media anual es uno de los factores más importantes para el crecimiento de la caña de azúcar, ya que controla procesos fisiológicos como la fotosíntesis, la acumulación de biomasa y la duración del ciclo productivo.

La literatura agroclimática reporta que la caña presenta mejores rendimientos en climas tropicales cálidos, con temperaturas promedio entre 24°C y 30°C. Valores inferiores reducen la tasa de crecimiento y prolongan el ciclo vegetativo, mientras que temperaturas excesivamente altas pueden generar estrés térmico y disminuir la productividad.

Por esta razón, se asigna máxima aptitud a temperaturas medias anuales entre 24°C y 30°C.

Óptimo:

24–30°C

Clasificación de aptitud climática para BIO1 — Temperatura media anual
Rango Aptitud Interpretacion
< 20°C 0.0 No apto
20–24°C 0.5 Moderadamente apto
24–30°C 1.0 Óptimo
30–34°C 0.5 Moderadamente apto
> 34°C 0.0 No apto
s_bio1 <- classify(
  bio1,
  rcl = matrix(c(
    -Inf, 20, 0,
    20, 24, 0.5,
    24, 30, 1,
    30, 34, 0.5,
    34, Inf, 0
  ), ncol=3, byrow=TRUE)
)

BIO5 — calor extremo

Las temperaturas extremas elevadas afectan negativamente el desarrollo fisiológico de la caña y pueden reducir la acumulación de sacarosa en los tallos.

Aunque la caña tolera ambientes cálidos, temperaturas máximas persistentemente superiores a 36°C aumentan el estrés hídrico, la evapotranspiración y el riesgo de disminución del rendimiento agrícola. Por encima de 40°C las condiciones se consideran poco favorables para el cultivo.

Por esta razón, las mayores aptitudes se asignan a regiones donde las temperaturas máximas del mes más cálido permanecen moderadas.

Clasificación de aptitud climática para BIO5 — Temperatura máxima del mes más cálido
Rango Aptitud Interpretacion
< 32°C 1.0 Óptimo
32–36°C 0.7 Alta aptitud
36–40°C 0.3 Baja aptitud
> 40°C 0.0 No apto
s_bio5 <- classify(
  bio5,
  rcl = matrix(c(
    -Inf, 32, 1,
    32, 36, 0.7,
    36, 40, 0.3,
    40, Inf, 0
  ), ncol=3, byrow=TRUE)
)

BIO6 — frío

La caña de azúcar es altamente sensible al frío y particularmente vulnerable a heladas o temperaturas muy bajas.

Temperaturas inferiores a 5°C pueden afectar severamente el crecimiento del cultivo y ocasionar daños fisiológicos importantes. En contraste, regiones donde la temperatura mínima del mes más frío supera los 10°C presentan condiciones mucho más favorables para mantener crecimiento continuo durante el año.

Por esta razón, se asigna máxima aptitud a valores superiores a 10°C.

Clasificación de aptitud climática para BIO6
Rango Aptitud Interpretacion
< 5°C 0.0 No apto
5–10°C 0.5 Moderadamente apto
> 10°C 1.0 Óptimo
s_bio6 <- classify(
  bio6,
  rcl = matrix(c(
    -Inf, 5, 0,
    5, 10, 0.5,
    10, Inf, 1
  ), ncol=3, byrow=TRUE)
)

BIO12 — precipitación anual

La disponibilidad hídrica es uno de los principales determinantes de la productividad de la caña de azúcar.

El cultivo requiere cantidades elevadas de precipitación para sostener el crecimiento vegetativo y la acumulación de biomasa. Sin embargo, excesos de lluvia también pueden favorecer enfermedades, dificultar la cosecha y generar problemas de drenaje.

La literatura suele reportar rangos óptimos cercanos a 1200–2500 mm anuales, especialmente en sistemas sin riego suplementario.

Clasificación de aptitud climática para BIO12 — Precipitación anual
Rango Aptitud Interpretacion
< 800 mm 0.0 No apto
800–1200 mm 0.5 Moderadamente apto
1200–2500 mm 1.0 Óptimo
2500–3500 mm 0.5 Moderadamente apto
> 3500 mm 0.0 No apto
s_bio12 <- classify(
  bio12,
  rcl = matrix(c(
    -Inf, 800, 0,
    800, 1200, 0.5,
    1200, 2500, 1,
    2500, 3500, 0.5,
    3500, Inf, 0
  ), ncol=3, byrow=TRUE)
)

BIO15 — estacionalidad

La estacionalidad de precipitación representa la variabilidad temporal de las lluvias a lo largo del año.

La caña de azúcar puede beneficiarse de cierta diferenciación entre estaciones húmedas y secas, especialmente para favorecer la maduración y acumulación de sacarosa. Sin embargo, una variabilidad excesiva puede generar períodos prolongados de déficit hídrico y afectar la estabilidad productiva.

Por esta razón, regiones con baja o moderada estacionalidad presentan mejores condiciones de aptitud.

Clasificación de aptitud climática para BIO15 — Estacionalidad de precipitación
Rango Aptitud Interpretacion
< 40 1.0 Óptimo
40–70 0.7 Alta aptitud
70–100 0.3 Baja aptitud
> 100 0.0 No apto
s_bio15 <- classify(
  bio15,
  rcl = matrix(c(
    -Inf, 40, 1,
    40, 70, 0.7,
    70, 100, 0.3,
    100, Inf, 0
  ), ncol=3, byrow=TRUE)
)

BIO17 — trimestre seco

Esta variable permite evaluar la disponibilidad mínima de agua durante la época más seca del año.

La caña de azúcar tolera períodos secos moderados, pero déficits hídricos severos pueden reducir significativamente el crecimiento y la productividad. Por esta razón, valores muy bajos de precipitación durante el trimestre seco se consideran poco favorables.

Regiones con mayor disponibilidad hídrica incluso en períodos secos presentan mejores condiciones agroclimáticas para el cultivo.

Clasificación de aptitud climática para BIO17 — Precipitación del trimestre más seco
Rango Aptitud Interpretacion
< 50 mm 0.0 No apto
50–150 mm 0.5 Moderadamente apto
> 150 mm 1.0 Óptimo
s_bio17 <- classify(
  bio17,
  rcl = matrix(c(
    -Inf, 50, 0,
    50, 150, 0.5,
    150, Inf, 1
  ), ncol=3, byrow=TRUE)
)

BIO18 — lluvia trimestre cálido

La precipitación durante el trimestre más cálido resulta especialmente importante porque coincide con períodos de elevada evapotranspiración y alta demanda hídrica del cultivo.

Cantidades moderadas-altas de precipitación favorecen el crecimiento vegetativo y reducen el estrés térmico. Sin embargo, precipitaciones excesivamente altas también pueden afectar la aireación del suelo y aumentar riesgos fitosanitarios.

Por esta razón, se consideran óptimos rangos intermedios de precipitación durante el período cálido.

Clasificación de aptitud climática para BIO18 — Precipitación del trimestre más cálido
Rango Aptitud Interpretacion
< 300 mm 0.3 Baja aptitud
300–800 mm 1.0 Óptimo
800–1500 mm 0.7 Alta aptitud
> 1500 mm 0.3 Baja aptitud
s_bio18 <- classify(
  bio18,
  rcl = matrix(c(
    -Inf, 300, 0.3,
    300, 800, 1,
    800, 1500, 0.7,
    1500, Inf, 0.3
  ), ncol=3, byrow=TRUE)
)

2. Construir índice multicriterio

Una vez reclasificadas las variables bioclimáticas, se construye un índice global de aptitud climática mediante un promedio simple entre todas las capas.

La metodología multicriterio permite integrar simultáneamente diferentes dimensiones climáticas relevantes para el cultivo de caña de azúcar, incluyendo:

  • temperatura promedio,

  • temperaturas extremas,

  • precipitación total,

  • disponibilidad hídrica en estaciones secas,

  • y variabilidad climática.

Cada variable aporta un puntaje de aptitud entre 0 y 1, donde:

  • 0 representa condiciones desfavorables,

  • 0.5 condiciones intermedias,

  • y 1 condiciones óptimas.

Posteriormente, el índice final se calcula como el promedio aritmético de las siete variables seleccionadas, otorgando el mismo peso relativo a cada componente climática.

De esta manera, el índice final también toma valores entre 0 y 1:

valores cercanos a 1 indican regiones altamente favorables para la caña de azúcar, mientras que valores cercanos a 0 representan condiciones poco aptas.

# Verificar si existe el raster final
if (!file.exists("cache/sugarcane_index.tif")) {

  sugarcane_index <- (
    s_bio1 +
    s_bio5 +
    s_bio6 +
    s_bio12 +
    s_bio15 +
    s_bio17 +
    s_bio18
  ) / 7

  sugarcane_index <- writeRaster(
    sugarcane_index,
    "cache/sugarcane_index.tif",
    overwrite = TRUE
  )

} else {

  sugarcane_index <- rast(
    "cache/sugarcane_index.tif"
  )

}

Como resultado se obtiene el índice de aptitud climática:

El objeto sugarcane_index corresponde a un raster continuo de aptitud climática para el cultivo de caña de azúcar construido mediante análisis multicriterio.

Características principales:

  • Tipo de objeto: SpatRaster
  • Número de capas: 1
  • Resolución espacial: 2.5 minutos
  • Cobertura espacial: global
  • Sistema de referencia: WGS84 (EPSG:4326)
  • Rango de valores: 0–1

El índice se construye a partir de siete variables bioclimáticas relacionadas con temperatura, precipitación y estacionalidad climática:

  • BIO1
  • BIO5
  • BIO6
  • BIO12
  • BIO15
  • BIO17
  • BIO18

Cada variable fue reclasificada según rangos óptimos reportados para el cultivo de caña de azúcar y posteriormente integrada mediante promedio simple.

Valores cercanos a 1 representan regiones con condiciones climáticas altamente favorables para el cultivo, mientras que valores cercanos a 0 indican baja aptitud agroclimática.

3. Graficar el resultado

library(tibble)
library(knitr)

tabla_aptitud <- tibble(
  Valor = c(
    "0–0.2",
    "0.2–0.4",
    "0.4–0.6",
    "0.6–0.8",
    "0.8–1"
  ),
  
  Interpretacion = c(
    "No apto",
    "Baja aptitud",
    "Aptitud moderada",
    "Alta aptitud",
    "Muy alta aptitud"
  )
)

kable(
  tabla_aptitud,
  caption = "Clasificación del índice de aptitud climática para caña de azúcar"
)
Clasificación del índice de aptitud climática para caña de azúcar
Valor Interpretacion
0–0.2 No apto
0.2–0.4 Baja aptitud
0.4–0.6 Aptitud moderada
0.6–0.8 Alta aptitud
0.8–1 Muy alta aptitud
plot(
  sugarcane_index,
  main="Índice de aptitud climática para caña de azúcar"
)

El mapa global del índice de aptitud climática para caña de azúcar muestra una distribución espacial altamente concentrada en regiones tropicales y subtropicales del planeta, lo cual coincide con los requerimientos agroclimáticos conocidos del cultivo. Las zonas con mayores valores de aptitud (colores amarillos y verde claro) se ubican principalmente alrededor de la franja ecuatorial, donde predominan temperaturas cálidas, alta disponibilidad hídrica y baja ocurrencia de heladas.

En América, las regiones más favorables se concentran en Brasil, Centroamérica, el Caribe y parte del norte de Sudamérica, especialmente en Colombia y Venezuela. Brasil destaca claramente como uno de los territorios con mayor extensión continua de alta aptitud climática, lo que resulta coherente con su posición como principal productor mundial de caña de azúcar.

En África se observa una amplia zona altamente apta en regiones tropicales del centro y este del continente, particularmente alrededor de la cuenca del Congo y algunas áreas cercanas al África oriental. Estas zonas presentan combinaciones favorables de temperatura y precipitación durante gran parte del año.

En Asia, las regiones de India, el sudeste asiático e Indonesia muestran elevados niveles de aptitud climática. Esto coincide con importantes regiones históricamente asociadas a la producción de caña y azúcar a escala industrial. La elevada humedad y las temperaturas cálidas constantes favorecen el crecimiento vegetativo del cultivo.

Por el contrario, las regiones desérticas, templadas y de alta montaña presentan índices bajos de aptitud. Esto ocurre en zonas como el Sahara, Asia central, Canadá, Siberia y gran parte de Europa del norte, donde las bajas temperaturas o la limitada disponibilidad hídrica restringen el desarrollo de la caña de azúcar.

También se observa que algunas regiones tropicales presentan aptitud intermedia en lugar de óptima. Esto puede explicarse por excesos de precipitación, elevada estacionalidad climática o temperaturas extremas demasiado altas, variables que fueron penalizadas en el índice multicriterio.

El mapa evidencia además una fuerte influencia de la latitud sobre la aptitud climática. Las condiciones más favorables tienden a localizarse entre los trópicos de Cáncer y Capricornio, donde predominan climas cálidos con menor riesgo de heladas.

En el caso de Colombia, se identifican zonas favorables principalmente en los valles interandinos y regiones tropicales bajas. Esto es consistente con la importancia histórica del Valle del Cauca como núcleo de producción cañera del país.

En términos metodológicos, el índice refleja la integración simultánea de múltiples dimensiones climáticas, incluyendo temperatura promedio, extremos térmicos, precipitación anual y estacionalidad. Esto permite representar de manera más realista la aptitud agrícola que utilizar únicamente una variable climática aislada.

Pregunta 2. ¿Qué países concentran áreas de alto potencial climático para la caña de azúcar y cómo se distribuyen espacialmente dichas zonas dentro de su territorio?

la idea es:

  • calcular el área apta por país,
  • ordenar países,
  • visualizar espacialmente

1. Descargar fronteras mundiales

#library(terra)
library(geodata)
library(dplyr)

world <- world(path = "data/")

2. Convertir índice de aptitud a categorías

tabla_categorias <- tibble(
  Categoria = c(
    "No apto",
    "Baja",
    "Moderada",
    "Alta",
    "Muy alta"
  ),
  
  Rango = c(
    "0–0.2",
    "0.2–0.4",
    "0.4–0.6",
    "0.6–0.8",
    "0.8–1"
  )
)

kable(
  tabla_categorias,
  caption = "Categorías del índice de aptitud climática para caña de azúcar"
)
Categorías del índice de aptitud climática para caña de azúcar
Categoria Rango
No apto 0–0.2
Baja 0.2–0.4
Moderada 0.4–0.6
Alta 0.6–0.8
Muy alta 0.8–1

Descripción de datos de elevación

El objeto elev corresponde a un raster global de elevación descargado desde WorldClim.

Características principales:

  • Tipo de objeto: SpatRaster

  • Número de capas: 1

  • Resolución espacial: 2.5 minutos (~5 km)

  • Cobertura espacial: global

  • Sistema de referencia: WGS84 (EPSG:4326)

  • Unidad de medida: metros sobre el nivel del mar (msnm)

  • Fuente: WorldClim v2.1

La variable representa la altitud promedio por celda raster y se utiliza para restringir áreas potencialmente aptas para el cultivo de caña de azúcar, dado que este cultivo presenta limitaciones fisiológicas importantes en zonas de alta montaña, se considera pertinente agregarla al análisis.

Los valores faltantes corresponden principalmente a océanos.

elev <- worldclim_global(
  var = "elev",
  res = 2.5,
  path = "data/"
)

sugarcane_index <- mask(
  sugarcane_index,
  elev < 1500,
  maskvalues = FALSE
)

names(sugarcane_index) <- "suitability_index"
aptitud_cat <- classify(
  sugarcane_index,
  
  rcl = matrix(c(
    0.0, 0.2, 1,
    0.2, 0.4, 2,
    0.4, 0.6, 3,
    0.6, 0.8, 4,
    0.8, 1.0, 5
  ),
  
  ncol = 3,
  byrow = TRUE)
)
# 
# aptitud_cat <- writeRaster(
#   aptitud_cat,
#   "cache/aptitud_cat.tif",
#   overwrite = TRUE
# )
high_suitability <- ifel(
  aptitud_cat >= 4,
  1,
  0
)

high_suitability <- writeRaster(
  high_suitability,
  "cache/high_suitability.tif",
  overwrite = TRUE
)

3. Calcular área por pixel

Cada pixel tiene diferente tamaño según latitud.

high_suitability <- rast(
  "cache/high_suitability.tif"
)

pixel_area <- cellSize(
  high_suitability,
  unit = "km"
)

pixel_area <- writeRaster(
  pixel_area,
  "cache/pixel_area.tif",
  overwrite = TRUE
)

4. Área apta total

high_suitability <- rast(
  "cache/high_suitability.tif"
)

pixel_area <- rast(
  "cache/pixel_area.tif"
)

high_area <- cache_raster(

  "cache/high_area.tif",

  {
    high_suitability * pixel_area
  }
)
## Leyendo raster desde cache:
## cache/high_area.tif
names(high_area) <- "area_km2"

5. Extraer área por país

world <- geodata::world(
  path = "data/"
)

country_area <- cache_rds(

  "cache/country_area.rds",

  {

    x <- terra::extract(
      high_area,
      world,
      fun = sum,
      na.rm = TRUE
    )

    names(x)[2] <- "area_km2"
  ### Agregar nombres de países
    x$country <- world$NAME_0

  ### Limpiar y ordenar

    x <- x %>%

      filter(
        !is.na(area_km2)
      ) %>%

      arrange(
        desc(area_km2)
      )

    x
  }
)
## Leyendo desde cache:
##  cache/country_area.rds

6. Graficar resultados

names(country_area)
## [1] "ID"       "area_km2" "country"
library(terra)
library(dplyr)
library(ggplot2)
#library(tidyterra)

# Top 20
top20 <- country_area %>%
  
  arrange(desc(area_km2)) %>%
  
  slice(1:20)
# Unir tabla al SpatVector
world_top <- merge(
  world,
  top20,
  
  by.x = "NAME_0",
  by.y = "country",
  
  all.x = FALSE
)
# Graficar
library(tidyterra)
library(ggplot2)

ggplot() +
  
  geom_spatvector(
    data = world_top,
    
    aes(fill = area_km2),
    
    color = "black",
    linewidth = 0.2
  ) +
  
  scale_fill_viridis_c(
    option = "C"
  ) +
  
  coord_sf(
    xlim = c(-120,160),
    ylim = c(-40,40)
  ) +
  
  labs(
    title = "Países con mayor superficie de alta aptitud climática",
    
    subtitle = "Caña de azúcar — SSP245 (2041–2060)"
  ) +
  
  theme_minimal()

La tabla de países con mayor superficie de alta aptitud climática evidencia que las condiciones favorables para el cultivo de caña de azúcar se concentran principalmente en regiones tropicales húmedas y subtropicales cálidas del planeta. Los resultados obtenidos son consistentes con la distribución geográfica observada en el mapa global de aptitud climática de la pregunta anterior y coinciden parcialmente con varios de los principales productores mundiales de caña de azúcar.

Brasil aparece como el país con mayor superficie apta, superando ampliamente al resto de países evaluados. Este resultado es coherente con su posición como principal productor mundial de caña de azúcar y con la gran extensión de territorios tropicales cálidos.

También destacan países tropicales de África central como la República Democrática del Congo, Angola, Camerún y Congo, los cuales presentan enormes extensiones con condiciones climáticas favorables. Sin embargo, aunque poseen alta aptitud agroclimática, muchos de estos países no figuran entre los mayores productores mundiales, lo que sugiere que la aptitud climática no es el único factor que determina el desarrollo de la agroindustria cañera.

Indonesia, India, Malasia y Papúa Nueva Guinea muestran igualmente grandes áreas aptas, especialmente en zonas ecuatoriales húmedas con elevada disponibilidad hídrica y temperaturas cálidas constantes. Estas regiones presentan condiciones muy favorables para el crecimiento vegetativo de la caña y coinciden con importantes zonas agrícolas tropicales.

Colombia aparece dentro de los diez países con mayor superficie de alta aptitud climática, lo cual resulta consistente con la importancia histórica del cultivo en el Valle del Cauca y otras regiones cálidas del país. Aunque Colombia no posee la extensión territorial de Brasil o India, gran parte de sus zonas tropicales bajas presentan condiciones altamente adecuadas para la producción de caña.

Llama la atención la presencia de países como Canadá y Estados Unidos dentro de los primeros lugares. Esto ocurre porque el análisis identifica áreas climáticamente aptas en ciertas regiones específicas del territorio — zonas cálidas y húmedas del sur oriente— y no necesariamente refleja la intensidad real de producción agrícola nacional.

library(knitr)

# Tabla final
kable(
  head(
    country_area[, c("country", "area_km2")],
    20
  ),
  
  digits = 0,
  
  col.names = c(
    "País",
    "Área apta (km²)"
  ),
  
  caption = "Países con mayor superficie de alta aptitud climática para caña de azúcar"
)
Países con mayor superficie de alta aptitud climática para caña de azúcar
País Área apta (km²)
Brazil 6917079
Democratic Republic of the Congo 1989998
Indonesia 1788169
United States 1622461
Canada 1062994
China 998261
Colombia 918876
Peru 701404
Venezuela 662897
Bolivia 591271
Australia 514593
Argentina 436336
Angola 405490
Papua New Guinea 387225
Central African Republic 382498
Mexico 372057
Cameroon 344625
Congo 341650
India 338760
Malaysia 326608
aptitud_cat <- rast(
  "cache/aptitud_cat.tif"
)
world_plot <- geodata::world(
  path = "data/"
)

plot(
  aptitud_cat,
  
  main = "Aptitud climática mundial para caña de azúcar"
)

lines(world_plot)

Pregunta 3. ¿Cómo se comportan las variables climáticas de temperatura y precipitación en algunos puntos representativos del Valle del Cauca?

1. Descargar elevación

elev <- cache_raster(

  "cache/elev_2_5m.tif",

  {
    worldclim_global(
      var = "elev",
      res = 2.5,
      path = "data/"
    )
  }
)
## Leyendo raster desde cache:
## cache/elev_2_5m.tif

2. Crear puntos representativos

El objeto pts corresponde a un conjunto de puntos espaciales (SpatVector) que representan municipios seleccionados del Valle del Cauca utilizados como referencia para el análisis climático regional.

Características principales:

  • Tipo de objeto: SpatVector

  • Tipo geométrico: puntos

  • Número de observaciones: 5

  • Sistema de referencia espacial: WGS84 (EPSG:4326)

  • Cobertura espacial: Valle del Cauca, Colombia

Los puntos corresponden a municipios representativos de una de las principales regiones productoras de caña de azúcar en Colombia. La selección busca capturar diferentes condiciones climáticas dentro del valle geográfico del río Cauca.

Variables incluidas:

  • sitio: nombre del municipio
  • lon: longitud geográfica
  • lat: latitud geográfica

Los puntos seleccionados corresponden a municipios representativos del Valle del Cauca ubicados dentro de una de las principales regiones productoras de caña de azúcar de Colombia. Los municipios escogidos fueron Cartago, Palmira, Cali, Buga y Tuluá, distribuidos espacialmente a lo largo del valle geográfico del río Cauca.

Las coordenadas geográficas muestran que todos los puntos se encuentran dentro de un rango latitudinal relativamente cercano, entre aproximadamente 3.4° y 4.8° de latitud norte, lo que explica parcialmente la baja variabilidad térmica observada en los análisis climáticos.

En términos altitudinales, los municipios presentan alturas similares, comprendidas entre 917 y 1018 metros sobre el nivel del mar. Cali registra la mayor altitud del conjunto, mientras que Cartago presenta la menor. Estas diferencias altitudinales relativamente moderadas contribuyen a pequeñas variaciones locales de temperatura y precipitación.

La selección de estos puntos permite representar adecuadamente diferentes zonas agrícolas y climáticas del Valle del Cauca, facilitando la comparación de patrones ambientales y el análisis de similaridad climática con otras regiones tropicales del mundo.

Estos puntos se utilizan posteriormente para:

  • extraer variables bioclimáticas,
  • analizar temperatura y precipitación mensual,
  • calcular métricas de similaridad climática,
  • e identificar regiones del mundo con condiciones ambientales comparables.
Puntos representativos seleccionados en el Valle del Cauca
Sitio Longitud Latitud
Cartago -75.91 4.75
Palmira -76.30 3.54
Cali -76.53 3.45
Buga -76.30 3.90
Tulua -76.20 4.08
pts <- vect(
  data.frame(
    
    sitio = c(
      "Cartago",
      "Palmira",
      "Cali",
      "Buga",
      "Tulua"
    ),
    
    lon = c(
      -75.91,
      -76.30,
      -76.53,
      -76.30,
      -76.20
    ),
    
    lat = c(
      4.75,
      3.54,
      3.45,
      3.90,
      4.08
    )
  ),
  
  geom = c("lon","lat"),
  crs = "EPSG:4326"
)

3. Extraer altitud

altitud <- cache_rds(

  "cache/altitud_pts.rds",

  {

    terra::extract(
      elev,
      pts
    )
  }
)
## Leyendo desde cache:
##  cache/altitud_pts.rds
pts$altitud_m <- altitud[[2]]

4. Descargar clima actual

4.1. Precipitación mensual

El objeto pr_current corresponde a un conjunto raster multitemporal de precipitación mensual promedio.

Características principales:

  • Tipo de objeto: SpatRaster

  • Número de capas: 12 (una por cada mes)

  • Resolución espacial: 2.5 minutos

  • Cobertura espacial: global

  • Sistema de referencia: WGS84 (EPSG:4326)

  • Unidad de medida: milímetros (mm)

  • Fuente: WorldClim v2.1

Cada capa representa la precipitación acumulada promedio mensual para condiciones climáticas históricas de referencia.

Estas variables permiten caracterizar la distribución intra-anual de lluvias y evaluar patrones de estacionalidad hídrica relevantes para el cultivo de caña de azúcar.

pr_current <- cache_raster(

  "cache/prec_current.tif",

  {

    geodata::worldclim_global(
      var = "prec",
      res = 2.5,
      path = "data/"
    )
  }
)
## Leyendo raster desde cache:
## cache/prec_current.tif

4.2. Temperatura mínima mensual

El objeto tmin_current corresponde a un conjunto raster de temperatura mínima mensual promedio.

Características principales:

  • Tipo de objeto: SpatRaster

  • Número de capas: 12

  • Resolución espacial: 2.5 minutos

  • Cobertura espacial: global

  • Sistema de referencia: WGS84 (EPSG:4326)

  • Unidad de medida: °C

  • Fuente: WorldClim v2.1

Las temperaturas fueron ajustadas dividiendo los valores originales entre 10 debido a la escala utilizada por WorldClim.

Estas variables permiten evaluar condiciones térmicas mínimas relevantes para el crecimiento y posibles restricciones fisiológicas del cultivo.

tmin_current <- cache_raster(

  "cache/tmin_current.tif",

  {

    geodata::worldclim_global(
      var = "tmin",
      res = 2.5,
      path = "data/"
    ) / 10
  }
)
## Leyendo raster desde cache:
## cache/tmin_current.tif

4.3. Temperatura máxima mensual

El objeto tmax_current corresponde a un conjunto raster de temperatura máxima mensual promedio.

Características principales:

  • Tipo de objeto: SpatRaster

  • Número de capas: 12

  • Resolución espacial: 2.5 minutos

  • Cobertura espacial: global

  • Sistema de referencia: WGS84 (EPSG:4326)

  • Unidad de medida: °C

  • Fuente: WorldClim v2.1

Las variables permiten analizar condiciones de calor extremo y posibles efectos de estrés térmico sobre la productividad potencial de la caña de azúcar.

tmax_current <- worldclim_global(
  var = "tmax",
  res = 2.5,
  path = "data/"
)

5. Extraer variables climáticas en los puntos

prec_vals <- cache_rds(

  "cache/prec_vals.rds",

  {

    terra::extract(
      pr_current,
      pts
    )
  }
)
## Leyendo desde cache:
##  cache/prec_vals.rds
tmin_vals <- cache_rds(

  "cache/tmin_vals.rds",

  {

    terra::extract(
      tmin_current,
      pts
    )
  }
)
## Leyendo desde cache:
##  cache/tmin_vals.rds
tmax_vals <- cache_rds(

  "cache/tmax_vals.rds",

  {

    terra::extract(
      tmax_current,
      pts
    )
  }
)
## Leyendo desde cache:
##  cache/tmax_vals.rds

6. Calcular temperatura media mensual

temp_mean <- (
  tmin_vals[,-1] +
  tmax_vals[,-1]
) / 2

7. Construir dataframe de temperatura

Los puntos representan municipios estratégicos de la región cañera del Valle del Cauca:

  • Cartago

  • Palmira

  • Cali

  • Buga

  • Tuluá

Para cada punto se analizaron condiciones de temperatura, precipitación y similaridad climática global.

pts <- vect(
  data.frame(

    sitio = c(
      "Cartago",
      "Palmira",
      "Cali",
      "Buga",
      "Tulua"
    ),

    lon = c(
      -75.91,
      -76.30,
      -76.53,
      -76.30,
      -76.20
    ),

    lat = c(
      4.75,
      3.54,
      3.45,
      3.90,
      4.08
    )
  ),

  geom = c("lon","lat"),

  crs = "EPSG:4326"
)

writeVector(
  pts,
  "cache/pts.gpkg",
  overwrite = TRUE
)

## Crear vector de meses
meses <- c(
  "Ene","Feb","Mar","Abr","May","Jun",
  "Jul","Ago","Sep","Oct","Nov","Dic"
)

pts <- vect(
  "cache/pts.gpkg"
)

temp_df <- as.data.frame(temp_mean)

names(temp_df) <- meses

temp_df$sitio <- pts$sitio

## Pasar temperatura a formato largo

temp_long <- pivot_longer(
  
  temp_df,
  
  cols = all_of(meses),
  
  names_to = "mes",
  
  values_to = "temperatura"
)

8. Construir dataframe de precipitación

prec_df <- as.data.frame(
  prec_vals[,-1]
)

names(prec_df) <- meses

prec_df$sitio <- pts$sitio

### 11. Pasar precipitación a formato largo


prec_long <- pivot_longer(
  
  prec_df,
  
  cols = all_of(meses),
  
  names_to = "mes",
  
  values_to = "precipitacion"
)

9. Graficar temperatura mensual

temp_long$mes <- factor(
  temp_long$mes,
  levels = meses,
  ordered = TRUE
)

ggplot(
  temp_long,
  
  aes(
    x = mes,
    y = temperatura,
    color = sitio,
    group = sitio
  )
) +

geom_line(linewidth = 1.1) +

geom_point(size = 2) +

labs(
  title = "Temperatura media mensual",
  subtitle = "Puntos representativos del Valle del Cauca",
  x = "Mes - último año",
  y = "Temperatura (°C)"
) +

theme_minimal()

La temperatura media mensual de los puntos seleccionados del Valle del Cauca presenta un comportamiento relativamente estable a lo largo del año, característica típica de regiones tropicales cercanas al ecuador. En general, las variaciones térmicas son pequeñas entre meses, con diferencias aproximadas inferiores a 1.5 °C entre los valores máximos y mínimos observados.

Se evidencia que Cali registra las temperaturas medias más altas durante la mayor parte del año, alcanzando valores cercanos a 16 °C en agosto. Esto puede asociarse con condiciones climáticas ligeramente más cálidas y una menor influencia de enfriamiento orográfico respecto a otros puntos analizados.

Por otro lado, Cartago presenta las temperaturas medias más bajas del conjunto durante varios meses, especialmente entre octubre y noviembre, cuando se observan valores cercanos a 14.5 °C. Palmira, Buga y Tuluá muestran comportamientos intermedios y bastante similares entre sí.

También se identifican dos periodos relativamente cálidos: uno entre febrero y marzo y otro entre julio y agosto. Los descensos térmicos más notorios ocurren entre octubre y noviembre, coincidiendo con periodos de mayor nubosidad y precipitación en la región andina colombiana.


10. Graficar precipitación mensual

prec_long$mes <- factor(
  prec_long$mes,
  levels = meses,
  ordered = TRUE
)


ggplot(
  prec_long,
  
  aes(
    x = mes,
    y = precipitacion,
    color = sitio,
    group = sitio
  )
) +

geom_line(linewidth = 1.1) +

geom_point(size = 2) +

labs(
  title = "Precipitación mensual",
  subtitle = "Puntos representativos del Valle del Cauca",
  x = "Mes",
  y = "Precipitación (mm)"
) +

theme_minimal()

La precipitación mensual muestra una marcada estacionalidad bimodal, característica del régimen climático del Valle del Cauca y de gran parte de la región andina tropical colombiana.

Se observan dos temporadas lluviosas principales:

la primera entre marzo y mayo, y la segunda entre septiembre y noviembre.

Los máximos de precipitación ocurren principalmente en octubre, donde algunos puntos superan los 220 mm mensuales, especialmente Cartago y Tuluá. Estos periodos húmedos son relevantes para el crecimiento vegetativo de la caña de azúcar debido a la alta disponibilidad hídrica.

Asimismo, se identifican periodos relativamente secos entre julio y agosto, donde las precipitaciones disminuyen considerablemente en todos los sitios. Palmira presenta los menores valores de precipitación durante julio, mientras que Cali mantiene niveles relativamente más altos y estables durante varios meses del año.

Cartago destaca por registrar los mayores niveles de precipitación en distintos meses, particularmente en abril y octubre, lo que sugiere una mayor influencia de procesos convectivos y condiciones locales de humedad.

En general, aunque existen diferencias entre municipios, todos presentan periodos de lluvias compatibles con sistemas agrícolas tropicales húmedos y condiciones potencialmente favorables para el cultivo de caña de azúcar, especialmente bajo esquemas de manejo agrícola adaptados a la variabilidad intraanual de lluvia.


11. Tabla de puntos representativos

## Reconstruir puntos completamente
pts_df <- data.frame(
  
  sitio = c(
    "Cartago",
    "Palmira",
    "Cali",
    "Buga",
    "Tulua"
  ),
  
  lon = c(
    -75.91,
    -76.30,
    -76.53,
    -76.30,
    -76.20
  ),
  
  lat = c(
    4.75,
    3.54,
    3.45,
    3.90,
    4.08
  ),
  
  altitud_m = as.numeric(c(
    917,
    1001,
    1018,
    969,
    960
  ))
)

## Crear nuevamente el SpatVector
pts <- terra::vect(
  pts_df,
  geom = c("lon","lat"),
  crs = "EPSG:4326"
)

## Extraer coordenadas
coords <- terra::crds(pts)

## Tabla final
tabla_puntos <- data.frame(

  Sitio = pts_df$sitio,

  Longitud = round(coords[,1], 3),

  Latitud = round(coords[,2], 3),

  Altitud_m = round(
    pts_df$altitud_m,
    0
  )
)

## Mostrar tabla
knitr::kable(

  tabla_puntos,

  digits = 3,

  caption = "Puntos representativos seleccionados en el Valle del Cauca"
)
Puntos representativos seleccionados en el Valle del Cauca
Sitio Longitud Latitud Altitud_m
Cartago -75.91 4.75 917
Palmira -76.30 3.54 1001
Cali -76.53 3.45 1018
Buga -76.30 3.90 969
Tulua -76.20 4.08 960

Pregunta 4. ¿Qué regiones del mundo presentan condiciones climáticas similares a las observadas en los puntos seleccionados del Valle del Cauca según métricas de similaridad climática?

Objetivo

Identificar regiones del mundo con condiciones climáticas similares a las observadas en distintos puntos representativos del Valle del Cauca mediante métricas de distancia climática construidas a partir de variables bioclimáticas de temperatura y precipitación.


Metodología

Se utilizan variables bioclimáticas relacionadas con:

  • temperatura media,
  • extremos térmicos,
  • precipitación anual,
  • estacionalidad climática,
  • precipitación en trimestres secos y cálidos.

Posteriormente:

  1. se extraen las condiciones climáticas de cada punto seleccionado,
  2. se estandarizan las variables,
  3. se calcula una distancia climática global,
  4. se transforma la distancia en un índice de similaridad,
  5. y finalmente se identifican únicamente las regiones con mayor parecido climático.

Las zonas resaltadas representan las regiones del mundo con condiciones ambientales más similares a cada punto del Valle del Cauca.


1. Seleccionar variables bioclimáticas

## =========================
## Cargar CMIP6 con cache
## =========================

cmip <- cache_raster(

  "cache/cmip_bio_2041_2060.tif",

  {

    geodata::cmip6_world(
      model = "EC-Earth3-Veg",
      ssp = "245",
      time = "2041-2060",
      var = "bio",
      res = 2.5,
      path = "data/"
    )

  }
)
## Leyendo raster desde cache:
## cache/cmip_bio_2041_2060.tif
## Renombrar variables BIO
names(cmip) <- paste0(
  "BIO",
  1:19
)

## Variables bioclimáticas relevantes
bio_vars <- c(
  "BIO1",
  "BIO5",
  "BIO6",
  "BIO12",
  "BIO15",
  "BIO17",
  "BIO18"
)

## Crear stack reducido
bio_stack <- cmip[[bio_vars]]

bio_stack
## class       : SpatRaster 
## size        : 4320, 8640, 7  (nrow, ncol, nlyr)
## resolution  : 0.04166667, 0.04166667  (x, y)
## extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (EPSG:4326) 
## source      : cmip_bio_2041_2060.tif 
## names       :  BIO1,  BIO5,  BIO6, BIO12, BIO15, BIO17, ... 
## min values  : -53.3, -29.4, -71.5,     0,   0.0,     0, ... 
## max values  :  33.4,  51.2,  27.8, 11693, 230.7,  1524, ...

2. Extraer clima de los puntos

pts_climate <- cache_rds(

  "cache/pts_climate.rds",

  {

    terra::extract(
      bio_stack,
      pts
    )
  }
)
## Leyendo desde cache:
##  cache/pts_climate.rds

3. Estandarizar variables climáticas

La estandarización evita que variables con escalas grandes dominen el cálculo de distancia climática.

global_values <- values(
  bio_stack
)

complete_rows <- complete.cases(
  global_values
)

global_matrix <- global_values[
  complete_rows,
]

clim_matrix <- scale(
  global_matrix
)

centers <- attr(
  clim_matrix,
  "scaled:center"
)

scales <- attr(
  clim_matrix,
  "scaled:scale"
)

4. Calcular mapas de similaridad climática

library(terra)
library(ggplot2)
library(tidyterra)
library(dplyr)
library(terra)
library(ggplot2)
library(tidyterra)
library(dplyr)
library(tidyr)

#========================================
# RECARGAR CMIP DESDE CACHE
#========================================

cmip <- cache_raster(

  "cache/cmip_bio.tif",

  {

    x <- load_or_download_cmip(

      model = "EC-Earth3-Veg",

      ssp = "245",

      time = "2041-2060",

      var = "bio",

      res = 2.5,

      path = "data/"
    )

    names(x) <- paste0("BIO", 1:19)

    x
  }
)
## Leyendo raster desde cache:
## cache/cmip_bio.tif
#========================================
# VARIABLES BIO
#========================================

bio_vars <- c(
  "BIO1",
  "BIO5",
  "BIO6",
  "BIO12",
  "BIO15",
  "BIO17",
  "BIO18"
)

#========================================
# STACK REDUCIDO
#========================================

bio_stack <- cache_raster(

  "cache/bio_stack_selected.tif",

  {

    cmip[[bio_vars]]
  }
)
## Leyendo raster desde cache:
## cache/bio_stack_selected.tif
#========================================
# FRONTERAS
#========================================

world_plot <- geodata::world(
  path = "data/"
)

#========================================
# INFORMACIÓN PUNTOS
#========================================

pts_info <- data.frame(

  sitio = c(
    "Cartago",
    "Palmira",
    "Cali",
    "Buga",
    "Tulua"
  ),

  lon = c(
    -75.91,
    -76.30,
    -76.53,
    -76.30,
    -76.20
  ),

  lat = c(
    4.75,
    3.54,
    3.45,
    3.90,
    4.08
  )
)

#========================================
# PUNTOS VECTORIALES
#========================================

pts_vect <- vect(
  pts_info,
  geom = c("lon","lat"),
  crs = "EPSG:4326"
)

#========================================
# EXTRAER CLIMA PUNTOS
#========================================

pts_climate <- cache_rds(

  "cache/pts_climate_similarity.rds",

  {

    terra::extract(
      bio_stack,
      pts_vect
    )
  }
)
## Leyendo desde cache:
##  cache/pts_climate_similarity.rds
#========================================
# MUESTREO GLOBAL
#========================================

bio_df <- cache_rds(

  "cache/bio_df_global.rds",

  {

    spatSample(

      bio_stack,

      size = 200000,

      method = "regular",

      as.df = TRUE,

      xy = TRUE,

      na.rm = TRUE
    )
  }
)
## Leyendo desde cache:
##  cache/bio_df_global.rds
#========================================
# LIMPIAR NAs
#========================================

bio_df_clean <- cache_rds(

  "cache/bio_df_clean.rds",

  {

    bio_df %>%

      drop_na(
        all_of(bio_vars)
      )
  }
)
## Leyendo desde cache:
##  cache/bio_df_clean.rds
#========================================
# MATRIZ CLIMÁTICA ESTANDARIZADA
#========================================

clim_objects <- cache_rds(

  "cache/clim_matrix_objects.rds",

  {

    clim_matrix <- scale(
      bio_df_clean[, bio_vars]
    )

    list(

      clim_matrix = clim_matrix,

      centers = attr(
        clim_matrix,
        "scaled:center"
      ),

      scales = attr(
        clim_matrix,
        "scaled:scale"
      )
    )
  }
)
## Leyendo desde cache:
##  cache/clim_matrix_objects.rds
#========================================
# RECUPERAR OBJETOS
#========================================

clim_matrix <- clim_objects$clim_matrix

centers <- clim_objects$centers

scales <- clim_objects$scales
#========================================
# MATRIZ CLIMÁTICA
#========================================

clim_matrix <- scale(
  bio_df_clean[, bio_vars]
)

centers <- attr(
  clim_matrix,
  "scaled:center"
)

scales <- attr(
  clim_matrix,
  "scaled:scale"
)

#========================================
# TEMPLATE RASTER NUEVO
#========================================

template_raster <- bio_stack[[1]]
template_raster <- rast(
  "cache/bio_stack_selected.tif"
)[[1]]
#========================================
# LOOP DE MAPAS
#========================================

for(i in 1:nrow(pts_info)){

  #-----------------------------------
  # Información del punto
  #-----------------------------------

  sitio_actual <- pts_info$sitio[i]

  lon_actual <- pts_info$lon[i]

  lat_actual <- pts_info$lat[i]

  #-----------------------------------
  # Vector climático referencia
  #-----------------------------------

  ref <- pts_climate[
    i,
    bio_vars
  ]

  ref_scaled <- scale(

    ref,

    center = centers,

    scale = scales
  )

  #-----------------------------------
  # Distancia climática
  #-----------------------------------

  dist_clim <- sqrt(

    rowSums(

      (
        clim_matrix -

        matrix(

          as.numeric(ref_scaled),

          nrow(clim_matrix),

          length(bio_vars),

          byrow = TRUE
        )

      )^2
    )
  )

  #-----------------------------------
  # Similaridad
  #-----------------------------------

  similarity_values <- 1 / (1 + dist_clim)

  #-----------------------------------
  # Percentil 95
  #-----------------------------------

  threshold <- quantile(

    similarity_values,

    probs = 0.95,

    na.rm = TRUE
  )

  #-----------------------------------
  # Dataframe espacial
  #-----------------------------------

  sim_df <- bio_df_clean[, c("x","y")]

  sim_df$similar <- ifelse(

    similarity_values >= threshold,

    "Muy similar",

    NA
  )

  sim_df <- sim_df %>%

    filter(
      !is.na(similar)
    )

  #-----------------------------------
  # MAPA
  #-----------------------------------

  p <- ggplot() +

    geom_point(

      data = sim_df,

      aes(
        x = x,
        y = y
      ),

      color = "darkgreen",

      alpha = 0.5,

      size = 0.4
    ) +

    geom_spatvector(

      data = world_plot,

      fill = NA,

      color = "black",

      linewidth = 0.2
    ) +

    geom_point(

      aes(
        x = lon_actual,
        y = lat_actual
      ),

      color = "red",

      size = 3
    ) +

    coord_sf(

      xlim = c(-120,160),

      ylim = c(-40,40)
    ) +

    labs(

      title = paste(
        "Regiones climáticamente similares a",
        sitio_actual
      ),

      subtitle = "Top 5% de regiones con mayor similaridad climática",

      caption = paste(
        "Variables utilizadas:",
        paste(bio_vars, collapse = ", ")
      )
    ) +

    theme_minimal()

  print(p)

  gc()
}


Pregunta 5. ¿Qué diferencias y similitudes se observan entre los mapas generados mediante la aproximación de aptitud climática y aquellos obtenidos a partir de métricas de similaridad?

En este caso se quiere comparar espacialmente las regiones identificadas como altamente aptas para el cultivo de caña de azúcar con aquellas regiones que presentan alta similaridad climática respecto a los puntos seleccionados del Valle del Cauca.

La comparación permite evaluar:

  • qué zonas del mundo cumplen simultáneamente ambas condiciones,
  • qué regiones son aptas pero climáticamente diferentes,
  • y qué regiones presentan climas similares aunque no necesariamente tengan la mayor aptitud climática para la caña.

Metodología de comparación espacial

Se comparan dos resultados previamente obtenidos:

  1. El mapa global de alta aptitud climática para caña de azúcar.
  2. Los mapas de similaridad climática construidos mediante distancia euclidiana respecto a cada punto del Valle del Cauca.

Para cada punto se genera un mapa de superposición espacial con tres categorías:

  • Zonas únicamente aptas para caña.
  • Zonas únicamente similares climáticamente.
  • Zonas donde ambas condiciones coinciden.

Construcción de mapas de superposición

library(terra)
library(ggplot2)
library(tidyterra)
library(dplyr)

#========================================
# CARGAR APTITUD
#========================================

high_suitability <- rast(
  "cache/high_suitability.tif"
)

#========================================
# TEMPLATE
#========================================

template_raster <- rast(
  "cache/bio_stack_selected.tif"
)[[1]]

#========================================
# FRONTERAS
#========================================

world_plot <- geodata::world(
  path = "data/"
)

#========================================
# LOOP
#========================================

for(i in 1:nrow(pts_info)){

  #-----------------------------------
  # Información punto
  #-----------------------------------

  sitio_actual <- pts_info$sitio[i]

  lon_actual <- pts_info$lon[i]

  lat_actual <- pts_info$lat[i]

  #-----------------------------------
  # Clima referencia
  #-----------------------------------

  ref <- pts_climate[
    i,
    bio_vars
  ]

  ref_scaled <- scale(
    ref,
    center = centers,
    scale = scales
  )

  #-----------------------------------
  # Distancia climática
  #-----------------------------------

  dist_clim <- sqrt(

    rowSums(

      (
        clim_matrix -

        matrix(
          as.numeric(ref_scaled),
          nrow(clim_matrix),
          length(bio_vars),
          byrow = TRUE
        )

      )^2
    )
  )

  #-----------------------------------
  # Similaridad
  #-----------------------------------

  similarity_values <- 1 / (1 + dist_clim)

  # MENOS RESTRICTIVO
  threshold <- quantile(
    similarity_values,
    probs = 0.85,
    na.rm = TRUE
  )

  #-----------------------------------
  # Raster similaridad
  #-----------------------------------

  similarity_raster <- rast(
    template_raster
  )

  values(similarity_raster) <- NA

  cells <- cellFromXY(
    template_raster,
    bio_df_clean[, c("x","y")]
  )

  similarity_binary <- ifelse(
    similarity_values >= threshold,
    1,
    NA
  )

  similarity_raster[cells] <- similarity_binary

  #-----------------------------------
  # AGREGAR PIXELES
  #-----------------------------------

  similarity_raster <- aggregate(
    similarity_raster,
    fact = 2,
    fun = max,
    na.rm = TRUE
  )

  high_suitability_ag <- aggregate(
    high_suitability,
    fact = 2,
    fun = max,
    na.rm = TRUE
  )

  #-----------------------------------
  # SUPERPOSICIÓN
  #-----------------------------------

  overlap <- ifel(
    !is.na(similarity_raster) &
    high_suitability_ag == 1,
    2,
    ifel(
      !is.na(similarity_raster),
      1,
      NA
    )
  )

  names(overlap) <- "categoria"

  #-----------------------------------
  # DATAFRAME
  #-----------------------------------

  overlap_df <- as.data.frame(
    overlap,
    xy = TRUE,
    na.rm = TRUE
  )

  names(overlap_df)[3] <- "categoria"

  overlap_df$categoria <- factor(
    overlap_df$categoria,
    levels = c(1,2),
    labels = c(
      "Solo similaridad",
      "Solapamiento"
    )
  )

  #-----------------------------------
  # MAPA
  #-----------------------------------

  p <- ggplot() +

    geom_raster(

      data = overlap_df,

      aes(
        x = x,
        y = y,
        fill = categoria
      ),

      alpha = 0.9
    ) +

    scale_fill_manual(

      values = c(

        "Solo similaridad" = "skyblue3",

        "Solapamiento" = "darkgreen"
      ),

      name = "Clasificación"
    ) +

    geom_spatvector(

      data = world_plot,

      fill = NA,

      color = "black",

      linewidth = 0.25
    ) +

    geom_point(

      aes(
        x = lon_actual,
        y = lat_actual
      ),

      color = "red",

      size = 3
    ) +

    coord_sf(

      xlim = c(-120,160),

      ylim = c(-40,40),

      expand = FALSE
    ) +

    labs(

      title = paste(
        "Comparación entre aptitud y similaridad:",
        sitio_actual
      ),

      subtitle = "Regiones climáticamente similares y coincidencias con alta aptitud",

      caption = "Verde = coincidencia entre ambas metodologías"
    ) +

    theme_minimal() +

    theme(

      legend.position = "right",

      panel.grid.major = element_line(
        color = "gray85",
        linewidth = 0.2
      ),

      axis.title = element_blank()
    )

  print(p)

  gc()
}

Los resultados obtenidos para los distintos puntos representativos del Valle del Cauca muestran patrones espaciales altamente consistentes entre sí. Esto ocurre porque Cartago, Palmira, Cali, Buga y Tuluá presentan condiciones climáticas relativamente similares, asociadas a su ubicación dentro del valle interandino del río Cauca y a altitudes cercanas entre 900 y 1.020 metros sobre el nivel del mar.

En todos los mapas se observa que las regiones climáticamente similares se concentran principalmente en zonas tropicales y subtropicales húmedas del planeta. Las coincidencias más importantes aparecen en:

el norte de Suramérica, Centroamérica, el sudeste de Brasil, África ecuatorial, el sudeste asiático, Indonesia, y algunas regiones del norte de Australia.

Las áreas coloreadas en verde representan regiones donde coinciden simultáneamente dos condiciones: alta aptitud climática para la caña de azúcar y alta similaridad respecto al clima del punto analizado en el Valle del Cauca. Esto indica que dichas zonas no solo poseen condiciones favorables para el cultivo, sino que además presentan un comportamiento climático muy parecido al observado en los municipios seleccionados.

También se evidencia que la mayor parte de las coincidencias ocurre dentro de la franja tropical del planeta, aproximadamente entre los 30°N y 30°S, lo cual es coherente con los requerimientos térmicos y de precipitación de la caña de azúcar. Las regiones templadas o de alta latitud prácticamente no presentan coincidencias debido a temperaturas más bajas y mayor estacionalidad climática.

Aunque existen pequeñas diferencias entre mapas, especialmente en la extensión de ciertas zonas de África o Sudamérica, el patrón general es muy similar para todos los puntos. Esto sugiere que los municipios seleccionados comparten una firma climática regional bastante homogénea. En consecuencia, el análisis confirma que el Valle del Cauca posee condiciones representativas de otros grandes territorios productores de caña a nivel mundial.

Conclusión

Los resultados muestran que las regiones climáticamente similares a los puntos seleccionados del Valle del Cauca se concentran principalmente en zonas tropicales y subtropicales del planeta.

Las áreas identificadas presentan patrones comparables de temperatura media anual, disponibilidad hídrica y estacionalidad climática, características fundamentales para el desarrollo del cultivo de caña de azúcar.

En general, las regiones con mayor similaridad se localizan en:

  • Brasil,
  • India,
  • Centroamérica,
  • sudeste asiático,
  • y algunas zonas del África tropical.

Los mapas obtenidos mediante la aproximación de aptitud climática y aquellos construidos a partir de métricas de similaridad presentan importantes coincidencias espaciales, aunque responden a enfoques metodológicos diferentes.

Por un lado, el índice de aptitud climática identifica regiones que cumplen simultáneamente con rangos considerados óptimos para el cultivo de caña de azúcar. Esta metodología utiliza criterios agronómicos predefinidos asociados principalmente con temperatura, precipitación y estacionalidad climática. Como resultado, los mapas muestran grandes extensiones tropicales y subtropicales con condiciones favorables para el cultivo, especialmente en regiones de Brasil, India, Centroamérica, el sudeste asiático y África tropical.

Por otro lado, el análisis de similaridad climática no evalúa directamente la aptitud agrícola, sino el grado de parecido climático entre diferentes regiones del mundo y puntos específicos seleccionados en el Valle del Cauca. Para ello se utilizan métricas cuantitativas basadas en distancia euclidiana sobre variables bioclimáticas estandarizadas. Esta aproximación permite identificar regiones que presentan combinaciones climáticas comparables a las observadas localmente, independientemente de si dichas condiciones corresponden o no a rangos óptimos teóricos para la caña de azúcar.

Entre las principales similitudes se observa que ambas metodologías resaltan predominantemente regiones tropicales húmedas y cálidas. Esto sugiere que las condiciones climáticas del Valle del Cauca coinciden con algunos de los principales cinturones productores de caña de azúcar a nivel mundial. Asimismo, ambos enfoques identifican una fuerte concentración de áreas favorables en latitudes bajas cercanas al ecuador.

Sin embargo, también se observan diferencias importantes. El índice de aptitud climática genera mapas más continuos y generalizados, debido a que clasifica áreas según umbrales fijos de adecuación agrícola. En contraste, los mapas de similaridad muestran patrones más fragmentados y específicos, ya que dependen de la combinación multivariada exacta de condiciones climáticas presentes en cada punto analizado.

Adicionalmente, la aproximación de aptitud climática está orientada a evaluar potencial productivo para un cultivo específico, mientras que la similaridad climática permite explorar analogías ambientales y posibles regiones comparables desde una perspectiva ecológica y agroclimática más amplia.

Los resultados muestran una superposición relativamente limitada entre ambas metodologías. Esto ocurre porque los criterios utilizados son altamente restrictivos.

Por una parte, el mapa de aptitud considera únicamente regiones con niveles altos o muy altos de idoneidad climática para la caña de azúcar. Por otra parte, el mapa de similaridad conserva exclusivamente el 5% de regiones climáticamente más parecidas a cada punto del Valle del Cauca.

En consecuencia, el análisis identifica únicamente regiones que cumplen simultáneamente condiciones óptimas para el cultivo y un patrón climático extremadamente cercano al observado en el Valle del Cauca.

A pesar de la baja coincidencia espacial, las zonas de solapamiento identificadas se concentran principalmente en regiones tropicales productoras de caña de azúcar como Brasil, India, Centroamérica y algunas zonas del sudeste asiático y África tropical.

Esto sugiere que, aunque muchas regiones pueden ser aptas para el cultivo, solo una fracción reducida reproduce de manera muy cercana las condiciones climáticas específicas presentes en el Valle del Cauca.

Estos resultados coinciden con importantes regiones productoras de caña de azúcar a nivel mundial, lo que sugiere que las condiciones agroclimáticas del Valle del Cauca son comparables con varios de los principales cinturones cañeros del planeta.

Asimismo, se observan diferencias espaciales entre los puntos seleccionados, lo cual refleja la variabilidad altitudinal y climática existente dentro del Valle del Cauca.