Se hace la carga de datos y la definición de los colores a usar a posteriori, así como un par de calculos para el shape del Valle del Cauca.
# Listar todos los archivos .tif en las carpetas
temp_files <- list.files(temp_dir, pattern = "\\.tif$", full.names = TRUE)
precip_files <- list.files(precip_dir, pattern = "\\.tif$", full.names = TRUE)
# Leer las imágenes .tif
temps <- lapply(temp_files, rast)
precips <- lapply(precip_files, rast)
# Promediar las imágenes de temperatura
temp <- rast(temps)
mean_temp <- mean(temp, na.rm = TRUE)
##
|---------|---------|---------|---------|
=========================================
precip <- rast(precips)
sum_precip <- sum(precip, na.rm = TRUE)
##
|---------|---------|---------|---------|
=========================================
color_temp <- colorRampPalette(c("lightblue", "green", "yellow", "orange"))(100)
blue_palette <- colorRampPalette(c("lightblue", "blue", "darkblue"))(100)
Se calcula la aptitud en un rango de 0% a 100%, se observa como en el tropico, para todos los meses del año, se cumplen las mejores condiciones para el cultivo de caña de azúcar según la temperatura.
names(temp)=month.name
plot(temp)
temp_cond=temp>22.5&temp<28
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(temp_cond)=month.name
plot(temp_cond)
aptitudtemp=sum(temp_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudtemp, col=color_temp)
# Aptitud precipitaciones
Así mismo las mejores zonas de precipitación se encuentran en el tropico, a excepción de algunas zonas en Noruega, Estados Unidos y Groenlandia.
names(precip)=month.name
plot(precip)
precip_cond=precip> 125 &precip<290
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(precip_cond)=month.name
plot(precip_cond)
aptitudprecip=sum(precip_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudprecip, col=blue_palette)
# Aptitud combinada
Si se combinan estos dos mapas se observa como es la zona del tropico la predestinada para la siembra de la caña de azúcar. Sin embargo, si tomamos un 60% de aptitud, vemos como esas zonas se ven drasticamente reducidas.
aptitud_global <- (aptitudtemp+aptitudprecip)/2
aptitud60 <- (aptitudtemp+aptitudprecip)/2
plot(aptitud_global, col=color_temp)
aptitud60[][which(aptitud60[]<60)]=NA
plot(aptitud60, col=color_temp)
# Aptitud Brasil
Para el caso de Brasil, toda la zona amazónica es apta para dicho cultivo, así como gran parte de la costa norte del país.
Brasil = ne_countries(type = "countries", country = "Brazil",
scale = "medium", returnclass = "sf")
aptitud_bra=mask(aptitud_global,Brasil)
aptitud_bra=crop(aptitud_bra,Brasil)
plot(aptitud_bra)
leaflet() %>% addTiles() %>% addRasterImage(aptitud_bra,opacity = 0.5)
Por su parte para Colombia se muestra como apta la zona amazonica, al zona del valle del cauca y partes de la costa y los valles de la coordillera central.
Colombia = ne_countries(type = "countries", country = "Colombia",
scale = "medium", returnclass = "sf")
aptitud_col=mask(aptitud_global,Colombia)
aptitud_col=crop(aptitud_col,Colombia)
plot(aptitud_col)
leaflet() %>% addTiles() %>% addRasterImage(aptitud_col,opacity = 0.5)
#Aptitud Bolivia
En el caso de Bolivia se muestra como apto los Estados que colindan con la zona amazónica.
Bolivia = ne_countries(type = "countries", country = "Bolivia",
scale = "medium", returnclass = "sf")
aptitud_bol=mask(aptitud_global,Bolivia)
aptitud_bol=crop(aptitud_bol,Bolivia)
plot(aptitud_bol)
leaflet() %>% addTiles() %>% addRasterImage(aptitud_bol,opacity = 0.5)
Para la zona del valle, aunque hay aptitudes medias en varias zonas, los valles entre coordilleras se muestran como los óptimos para dicho tipo de cultivo, esto será importante para luego seleccionar los puntos de comparación.
temp_optimal <- c(22.5, 28) # Temperatura óptima entre 22.5 y 28 grados Celsius
precip_optimal <- c(1500, 2500) # Precipitación óptima entre 1500 y 2500 mm anuales
aptitud_temp <- mean_temp >= temp_optimal[1] & mean_temp <= temp_optimal[2]
aptitud_precip <- sum_precip >= precip_optimal[1] & sum_precip <= precip_optimal[2]
aptitudglobal <- aptitud_temp & aptitud_precip
shapefile_path <- "C:/Users/Cristian Ortega/Documents/1. Super Solidaria/Mapas/Departamentos"
colombia_shapefile <- st_read(shapefile_path)
## Reading layer `Servicios_P%C3%BAblicos_-_Departamentos' from data source
## `C:\Users\Cristian Ortega\Documents\1. Super Solidaria\Mapas\Departamentos'
## using driver `ESRI Shapefile'
## Simple feature collection with 33 features and 16 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -81.73575 ymin: -4.227907 xmax: -66.84735 ymax: 13.39453
## Geodetic CRS: WGS 84
valle_del_cauca <- colombia_shapefile[colombia_shapefile$DEPTO == "VALLE DEL CAUCA", ]
valle_del_cauca_vect <- vect(valle_del_cauca)
mean_temp_valle <- crop(mean_temp, valle_del_cauca_vect)
sum_precip_valle <- crop(sum_precip, valle_del_cauca_vect)
aptitud_temp <- mean_temp_valle >= temp_optimal[1] & mean_temp_valle <= temp_optimal[2]
aptitud_precip <- sum_precip_valle >= precip_optimal[1] & sum_precip_valle <= precip_optimal[2]
aptitudglobal <- aptitud_temp & aptitud_precip
aptitud_df <- as.data.frame(aptitudglobal, xy = TRUE)
colnames(aptitud_df) <- c("lon", "lat", "aptitud")
ggplot() +
geom_raster(data = aptitud_df, aes(x = lon, y = lat, fill = as.factor(aptitud))) +
geom_sf(data = valle_del_cauca, fill = NA, color = "black", size = 0.5) + # Añadir límites del Valle del Cauca
scale_fill_manual(values = c("white", "green"), name = "Aptitud", labels = c("No apto", "Apto")) +
coord_sf() +
labs(title = "Aptitud del cultivo de caña de azúcar en Valle del Cauca",
x = "Longitud",
y = "Latitud") +
theme_minimal() +
theme(legend.position = "right",
legend.title = element_text(size = 12),
legend.text = element_text(size = 10),
plot.title = element_text(hjust = 0.5, size = 16),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10))
Cali = ne_countries(type = "countries", country = "Colombia",
scale = "medium", returnclass = "sf")
aptitudcol=mask(aptitudglobal,Cali)
aptitudcol=crop(aptitudglobal,Cali)
plot(aptitudcol)
leaflet() %>% addTiles() %>% addRasterImage(aptitudcol,opacity = 0.5)
Los puntos se seleccionan a lo largo de todo el valle, desde el extremo sur hasta el extremo norte del departamento.
m <- leaflet() %>%
addProviderTiles(providers$OpenStreetMap)
m <- addPolygons(m, data = valle_del_cauca)
P1 = c(3.252753, -76.534093)
P2 = c( 4.350588, -76.0934065)
P3 = c(4.738649, -75.919444)
m <- addMarkers(m, lng = c(P1[2], P2[2], P3[2]), lat = c(P1[1], P2[1], P3[1]),
label = c("Jamundi", "Zarzal", "Cartago"))
m
Las temperaturas de los tres municipios a lo largo del año son similares. difiriendo apenas por un par de grados.
coords <- rbind(c(-76.534093, 3.252753),
c(-76.0934065, 4.350588),
c(-75.919444, 4.738649))
temp_values <- raster::extract(temp, coords)*1
temp_values_df <- as.data.frame(temp_values)
names(temp_values_df) <- 1:12
temp_values_df$Punto <- c("Jamundi", "Zarzal", "Cartago")
temp_values_long <- tidyr::pivot_longer(temp_values_df, cols = 1:12, names_to = "Mes", values_to = "Temperatura")
ggplot(temp_values_long, aes(x = as.numeric(Mes), y = Temperatura, color = Punto)) +
geom_line() +
labs(title = "Series de tiempo de temperatura", x = "Mes", y = "Temperatura") +
scale_x_continuous(breaks = 1:12) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
# Gráfico Precipitaciones
Caso similar para las precipitaciones que cuentan con valores muy similares entre los puntos.
precip_values <- raster::extract(precip, coords)*1
precip_values_df <- as.data.frame(precip_values)
names(precip_values_df) <- 1:12
precip_values_df$Punto <- c("Jamundi", "Zarzal", "Cartago")
precip_values_long <- tidyr::pivot_longer(precip_values_df, cols = 1:12, names_to = "Mes", values_to = "Precipitaciones")
ggplot(precip_values_long, aes(x = as.numeric(Mes), y = Precipitaciones, color = Punto)) +
geom_line() +
labs(title = "Series de tiempo de Precipitaciones", x = "Mes", y = "Precipitaciones") +
scale_x_continuous(breaks = 1:12) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
min_temp_por_punto <- aggregate(Temperatura ~ Punto, data = temp_values_long, FUN = min)
max_temp_por_punto <- aggregate(Temperatura ~ Punto, data = temp_values_long, FUN = max)
tabla_resultados <- cbind(min_temp_por_punto, max_temp_por_punto[, "Temperatura"])
colnames(tabla_resultados) <- c("Punto", "Min_Temperatura", "Max_Temperatura")
print(tabla_resultados)
## Punto Min_Temperatura Max_Temperatura
## 1 Cartago 22.908 24.016
## 2 Jamundi 23.260 24.060
## 3 Zarzal 23.084 24.208
min_precip_por_punto <- aggregate(Precipitaciones ~ Punto, data = precip_values_long, FUN = min)
max_precip_por_punto <- aggregate(Precipitaciones ~ Punto, data = precip_values_long, FUN = max)
tabla_resultados <- cbind(min_precip_por_punto, max_precip_por_punto[, "Precipitaciones"])
colnames(tabla_resultados) <- c("Punto", "Min_Precipitaciones", "Max_Precipitaciones")
print(tabla_resultados)
## Punto Min_Precipitaciones Max_Precipitaciones
## 1 Cartago 98 240
## 2 Jamundi 60 224
## 3 Zarzal 76 202
temp_cond=temp>21.4&temp<22.1
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(temp_cond)=month.name
aptitudtemp=sum(temp_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudtemp, col=color_temp)
precip_cond=precip> 106 &precip<241
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(precip_cond)=month.name
aptitudprecip=sum(precip_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudprecip, col=blue_palette)
aptitud_jamundi <- (aptitudtemp+aptitudprecip)/2
plot(aptitud_jamundi, col=color_temp)
temp_cond=temp>22.69&temp<23.83
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(temp_cond)=month.name
aptitudtemp=sum(temp_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudtemp, col=color_temp)
precip_cond=precip> 71 &precip<242
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(precip_cond)=month.name
aptitudprecip=sum(precip_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
plot(aptitudprecip, col=blue_palette)
aptitud_zarzal <- (aptitudtemp+aptitudprecip)/2
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
plot(aptitud_zarzal, col=color_temp)
temp_cond=temp>22.69&temp<23.83
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(temp_cond)=month.name
aptitudtemp=sum(temp_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudtemp, col=color_temp)
precip_cond=precip> 74 &precip<214
##
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
|---------|---------|---------|---------|
=========================================
names(precip_cond)=month.name
aptitudprecip=sum(precip_cond)/12*100
##
|---------|---------|---------|---------|
=========================================
plot(aptitudprecip, col=blue_palette)
aptitud_cartago <- (aptitudtemp+aptitudprecip)/2
plot(aptitud_cartago, col=color_temp)
1.La aptitud de la caña se da sobre todo en zonas tropicales, de las cuales hace parte Colombia, paises como Bolivia o Brasil cuentan con amplias aptitudes para dicho cultivo, sim¿n embargo casi toda su aptitud se da en la zona amazónica.
Aunque en el Valle del Cauca se dan condiciones favorables para el cultivo de la Caña, existen otras zonas del país con aptitudes mazones en zonas mucho más amplias.
Las zonas similares a los puntos seleccionados se reducen drasticamente si se toma el porcentaje de aptitud presentada en los mapas. Es por ello que estos puntos cuentan con condiciones únicas.