require(raster)
require(terra)
library(sf)
library(dplyr)
library(ggplot2)
library(tidyr)
require(RColorBrewer)
require(rasterVis)
require(lattice)
library(leaflet)

1 Punto 1

Utilizando los datos de clima de línea base a nivel global, genere un código en R que permita construir mapas de aptitud en términos climáticos para la caña de azúcar (con base en los rangos óptimos). Grafique los mapas con una escala de colores adecuada.

1.1 Temperatura global

ruta_temp=list.files("~/Maestria/Segundo Semestre/Electiva/actividad 2/temp",full.names = TRUE, pattern = ".tif")
temp_year=stack(ruta_temp)
names(temp_year)=month.name
plot(temp_year)

1.2 Precipitación global

ruta_prec=list.files("~/Maestria/Segundo Semestre/Electiva/actividad 2/prec",full.names = TRUE, pattern = ".tif")
prec_year=stack(ruta_prec)
names(prec_year)=month.name
plot(prec_year)

precip_year=prec_year
temp_anual <- mean(temp_year)

prec_anual <- mean(prec_year)

clima_anual <- stack(temp_anual, prec_anual)
names(clima_anual) <- c("temperatura", "precipitacion")

1.3 Rangos optimos de temperatura

# rangos de aptitud
temp_min <- 22.5
temp_max <- 28

aptitud_temp_anual = temp_anual>=temp_min & temp_anual<=temp_max

plot(aptitud_temp_anual, col= c("#D4DCD7", "#33ff36"), main = "Rangos Optimos de Temperatura", legend=FALSE)#CAMBIAR COLORES

1.4 Rangos optimos de precipitación

# Definir los rangos de aptitud
prec_min <- 125
prec_max <- 290

aptitud_prec_anual = prec_anual>=prec_min & prec_anual<=prec_max

plot(aptitud_prec_anual, col= c("#D4DCD7", "#338bff"), main = "Rangos Optimos de Precipitacion", legend=FALSE)

1.5 Rangos optimos de temperatura y precipitación

total_aptitud = sum(aptitud_temp_anual, aptitud_prec_anual)
plot(total_aptitud, col= c("#D4DCD7", "#D4DCD7","#70ff33"), main = " Areas con Rangos Optimos de Temperatura y Precipitacion", legend=FALSE)

Se puede observar que existen zonas propicias para el cultivo de caña de azúcar en América Central, América del Sur, África, algunas partes de Asia y Oceanía.

2 Punto 2

Identifique 2 o 3 países con áreas de alto potencial para la caña de azúcar y realice un corte para estas zonas con el shape global. Grafique los mapas con una escala de colores adecuada.

paises <- st_read("~/Maestria/Segundo Semestre/Electiva/actividad 2/shape2/ne_10m_admin_0_countries.shp")
## Reading layer `ne_10m_admin_0_countries' from data source 
##   `C:\Users\Gio_Rats\Documents\Maestria\Segundo Semestre\Electiva\actividad 2\shape2\ne_10m_admin_0_countries.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 258 features and 168 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -180 ymin: -90 xmax: 180 ymax: 83.6341
## Geodetic CRS:  WGS 84
aptitud <- rast(total_aptitud)

aptitud_paises <- mask(aptitud, vect(paises))

plot(aptitud_paises, col= c("#D4DCD7", "#D4DCD7","#70ff33"), main = "Mapa Aptitud Paises", legend=FALSE)

plot(st_geometry(paises), add=TRUE, border="black", lwd=0.5)

se puede observar que en África hay paises con potencial para el cultivo de caña de Azucar, se hace un zoom para poder identificarlos mejor

africa <- paises[paises$CONTINENT == "Africa", ]

africa <- st_make_valid(africa)

aptitud_africa <- mask(aptitud, vect(africa))

xlim_range <- c(4, 45)  # Longitudes para el zoom
ylim_range <- c(-14, 7)   # Latitudes para el zoom

# Ampliar el área y la resolución del gráfico
par(mar = c(4, 4, 1, 1))  # Ajuste de márgenes para mejorar la visualización


plot(aptitud_africa, col = c("#D4DCD7", "#D4DCD7", "#33FFA3"), main = "Mapa de Aptitud - Gabón, Congo y RDC", 
     legend = FALSE, xlim = xlim_range, ylim = ylim_range)


plot(st_geometry(africa), add = TRUE, border = "black", lwd = 0.5)


africa_zoom <- africa[africa$NAME %in% c("Gabon", "Congo", "Dem. Rep. Congo"), ]

text(st_coordinates(st_centroid(africa_zoom))[,1], 
     st_coordinates(st_centroid(africa_zoom))[,2],  
     labels = africa_zoom$NAME, 
     cex = 0.7,  
     col = "black",  
     font = 2,  
     pos = 3)  

La elección de Gabón, Congo y República Democrática del Congo como países adecuados para el cultivo de caña de azúcar ya que cumplen con los requisitos de temperatura y precipitación. Sin embargo, aunque estos países cuentan con las condiciones climáticas necesarias para la cosecha de caña de azúcar, hay otros factores importantes a considerar, como la calidad del suelo, la infraestructura agrícola, la disponibilidad de mano de obra, las políticas gubernamentales y el acceso a mercados. Estos aspectos también son cruciales para determinar el éxito y la viabilidad de la producción a gran escala.

3 Punto 3

Identificar algunos puntos (2 o 3) al azar en la región del valle del cauca (use google maps) y extraer la información de clima. Grafique las series de tiempo de temperatura y precipitación.

Los puntos seleccionados son Dagua, Sevilla y Pradera.

# Definir las coordenadas de las ubicaciones
locationsvalle <- data.frame(
  name = c("Dagua", "Sevilla", "Pradera"),
  lat = c(3.658637, 4.27514, 3.420821),
  lon = c(-76.690503, -75.928987, -76.239292)
)


map <- leaflet(data = locationsvalle) %>%
  addProviderTiles(providers$OpenStreetMap) %>%  
  addMarkers(~lon, ~lat, label = ~name, popup = ~name) %>%
  setView(lng = -76.3, lat = 3.8, zoom = 9)  


map
dagua=cbind(-76.690503,3.658637)
dagua_loc=raster::extract(temp_year,dagua)


sevilla=cbind(-75.928987,4.27514)
sevilla_loc=raster::extract(temp_year,sevilla)


pradera=cbind(-76.239292,3.420821)
pradera_loc=raster::extract(temp_year,pradera)


dagua_loc <- as.numeric(dagua_loc[1, ])  
sevilla_loc <- as.numeric(sevilla_loc[1, ])
pradera_loc <- as.numeric(pradera_loc[1, ])


data <- data.frame(
  Month = month.name,  
  Dagua = dagua_loc,
  Sevilla = sevilla_loc,
  Pradera = pradera_loc
)


data$Month <- factor(data$Month, levels = month.name)

data_long <- data %>%
  pivot_longer(cols = c(Dagua, Sevilla, Pradera), 
               names_to = "Location", 
               values_to = "Temperature")

ggplot(data_long, aes(x = Month, y = Temperature, color = Location, group = Location)) +
  geom_line(size = 1.2) + 
  geom_point(size = 3) +
  labs(title = "Variación de Temperatura Mensual en Tres Ubicaciones", 
       x = "Mes", 
       y = "Temperatura (°C)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  

Podemos apreciar la variación de temperatura mensual en Dagua, Pradera y Sevilla, donde las temperaturas promedio mensuales son muy similares, con una tendencia uniforme a lo largo del año. Las diferencias entre las tres ubicaciones son mínimas, indicando condiciones térmicas prácticamente equivalentes, lo cual es consistente con su cercanía geográfica.

dagua_loc2 = raster::extract(prec_year, dagua)
sevilla_loc2= raster::extract(prec_year,sevilla)
pradera_loc2= raster::extract(prec_year,pradera)

dagua_loc2 <- as.numeric(dagua_loc2[1, ]) 
sevilla_loc2<- as.numeric(sevilla_loc2[1, ])
pradera_loc2 <- as.numeric(pradera_loc2[1, ])


data2 <- data.frame(
  Month = month.name,  
  Dagua = dagua_loc2,
  Sevilla = sevilla_loc2,
  Pradera = pradera_loc2
)


# Convertir la columna Month en un factor con el orden de los meses
data2$Month <- factor(data2$Month, levels = month.name)

data_long2 <- data2 %>%
  pivot_longer(cols = c(Dagua, Sevilla, Pradera), 
               names_to = "Location", 
               values_to = "Precipitation")


ggplot(data_long2, aes(x = Month, y = Precipitation, color = Location, group = Location)) +
  geom_line(size = 1.2) +  
  geom_point(size = 3) + 
  labs(title = "Variación de Precipitación Mensual en Tres Ubicaciones", 
       x = "Mes", 
       y = "Precipitación (mm)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  

Se puede apreciar que la variación de precipitación mensual en Dagua, Pradera y Sevilla comparten un patrón similar a lo largo del año. Se observan meses con mayores acumulaciones de lluvia, probablemente correspondientes a las temporadas de lluvias, y meses más secos. Aunque hay algunas diferencias menores en la magnitud de las precipitaciones entre las tres ubicaciones, estas variaciones son poco significativas, indicando condiciones climáticas similares debido a su proximidad geográfica.

4 Punto 4

Por medio de alguna métrica de similaridad (ejemplo: distancia euclidiana) genere un código en R que permita identificar mapas de similaridad a nivel global para los sitios identificados en 3. Grafique los mapas con una escala de colores adecuada.

# Crear una lista de los puntos identificados y sus datos climáticos
locations <- list(
  Dagua = list(coords = dagua, temp = dagua_loc, prec = dagua_loc2),
  Sevilla = list(coords = sevilla, temp = sevilla_loc, prec = sevilla_loc2),
  Pradera = list(coords = pradera, temp = pradera_loc, prec = pradera_loc2)
)

# Inicializar listas para almacenar los mapas de similaridad
similarity_maps_temp <- list()
similarity_maps_prec <- list()

for (name in names(locations)) {
  loc_data <- locations[[name]]
  
  # Calcular la similaridad en temperatura
  similarity_maps_temp[[name]] <- calc(temp_year, function(x) {
    sqrt(sum((x - loc_data$temp)^2, na.rm = TRUE))
  })
  
  # Calcular la similaridad en precipitación
  similarity_maps_prec[[name]] <- calc(prec_year, function(x) {
    sqrt(sum((x - loc_data$prec)^2, na.rm = TRUE))
  })
}
# Crear paletas de colores específicas para cada tipo de mapa
mi_paleta_temp <- colorRampPalette(brewer.pal(9, "YlOrRd"))
mi_paleta_prec <- colorRampPalette(brewer.pal(9, "Blues"))


for (name in names(similarity_maps_temp)) {

  temp_range <- range(values(similarity_maps_temp[[name]]), na.rm = TRUE)
  

  print(
    levelplot(similarity_maps_temp[[name]], 
              main = paste("Mapa de Similaridad de Temperatura -", name),
              col.regions = mi_paleta_temp,
              at = seq(0, 60, 1), 
              xlab = "Longitud", ylab = "Latitud", colorkey = TRUE)
  )
}

for (name in names(similarity_maps_prec)) {
  # Rango dinámico para la escala de color
  prec_range <- range(values(similarity_maps_prec[[name]]), na.rm = TRUE)
  

  print(
    levelplot(similarity_maps_prec[[name]], 
              main = paste("Mapa de Similaridad de Precipitación -", name),
              col.regions = mi_paleta_prec,
              at = seq(0, 800, 100),  
              xlab = "Longitud", ylab = "Latitud", colorkey = TRUE)
  )
}

5 Punto 5

Compare los mapas generados por ambas aproximaciones y concluya.

  • En el análisis de los mapas de similitud de temperatura y precipitación para las localidades de Dagua, Pradera y Sevilla, se observó que las características climáticas entre estos puntos son muy similares. Esto se debe, en gran medida, a su proximidad geográfica y a que comparten condiciones ambientales y climáticas dentro de la misma región. Por lo tanto, las diferencias detectadas en los mapas son sutiles y no destacan patrones claramente diferenciados.

  • Para obtener resultados con diferencias más marcadas, sería necesario ampliar el análisis seleccionando localidades más distantes entre sí, idealmente ubicadas en regiones con condiciones climáticas diferentes. Con esto se lograria identificar patrones de similitud y variabilidad climática de una forma más representativa y útil para investigaciones que busquen relacionar la distribución espacial con factores geográficos o meteorológicos.