1. Carga de los datos

Se inicia cargando el shapefile con los países del mundo y los datos raster mensuales correspondientes a las variables climáticas globales: temperatura y precipitación.

mundo <- shapefile("~/mundo/Mapa_paises_mundo.shp")
archivos_temp <- list.files("~/data_global/temperatura/climate/wc2.1_10m/", full.names = TRUE)
temp <- stack(archivos_temp)
archivos_prec <- list.files("~/data_global/precipitacion/climate/wc2.1_10m", full.names = TRUE)
prec <- stack(archivos_prec)

2. Mapas de aptitud según rangos óptimos

Para el cultivo de caña de azúcar se establecen los siguientes rangos óptimos:

Se calcula la temperatura media anual como el promedio de los 12 meses, y se filtran las zonas que cumplen con el rango óptimo.

Se generan mapas mostrando únicamente aquellas zonas cuya temperatura media anual se encuentra dentro del rango considerado como adecuado para el cultivo.

temp_anual <- sum(temp) / nlayers(temp)
temp_aptitud <- temp_anual
temp_aptitud[(temp_aptitud < 22.5) | (temp_aptitud > 28)] <- NA
color <- rasterTheme(region = brewer.pal(9, "Blues"))
levelplot(temp_aptitud, par.settings = color, main = "Temperatura media anual - Rango óptimo")

Se calcula la precipitación total anual y se realiza un filtrado similar para identificar las áreas dentro del rango óptimo para este cultivo.

prec_anual <- sum(prec)
prec_aptitud <- prec_anual
prec_aptitud[(prec_aptitud < 1500) | (prec_aptitud > 3500)] <- NA
levelplot(prec_aptitud, par.settings = color, main = "Precipitación total anual - Rango óptimo")

3. Intersección de zonas óptimas

Las zonas que cumplen simultáneamente con los rangos óptimos de temperatura y precipitación son identificadas mediante la intersección de los raster filtrados. Estas áreas se visualizan sobre la capa de países del mundo.

inter_aptitud <- prec_aptitud & temp_aptitud
opar <- par()
par(mar = c(0, 0, 1, 0))
plot(mundo, main = "Áreas óptimas para cultivo de caña")
plot(inter_aptitud, add = TRUE, col = "green", breaks = c(1, 1.1), legend = FALSE)

par(opar)

En el resultado se ve que las zonas está presentes en Brasil y algunos países de África y Asia.

4. Análisis puntual: Valle del Cauca

Se seleccionan dos puntos de referencia ubicados en cercanía a los ingenios Castilla y Manuelita. A partir de estos puntos, se extraen las series mensuales de temperatura y precipitación directamente desde los datos raster.

puntos <- data.frame(
  longitud = c(-76.27074498261221, -76.30749588236598),
  latitud = c(3.3719021505930895, 3.5830462652466983)
)
temp_valle <- as.data.frame(extract(temp, puntos))
prec_valle <- as.data.frame(extract(prec, puntos))

4.1 Serie de tiempo: Ingenio Castilla

Se seleccionan dos puntos de referencia ubicados en cercanía a los ingenios Castilla y Manuelita. A partir de estos puntos, se extraen las series mensuales de temperatura y precipitación directamente desde los datos raster.

4.2 Serie de tiempo: Ingenio Manuelita

Se repite el mismo procedimiento para el segundo punto. Las gráficas permiten observar el comportamiento de las variables climáticas en esta zona y compararlas con los criterios de aptitud para el cultivo.

5. Mapas de similitud (distancia euclidiana)

Se evalúa la similitud entre las condiciones climáticas de las ubicaciones seleccionadas y otras regiones del mundo, utilizando como medida la distancia euclidiana entre las series temporales de temperatura y precipitación.

Valores cercanos a cero indican mayor similitud.

5.1 Castilla

Se evalúa la similitud entre las condiciones climáticas de las ubicaciones seleccionadas y otras regiones del mundo, utilizando como medida la distancia euclidiana entre las series temporales de temperatura y precipitación.

Valores cercanos a cero indican mayor similitud.

simil_temp_castilla <- sqrt(sum((temp - as.numeric(serie_temp_castilla))^2))
levelplot(simil_temp_castilla, par.settings = BTCTheme, at = seq(0, 176, 10), main = "Similitud térmica - Castilla")

simil_prec_castilla <- sqrt(sum((prec - as.numeric(serie_prec_castilla))^2))
levelplot(simil_prec_castilla, par.settings = BTCTheme, at = seq(0, 2383, 100), main = "Similitud en precipitación - Castilla")

5.1.1 Intersección

simil_temp_castilla_f <- simil_temp_castilla
simil_temp_castilla_f[simil_temp_castilla_f > 20] <- NA
simil_prec_castilla_f <- simil_prec_castilla
simil_prec_castilla_f[simil_prec_castilla_f > 300] <- NA
inter_simil_castilla <- simil_temp_castilla_f & simil_prec_castilla_f
opar <- par()
par(mar = c(0, 0, 1, 0))
plot(mundo, main = "Áreas similares a Castilla")
plot(inter_simil_castilla, add = TRUE, col = "green", breaks = c(1, 1.1), legend = FALSE)

par(opar)

Nuevamente se obtienen zonas en Brasil, África y Asia.

5.2 Manuelita

Se repite el mismo análisis para el punto correspondiente al ingenio Manuelita. Finalmente, se obtienen zonas con alta similitud climática respecto a las condiciones observadas en esta ubicación.

simil_temp_manuelita <- sqrt(sum((temp - as.numeric(serie_temp_manuelita))^2))
levelplot(simil_temp_manuelita, par.settings = BTCTheme, at = seq(0, 176, 10), main = "Similitud térmica - Manuelita")

simil_prec_manuelita <- sqrt(sum((prec - as.numeric(serie_prec_manuelita))^2))
levelplot(simil_prec_manuelita, par.settings = BTCTheme, at = seq(0, 2388, 100), main = "Similitud en precipitación - Manuelita")

5.2.1 Intersección

simil_temp_manuelita_f <- simil_temp_manuelita
simil_temp_manuelita_f[simil_temp_manuelita_f > 20] <- NA
simil_prec_manuelita_f <- simil_prec_manuelita
simil_prec_manuelita_f[simil_prec_manuelita_f > 300] <- NA
inter_simil_manuelita <- simil_temp_manuelita_f & simil_prec_manuelita_f
opar <- par()
par(mar = c(0, 0, 1, 0))
plot(mundo, main = "Áreas similares a Manuelita")
plot(inter_simil_manuelita, add = TRUE, col = "green", breaks = c(1, 1.1), legend = FALSE)

par(opar)

Siendo que ambas ubicaciones no tienen mucha diferencia climática, finalmente se obtiene un resultado similar.