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)
Para el cultivo de caña de azúcar se establecen los siguientes rangos óptimos:
Temperatura media anual: entre 22.5 °C y 28 °C
Precipitación anual: entre 1500 mm y 3500 mm
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")
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.
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))
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.
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.
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.
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")
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.
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")
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.