1 1 Introducción

La caña de azúcar (Saccharum officinarum) constituye uno de los cultivos tropicales de mayor importancia económica a escala mundial debido a su relevancia en la producción de azúcar, bioetanol y derivados agroindustriales. Su distribución espacial depende principalmente de variables climáticas como temperatura, precipitación y estacionalidad.

Los Sistemas de Información Geográfica (SIG) y las técnicas de análisis espacial permiten integrar información ambiental global para modelar regiones potencialmente aptas para el desarrollo agrícola. En particular, los modelos de aptitud climática permiten identificar zonas óptimas mediante umbrales agroclimáticos, mientras que los modelos de similitud ambiental permiten detectar regiones análogas respecto a territorios altamente productivos.

En este estudio se desarrolla un análisis espacial multicriterio utilizando datos climáticos globales WorldClim v2.1 y procesamiento raster en R para:

  • Modelar la aptitud climática global de la caña de azúcar.
  • Identificar regiones con alto potencial agroclimático.
  • Delimitar zonas de influencia cañera del Valle del Cauca.
  • Comparar modelos de aptitud y similitud ambiental.
  • Evaluar regiones análogas respecto al Valle del Cauca.

2 2 Objetivos

2.1 2.1 Objetivo general

Modelar la aptitud climática y la similitud ambiental global para el cultivo de caña de azúcar mediante técnicas de análisis espacial y procesamiento raster en R.

2.2 2.2 Objetivos específicos

  1. Construir mapas globales de aptitud climática.
  2. Identificar países con alto potencial agroclimático.
  3. Delimitar espacialmente zonas de influencia cañera del Valle del Cauca.
  4. Extraer información climática de municipios representativos.
  5. Generar climatologías mensuales de temperatura y precipitación.
  6. Implementar un modelo global de similitud climática.
  7. Comparar enfoques determinísticos y continuos de aptitud ambiental.

3 3 Marco teórico

3.1 3.1 Sistemas de Información Geográfica

Los Sistemas de Información Geográfica (SIG) permiten capturar, almacenar, procesar y representar información espacial. En estudios agroclimáticos, los SIG facilitan el análisis integrado de variables ambientales mediante estructuras raster y vectoriales.

3.2 3.2 Datos raster climáticos

Los datos raster representan superficies continuas mediante celdas regulares. WorldClim v2.1 proporciona variables BIOCLIM derivadas de interpolaciones climáticas globales de alta resolución espacial.

3.3 3.3 Aptitud climática

La aptitud climática representa el grado en que una región cumple condiciones óptimas para el desarrollo agrícola. Para la caña de azúcar, las variables más relevantes incluyen:

  • Temperatura media anual.
  • Precipitación anual.
  • Estacionalidad climática.
  • Temperaturas extremas.

3.4 3.4 Similitud climática

La similitud climática permite identificar regiones ambientalmente análogas respecto a un sitio de referencia. Este enfoque resulta útil para:

  • transferencia tecnológica,
  • expansión agrícola,
  • identificación de áreas potenciales,
  • análisis de cambio climático.

4 4 Librerías

options(timeout = 1200)

Sys.setenv(RETICULATE_PYTHON = "")
# evita que R intente usar Python (esto era tu error)

library(terra)
library(sf)
library(geodata)
library(dplyr)
library(tidyr)
library(ggplot2)
library(viridis)
library(rnaturalearth)
library(rnaturalearthdata)
library(ggspatial)
library(scales)
library(tidyterra)

theme_set(theme_minimal(base_size = 13))

terra::terraOptions(memfrac = 0.8, tempdir = tempdir())

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

5 Datos climáticos

Se utilizaron datos climáticos globales WorldClim v2.1 con resolución espacial de 10 minutos (~18 km).

Variables utilizadas:

BIO1 → Temperatura media anual. BIO5 → Temperatura máxima del mes más cálido. BIO6 → Temperatura mínima del mes más frío. BIO12 → Precipitación anual. BIO15 → Estacionalidad de precipitación.

# Crear carpeta si no existe
if (!dir.exists("data")) dir.create("data")

# Descargar SOLO UNA VEZ
clim <- geodata::worldclim_global(
  var = "bio",
  res = 10,
  path = "data"
)

# Variables
bio1  <- clim[[1]]
bio5  <- clim[[5]]
bio6  <- clim[[6]]
bio12 <- clim[[12]]
bio15 <- clim[[15]]

# Escala correcta
tmean <- bio1 / 10
tmax  <- bio5 / 10
tmin  <- bio6 / 10
prec  <- bio12
pest  <- bio15

6 Preparación de variables

La variable BIO1 se encuentra almacenada multiplicada por 10, por lo cual es necesario corregir su escala.

# Preparación climática
tmean <- bio1 / 10
tmax  <- bio5 / 10
tmin  <- bio6 / 10
prec  <- bio12
pest  <- bio15

7 Exploración climática global

7.1 Temperatura media anual

ggplot() +
  geom_spatraster(data = tmean) +
  scale_fill_viridis_c(
    option = "C",
    name = "°C",
    na.value = "white"
  ) +
  labs(
    title = "Temperatura media anual global",
    subtitle = "WorldClim v2.1"
  ) +
  theme(
    legend.position = "right"
  )
## <SpatRaster> resampled to 5e+05 cells.

7.2 Precipitación anual

ggplot() +
  geom_spatraster(data = prec) +
  scale_fill_viridis_c(
    option = "D",
    name = "mm",
    trans = "sqrt",
    na.value = "white"
  ) +
  labs(
    title = "Precipitación anual global",
    subtitle = "WorldClim v2.1"
  )
## <SpatRaster> resampled to 5e+05 cells.

8 Modelo multicriterio de aptitud climática

La aptitud climática se modeló mediante un enfoque multicriterio ponderado considerando: - Temperatura media anual. - Precipitación anual. - Estacionalidad climática.

8.1 Temperatura óptima

  • Óptimo: 22.5–28 °C.
  • Subóptimo: 18–22.5 °C y 28–32 °C.

8.2 Precipitación óptima

  • Óptimo: 1500–3500 mm

8.3 Estacionalidad

  • Menores niveles de estacionalidad favorecen la estabilidad fisiológica del cultivo.

9 Reclasificación de variables

9.1 Temperatura

temp_score <- terra::classify(
  tmean,
  rcl = matrix(c(
    -Inf, 18,   0,
    18,   22.5, 50,
    22.5, 28,   100,
    28,   32,   50,
    32,   Inf,  0
  ), ncol = 3, byrow = TRUE)
)

9.2 Precipitación

prec_score <- classify(
  prec,
  rcl = matrix(c(
    -Inf, 1000, 0,
    1000, 1500, 50,
    1500, 3500, 100,
    3500, 4500, 50,
    4500, Inf, 0
  ),
  ncol = 3,
  byrow = TRUE)
)

10 Estacionalidad

est_score <- classify(
  pest,
  rcl = matrix(c(
    -Inf, 40, 100,
    40, 70, 70,
    70, Inf, 20
  ),
  ncol = 3,
  byrow = TRUE)
)

11 Modelo final de aptitud climática

Se implementó un modelo ponderado:

  • Temperatura → 40%.
  • Precipitación → 40%.
  • Estacionalidad → 20%.
aptitud <- (
  temp_score * 0.4 +
  prec_score * 0.4 +
  est_score * 0.2
)

names(aptitud) <- "Aptitud"

12 Mapa global de aptitud climática

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

ggplot() +
  geom_spatraster(data = aptitud) +
  scale_fill_viridis_c(
    option = "B",
    limits = c(0,100),
    name = "Índice"
  ) +
  geom_sf(
    data = world,
    fill = NA,
    color = "gray40",
    linewidth = 0.2
  ) +
  labs(
    title = "Aptitud climática global para caña de azúcar",
    subtitle = "Modelo multicriterio ponderado"
  ) +
  annotation_scale(location = "bl") +
  annotation_north_arrow(location = "tr") +
  theme(
    plot.title = element_text(face = "bold", size = 16),
    legend.position = "right"
  )
## <SpatRaster> resampled to 5e+05 cells.
## Scale on map varies by more than 10%, scale bar may be inaccurate

13 Identificación de países con alto potencial

Los países seleccionados fueron:

  • Brasil
  • India
  • Colombia
paises <- world %>%
  filter(admin %in% c(
    "Brazil",
    "India",
    "Colombia"
  ))

14 Recorte espacial de países

par(mfrow = c(1,3))

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

  pais_vect <- vect(paises[i,])

  apt_crop <- crop(aptitud, pais_vect)
  apt_mask <- mask(apt_crop, pais_vect)

  plot(
    apt_mask,
    main = paises$admin[i],
    col = viridis(100),
    axes = FALSE
  )

  plot(
    st_geometry(paises[i,]),
    add = TRUE,
    border = "black",
    lwd = 0.5
  )
}

par(mfrow = c(1,1))

15 Zona cañera del Valle del Cauca

El Valle del Cauca representa una de las regiones agroindustriales más importantes de América Latina para la producción de caña de azúcar.

Se seleccionaron municipios representativos del corredor azucarero:

  • Cali.
  • Palmira.
  • Florida.
  • Pradera.
  • Candelaria.
  • Buga.
  • Tuluá.
valle <- data.frame(
  municipio = c("Cali","Palmira","Florida","Pradera","Candelaria","Buga","Tulua"),
  lon = c(-76.53,-76.30,-76.24,-76.17,-76.35,-76.30,-76.20),
  lat = c(3.45,3.53,3.32,3.42,3.41,3.90,4.08)
)
valle_sf <- sf::st_as_sf(valle, coords = c("lon","lat"), crs = 4326)

valle_vect <- terra::vect(valle_sf)

# Buffer 20 km (en metros → proyectar primero)
valle_proj <- terra::project(valle_vect, "EPSG:3857")

valle_buffer <- terra::buffer(valle_proj, width = 20000)

valle_buffer_wgs84 <- terra::project(valle_buffer, "EPSG:4326")

15.1 Mapa regional mejorado (político + influencia cañera)

colombia <- world %>%
  filter(admin == "Colombia")

ggplot() +

  # Base política del país
  geom_sf(
    data = colombia,
    fill = "gray95",
    color = "gray50",
    linewidth = 0.3
  ) +

  # Zona de influencia (BUFFER)
  geom_sf(
    data = valle_buffer_wgs84,
    fill = "darkgreen",
    alpha = 0.25,
    color = "darkgreen"
  ) +

  # Municipios (puntos)
  geom_sf(
    data = valle_sf,
    aes(color = municipio),
    size = 3
  ) +

  # Zoom espacial correcto
  coord_sf(
    xlim = c(-78, -75),
    ylim = c(2, 5),
    expand = FALSE
  ) +

  # Escala y norte
  ggspatial::annotation_scale(location = "bl", width_hint = 0.3) +
  ggspatial::annotation_north_arrow(
    location = "tr",
    style = ggspatial::north_arrow_fancy_orienteering
  ) +

  labs(
    title = "Zona de influencia cañera del Valle del Cauca",
    subtitle = "Municipios representativos + área de influencia agroindustrial (buffer 20 km)",
    color = "Municipio"
  ) +

  theme_minimal(base_size = 13) +
  theme(
    legend.position = "right",
    plot.title = element_text(face = "bold")
  )

16 Extracción climática

# Convertir sf → SpatVector (si no lo hiciste antes)
valle_vect <- terra::vect(valle_sf)

names(tmean) <- "tmean"
names(prec)  <- "prec"

clima_valle <- terra::extract(
  c(tmean, prec),
  valle_vect,
  df = TRUE
)

clima_valle <- cbind(valle, clima_valle[, -1])
names(clima_valle)[4:5] <- c("temperatura", "precipitacion")

# Renombrar columnas de forma segura
colnames(clima_valle)[(ncol(clima_valle)-1):ncol(clima_valle)] <- c(
  "temperatura",
  "precipitacion"
)

# Resultado
clima_valle

17 Climatologías mensuales

Se utilizaron variables mensuales WorldClim para generar climatologías mensuales de temperatura y precipitación.

temp_month <- worldclim_global(
  var  = "tavg",
  res  = 10,
  path = "data"
)

prec_month <- worldclim_global(
  var  = "prec",
  res  = 10,
  path = "data"
)

18 Extracción mensual

temp_series <- terra::extract(
  temp_month,
  valle_vect
)

prec_series <- terra::extract(
  prec_month,
  valle_vect
)

19 Series climáticas profesionales

19.1 Temperatura mensual

temp_df <- data.frame(
  mes = factor(
    month.abb,
    levels = month.abb
  )
)

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

  temp_df[[valle$municipio[i]]] <-
    as.numeric(temp_series[i,-1]) / 10
}

temp_long <- pivot_longer(
  temp_df,
  -mes,
  names_to = "municipio",
  values_to = "temperatura"
)

ggplot(
  temp_long,
  aes(
    x = mes,
    y = temperatura,
    color = municipio,
    group = municipio
  )
) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2) +
  scale_y_continuous(
    labels = label_number(suffix = " °C")
  ) +
  scale_color_viridis_d() +
  labs(
    title = "Climatología mensual de temperatura",
    subtitle = "Municipios cañeros del Valle del Cauca",
    x = "Mes",
    y = "Temperatura"
  ) +
  theme(
    legend.position = "bottom"
  )

19.2 Precipitación mensual

prec_df <- data.frame(
  mes = factor(
    month.abb,
    levels = month.abb
  )
)

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

  prec_df[[valle$municipio[i]]] <-
    as.numeric(prec_series[i,-1])
}

prec_long <- pivot_longer(
  prec_df,
  -mes,
  names_to = "municipio",
  values_to = "precipitacion"
)

ggplot(
  prec_long,
  aes(
    x = mes,
    y = precipitacion,
    color = municipio,
    group = municipio
  )
) +
  geom_line(linewidth = 1.2) +
  geom_point(size = 2) +
  scale_color_viridis_d() +
  scale_y_continuous(
    labels = comma
  ) +
  labs(
    title = "Climatología mensual de precipitación",
    subtitle = "Municipios cañeros del Valle del Cauca",
    x = "Mes",
    y = "Precipitación (mm)"
  ) +
  theme(
    legend.position = "bottom"
  )

20 Modelo de similitud climática

La similitud climática permite identificar regiones ambientales análogas respecto a una zona de referencia. En estudios agroclimáticos, este enfoque es ampliamente utilizado para detectar áreas con condiciones potencialmente equivalentes para el desarrollo de cultivos.

A diferencia del modelo de aptitud climática, que clasifica regiones mediante umbrales fijos, el modelo de similitud climática representa gradientes continuos de proximidad ambiental. Esto permite comparar regiones del mundo con condiciones similares al Valle del Cauca, una de las zonas con mayor productividad cañera de Colombia.

En este estudio se utiliza una aproximación basada en distancia euclidiana estandarizada. Para ello, las variables climáticas globales son normalizadas mediante puntajes Z, permitiendo comparar variables con distintas unidades y escalas.

Posteriormente, se calcula la distancia climática entre cada celda raster global y el clima promedio observado en los municipios de referencia del Valle del Cauca.

Las regiones con valores bajos de distancia representan condiciones climáticas más similares al Valle del Cauca, mientras que valores altos indican menor similitud ambiental.

21 Estandarización climática

Debido a que la temperatura y la precipitación poseen unidades y rangos diferentes, es necesario realizar un proceso de estandarización estadística previo al cálculo de similitud climática.

La normalización mediante puntajes Z permite expresar cada variable en términos de desviaciones estándar respecto a la media global:

\[ Z = \frac{X - \mu}{\sigma} \]

donde:

  • \(X\) corresponde al valor climático original,
  • \(\mu\) representa la media global,
  • \(\sigma\) corresponde a la desviación estándar global.

Este procedimiento evita que variables con magnitudes mayores dominen el cálculo de distancia climática.

En el presente estudio se estandarizaron:

  • temperatura media anual,
  • precipitación anual.
# Estadísticos globales de temperatura
t_stats <- global(
  tmean,
  c("mean", "sd"),
  na.rm = TRUE
)

# Estadísticos globales de precipitación
p_stats <- global(
  prec,
  c("mean", "sd"),
  na.rm = TRUE
)

# Media y desviación estándar
t_mean <- t_stats[1,1]
t_sd   <- t_stats[1,2]

p_mean <- p_stats[1,1]
p_sd   <- p_stats[1,2]

# Validación estadística
stopifnot(t_sd > 0)
stopifnot(p_sd > 0)

# Estandarización Z-score
t_z <- (tmean - t_mean) / t_sd

p_z <- (prec - p_mean) / p_sd

22 Clima de referencia

ref_temp <- mean(
  clima_valle$temperatura,
  na.rm = TRUE
)

ref_prec <- mean(
  clima_valle$precipitacion,
  na.rm = TRUE
)

ref_tz <- (
  ref_temp - t_stats[1,1]
) / t_stats[1,2]

ref_pz <- (
  ref_prec - p_stats[1,1]
) / p_stats[1,2]

23 Distancia euclidiana

distancia <- sqrt(
  (t_z - ref_tz)^2 +
  (p_z - ref_pz)^2
)

24 Mapa global de similitud climática

ggplot() +
  geom_spatraster(data = distancia) +
  scale_fill_viridis_c(
    option = "A",
    direction = -1,
    name = "Distancia"
  ) +
  geom_sf(
    data = world,
    fill = NA,
    color = "gray50",
    linewidth = 0.2
  ) +
  labs(
    title = "Similitud climática global respecto al Valle del Cauca",
    subtitle = "Distancia euclidiana estandarizada"
  ) +
  annotation_scale(location = "bl") +
  annotation_north_arrow(location = "tr")
## <SpatRaster> resampled to 5e+05 cells.
## Scale on map varies by more than 10%, scale bar may be inaccurate

25 Comparación de enfoques

El modelo multicriterio de aptitud climática permite identificar regiones óptimas mediante criterios agroclimáticos ponderados.

En contraste, el modelo de similitud climática permite identificar gradientes continuos de analogía ambiental respecto al Valle del Cauca.

El enfoque multicriterio es más útil para delimitación agrícola, mientras que la similitud climática resulta más adecuada para estudios comparativos y transferencia tecnológica entre regiones.

26 Discusión

Los resultados evidencian que las regiones tropicales húmedas presentan las condiciones climáticas más favorables para el cultivo de caña de azúcar.

Brasil, India y Colombia presentan extensas superficies con alta aptitud climática debido a:

estabilidad térmica, elevada precipitación, baja estacionalidad climática.

El Valle del Cauca presenta condiciones ambientales altamente favorables y comparables con otras regiones productoras del mundo.

Sin embargo, este estudio presenta algunas limitaciones:

no se incorporaron variables edáficas, no se incluyeron pendientes, no se consideró disponibilidad hídrica, no se incluyó manejo agrícola.

Por tanto, los resultados representan aptitud climática potencial y no productividad real.

27 Conclusiones

  1. La aptitud climática global para la caña de azúcar se concentra principalmente en regiones tropicales húmedas.
  2. Brasil, India y Colombia presentan las mayores extensiones con alta aptitud agroclimática.
  3. El Valle del Cauca presenta condiciones climáticas altamente favorables para el cultivo.
  4. Los modelos de similitud ambiental permiten identificar regiones análogas más allá de límites administrativos.
  5. La integración de SIG, datos raster y análisis espacial constituye una herramienta robusta para estudios agroclimáticos globales.

28 Referencias

Fick, S. E., & Hijmans, R. J. (2017). WorldClim 2: New 1-km spatial resolution climate surfaces for global land areas. International Journal of Climatology, 37(12), 4302–4315. https://doi.org/10.1002/joc.5086

Hijmans, R. J. (2024). terra: Spatial Data Analysis. R package version 1.8-x. https://CRAN.R-project.org/package=terra

Moraga, P. (2023). Spatial Statistics for Data Science: Theory and Practice with R. Chapman and Hall/CRC.

Pebesma, E. (2024). sf: Simple Features for R. R package version 1.0-x. https://CRAN.R-project.org/package=sf

WorldClim Version 2.1. (2024). Global climate data. https://www.worldclim.org/

Food and Agriculture Organization of the United Nations (FAO). (2020). Agroclimatic requirements for sugarcane production.