Datos para cultivos de Caña de Azúcar

-Temperatura media 22.5 a 28 grados centígrados

-Precipitación anual 1500 y 3500 milímetros

-Precipitación mensual 125 y 290 mm

La region del valle del cauca, posee rendimientos altos

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.

## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
## Loading required package: viridisLite
# Cargar la librería necesaria
library(geodata) 
## Loading required package: terra
## terra 1.7.71
## 
## Attaching package: 'terra'
## The following object is masked from 'package:patchwork':
## 
##     area
# Obtener datos de temperatura global utilizando la función worldclim_global()
# La variable "var" especifica el tipo de variable climática (en este caso, temperatura promedio)
# El argumento "res" especifica la resolución de los datos (en este caso, 5 minutos)
# El argumento "path" especifica la ubicación donde se guardarán los datos descargados
# El argumento "version" especifica la versión de los datos (en este caso, 2.1)
temperatura_global <- worldclim_global(var = "tavg", res = 5, path = "Datos", version = 2.1)

# Mostrar los datos de temperatura global
temperatura_global
## class       : SpatRaster 
## dimensions  : 2160, 4320, 12  (nrow, ncol, nlyr)
## resolution  : 0.08333333, 0.08333333  (x, y)
## extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 
## sources     : wc2.1_5m_tavg_01.tif  
##               wc2.1_5m_tavg_02.tif  
##               wc2.1_5m_tavg_03.tif  
##               ... and 9 more source(s)
## names       : wc2.1~vg_01, wc2.1~vg_02, wc2.1~vg_03, wc2.1~vg_04, wc2.1~vg_05, wc2.1~vg_06, ... 
## min values  :     -46.042,     -44.800,     -57.986,     -64.200,     -64.829,     -64.395, ... 
## max values  :      34.065,      32.908,      33.081,      34.277,      36.299,      38.458, ...
# Cargar la librería necesaria
library(geodata) 

# Obtener datos de precipitación global utilizando la función worldclim_global()
# La variable "var" especifica el tipo de variable climática (en este caso, precipitación)
# El argumento "res" especifica la resolución de los datos (en este caso, 5 minutos)
# El argumento "path" especifica la ubicación donde se guardarán los datos descargados
# El argumento "version" especifica la versión de los datos (en este caso, 2.1)
precipitacion_global <- worldclim_global(var = "prec", res = 5, path = "Datos", version = 2.1)

# Mostrar los datos de precipitación global
precipitacion_global
## class       : SpatRaster 
## dimensions  : 2160, 4320, 12  (nrow, ncol, nlyr)
## resolution  : 0.08333333, 0.08333333  (x, y)
## extent      : -180, 180, -90, 90  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 
## sources     : wc2.1_5m_prec_01.tif  
##               wc2.1_5m_prec_02.tif  
##               wc2.1_5m_prec_03.tif  
##               ... and 9 more source(s)
## names       : wc2.1~ec_01, wc2.1~ec_02, wc2.1~ec_03, wc2.1~ec_04, wc2.1~ec_05, wc2.1~ec_06, ... 
## min values  :           0,           0,           0,           0,           0,           0, ... 
## max values  :         936,        1005,         774,        1004,        2068,        2210, ...
# Cargar la librería necesaria
library(terra)

# Crear una paleta de colores de azul a rojo
my_palette_t <- colorRampPalette(c("#00F5FF", "#FF4500"))

# Graficar la temperatura global utilizando la paleta personalizada
terra::plot(mean(temperatura_global), col = my_palette_t(10), plg = list(title = "Temp.(C°)"))

# Agregar el mapa mundial al gráfico de temperatura
plot(mundo, add = TRUE)
title(main = "Mapa de Temperatura media del Mundo", cex.main = 0.8, adj = 0.45, line = 2)

# Cargar la librería necesaria
library(terra)

# Crear una paleta de colores de azul claro a azul oscuro
my_palette_p <- colorRampPalette(c("azure", "blue"))

# Graficar la precipitación global utilizando la paleta personalizada
terra::plot(mean(precipitacion_global), col = my_palette_p(10), plg = list(title = "Prec.(mm)"))

# Agregar el mapa mundial al gráfico de precipitación
plot(mundo, add = TRUE)

# Añadir un título al mapa de precipitación
title(main = "Mapa de Precipitación Media del Mundo", cex.main = 0.8, adj = 0.45, line = 2)

# Cargar las librerías necesarias
library(rnaturalearth)  # Para acceder a datos geográficos del mundo
library(sf)              # Para manejar datos espaciales
library(terra)           # Para trabajar con datos espaciales y raster

# Convertir el objeto mundo a un objeto sf
datos_mundo <- st_as_sf(mundo)

# Extraer y agregar la temperatura promedio al objeto de datos del mundo
datos_mundo$avg_temperatura <- terra::extract(mean(temperatura_global), datos_mundo, mean, na.rm = TRUE)

# Extraer y agregar la precipitación promedio al objeto de datos del mundo
datos_mundo$avg_precipitacion <- terra::extract(mean(precipitacion_global), datos_mundo, mean, na.rm = TRUE)

# Convertir datos_mundo a un data frame
datos_mundo <- as.data.frame(datos_mundo)

# Establecer la geometría del objeto de datos_mundo
datos_mundo <- st_set_geometry(datos_mundo, "geometry")
# Cargar las librerías necesarias
library(ggplot2)   # Para crear gráficos
library(tidyterra) # Para manejar datos espaciales y raster de manera compatible con tidyverse
## 
## Attaching package: 'tidyterra'
## The following object is masked from 'package:stats':
## 
##     filter
# Filtrar datos de temperatura óptima y no óptima
temp_optima <- subset(datos_mundo, avg_temperatura$mean >= 22.5 & avg_temperatura$mean <= 28)
temp_no_optima <- subset(datos_mundo, avg_temperatura$mean <= 22.5 | avg_temperatura$mean >= 28)

# Crear el gráfico utilizando ggplot
ggplot() + 
  # Capa para representar áreas con temperaturas no óptimas
  geom_spatvector(data = temp_no_optima, aes(fill = avg_temperatura$mean), color = "white") +
  # Capa para representar áreas con temperaturas óptimas
  geom_spatvector(data = temp_optima, aes(fill = avg_temperatura$mean), color = "black") +
  # Definir la escala de colores
  scale_fill_gradient(low = "#00F5FF", high = "#FF4500", name = "Temperatura (C°)") +
  # Añadir título al gráfico
  labs(title = "Distribución de temperaturas óptimas y no óptimas") +
  # Ajustar la posición del título
  theme(plot.title = element_text(hjust = 0.5),
        # Establecer el borde del panel
        panel.border = element_rect(color = "black", fill = NA, size = 1))
## Warning: The `size` argument of `element_rect()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Cargar las librerías necesarias
library(ggplot2)   # Para crear gráficos
library(tidyterra) # Para manejar datos espaciales y raster de manera compatible con tidyverse

# Filtrar los datos para precipitaciones óptimas y no óptimas
precp_optima <- subset(datos_mundo, avg_precipitacion$mean >= 125 & avg_precipitacion$mean <= 290)
precp_no_optima <- subset(datos_mundo, avg_precipitacion$mean <= 125 | avg_precipitacion$mean >= 290)

# Crear el gráfico utilizando ggplot
ggplot() + 
  # Capa para representar áreas con precipitaciones no óptimas
  geom_spatvector(data = precp_no_optima, aes(fill = avg_precipitacion$mean), color = "grey") +
  # Capa para representar áreas con precipitaciones óptimas
  geom_spatvector(data = precp_optima, aes(fill = avg_precipitacion$mean), color = "black") +
  # Definir la escala de colores
  scale_fill_gradient(low = "azure", high = "blue", name = "Precipitación (mm)") +
  # Añadir título al gráfico
  labs(title = "Distribución de precipitaciones óptimas y no óptimas") +
  # Ajustar la posición del título
  theme(plot.title = element_text(hjust = 0.5),
        # Establecer el borde del panel
        panel.border = element_rect(color = "black", fill = NA, size = 1))

# Cargar las librerías necesarias
library(ggplot2)   # Para crear gráficos
library(tidyterra) # Para manejar datos espaciales y raster de manera compatible con tidyverse

# Filtrar los datos para países óptimos y no óptimos para el cultivo de caña
paises_optimos <- subset(temp_optima, avg_precipitacion$mean >= 125 & avg_precipitacion$mean <= 290)
paises_no_optimos <- subset(datos_mundo, avg_precipitacion$mean <= 125 | avg_precipitacion$mean >= 290)

# Crear el gráfico utilizando ggplot
ggplot() + 
  # Capa para representar países no óptimos
  geom_spatvector(data = paises_no_optimos, color = "grey") +
  # Capa para representar países óptimos
  geom_spatvector(data = paises_optimos, fill = "springgreen3", color = "black") +
  # Añadir título al gráfico
  labs(title = "Países óptimos para el cultivo de caña") +
  # Ajustar la posición del título
  theme(plot.title = element_text(hjust = 0.5),
        # Establecer el borde del panel
        panel.border = element_rect(color = "black", fill = NA, size = 1))

# Acceder a la columna 'sovereignt' del conjunto de datos paises_optimos
paises_optimos$sovereignt
##  [1] "Fiji"                             "Papua New Guinea"                
##  [3] "Indonesia"                        "Democratic Republic of the Congo"
##  [5] "East Timor"                       "Brazil"                          
##  [7] "Colombia"                         "Panama"                          
##  [9] "Costa Rica"                       "Nicaragua"                       
## [11] "Honduras"                         "El Salvador"                     
## [13] "Guatemala"                        "Belize"                          
## [15] "Venezuela"                        "Guyana"                          
## [17] "Suriname"                         "United States of America"        
## [19] "Jamaica"                          "Cameroon"                        
## [21] "Guinea"                           "Guinea-Bissau"                   
## [23] "Liberia"                          "Sierra Leone"                    
## [25] "Republic of the Congo"            "Gabon"                           
## [27] "Equatorial Guinea"                "Vanuatu"                         
## [29] "Cambodia"                         "Laos"                            
## [31] "Myanmar"                          "Vietnam"                         
## [33] "Bangladesh"                       "Solomon Islands"                 
## [35] "Sri Lanka"                        "Philippines"                     
## [37] "Malaysia"                         "Trinidad and Tobago"

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.

  1. “Colombia”
  2. “Indonesia”
  3. “Bangladesh”
# Cargar las librerías necesarias
library(ggplot2)    # Para crear gráficos
library(gridExtra)  # Para organizar múltiples gráficos en una sola trama

# Obtener datos geoespaciales de Colombia
map_colombia <- rnaturalearth::ne_states("colombia", returnclass = "sf")
# Obtener la extensión espacial de Colombia
sextent_c <- terra::ext(map_colombia)
# Recortar los datos de temperatura global para Colombia
rt_c <- terra::crop(mean(temperatura_global), sextent_c)
# Aplicar una máscara a los datos de temperatura global para Colombia usando el mapa de Colombia
rt_c <- terra::mask(rt_c, vect(map_colombia))
# Recortar los datos de precipitación global para Colombia
rp_c <- terra::crop(mean(precipitacion_global), sextent_c)
# Aplicar una máscara a los datos de precipitación global para Colombia usando el mapa de Colombia
rp_c <- terra::mask(rp_c, vect(map_colombia))

# Obtener datos geoespaciales de Indonesia
map_indonesia <- rnaturalearth::ne_states("indonesia", returnclass = "sf")
# Obtener la extensión espacial de Indonesia
sextent_i <- terra::ext(map_indonesia)
# Recortar los datos de temperatura global para Indonesia
rt_i <- terra::crop(mean(temperatura_global), sextent_i)
# Aplicar una máscara a los datos de temperatura global para Indonesia usando el mapa de Indonesia
rt_i <- terra::mask(rt_i, vect(map_indonesia))
# Recortar los datos de precipitación global para Indonesia
rp_i <- terra::crop(mean(precipitacion_global), sextent_i)
# Aplicar una máscara a los datos de precipitación global para Indonesia usando el mapa de Indonesia
rp_i <- terra::mask(rp_i, vect(map_indonesia))

# Obtener datos geoespaciales de Bangladesh
map_bangladesh <- rnaturalearth::ne_states("bangladesh", returnclass = "sf")
# Obtener la extensión espacial de Bangladesh
sextent_b <- terra::ext(map_bangladesh)
# Recortar los datos de temperatura global para Bangladesh
rt_b <- terra::crop(mean(temperatura_global), sextent_b)
# Aplicar una máscara a los datos de temperatura global para Bangladesh usando el mapa de Bangladesh
rt_b <- terra::mask(rt_b, vect(map_bangladesh))
# Recortar los datos de precipitación global para Bangladesh
rp_b <- terra::crop(mean(precipitacion_global), sextent_b)
# Aplicar una máscara a los datos de precipitación global para Bangladesh usando el mapa de Bangladesh
rp_b <- terra::mask(rp_b, vect(map_bangladesh))
# Graficar los datos de temperatura para Colombia
terra::plot(rt_c, col = my_palette_t(10), plg = list(title = "Temp.(C°)"))

# Agregar el mapa de Colombia a la gráfica de temperatura
plot(map_colombia, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_colombia, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de temperatura en Colombia
title(main = "Temperatura en Colombia", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar los datos de precipitación para Colombia
terra::plot(rp_c, col = my_palette_p(10), plg = list(title = "Precp.(mm)"))

# Agregar el mapa de Colombia a la gráfica de precipitación
plot(map_colombia, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_colombia, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de precipitación en Colombia
title(main = "Precipitación en Colombia", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar los datos de temperatura para Indonesia
terra::plot(rt_i, col = my_palette_t(10), plg = list(title = "Temp.(C°)"))

# Agregar el mapa de Indonesia a la gráfica de temperatura
plot(map_indonesia, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_indonesia, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de temperatura en Indonesia
title(main = "Temperatura en Indonesia", cex.main = 0.8, adj = 0.45, line = 0)

# Graficar los datos de precipitación para Indonesia
terra::plot(rp_i, col = my_palette_p(10), plg = list(title = "Precp.(mm)"))

# Agregar el mapa de Indonesia a la gráfica de precipitación
plot(map_indonesia, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_indonesia, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de precipitación en Indonesia
title(main = "Precipitación en Indonesia", cex.main = 0.8, adj = 0.45, line = 0)

# Graficar los datos de temperatura para Bangladesh
terra::plot(rt_b, col = my_palette_t(10), plg = list(title = "Temp.(C°)"))

# Agregar el mapa de Bangladesh a la gráfica de temperatura
plot(map_bangladesh, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_bangladesh, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de temperatura en Bangladesh
title(main = "Temperatura en Bangladesh", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar los datos de precipitación para Bangladesh
terra::plot(rp_b, col = my_palette_p(10), plg = list(title = "Precp.(mm)"))

# Agregar el mapa de Bangladesh a la gráfica de precipitación
plot(map_bangladesh, col = "transparent", border = "black", add = TRUE)
## Warning in plot.sf(map_bangladesh, col = "transparent", border = "black", :
## ignoring all but the first attribute
# Añadir título a la gráfica de precipitación en Bangladesh
title(main = "Precipitación en Bangladesh", cex.main = 0.8, adj = 0.45, line = 3)

Puntos 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.

  1. “Cascadas La Sierpe”
  2. “Embalse Guacas”
  3. “Alto la Cutimbre”
# Cargar las librerías necesarias
library(tmaptools)       # Para funciones adicionales de manipulación de datos espaciales
library(leaflet)         # Para crear mapas interactivos
library(rnaturalearth)  # Para obtener datos geográficos
library(sf)              # Para manejar datos espaciales
library(ggplot2)         # Para crear gráficos

# Obtener los datos de los estados de Colombia
m1 <- rnaturalearth::ne_states("Colombia", returnclass = "sf")

# Filtrar los datos para obtener solo el registro correspondiente al Valle del Cauca
valle_del_cauca <- m1[m1$name == "Valle del Cauca", ]

# Geocodificar los puntos
Punto_1 <- geocode_OSM(q = "Cascadas La Sierpe")
Punto_2 <- geocode_OSM(q = "Embalse Guacas")
Punto_3 <- geocode_OSM(q = "Alto la Cutimbre")

# Crear el mapa de Leaflet
mapa <- leaflet() %>%
  addTiles() %>%                                      # Agregar el fondo de tiles base
  addPolygons(data = valle_del_cauca,                # Añadir los polígonos del Valle del Cauca
              fillColor = "#00FFFF",                  # Color de relleno
              fillOpacity = 0.1,                      # Opacidad del relleno
              color = "blue",                         # Color del borde
              weight = 2) %>%                         # Grosor del borde
  addCircleMarkers(lng = Punto_1$coords[1],           # Añadir marcador para el punto 1
                   lat = Punto_1$coords[2], 
                   popup = "Punto 1") %>%
  addCircleMarkers(lng = Punto_2$coords[1],           # Añadir marcador para el punto 2
                   lat = Punto_2$coords[2], 
                   popup = "Punto 2") %>%
  addCircleMarkers(lng = Punto_3$coords[1],           # Añadir marcador para el punto 3
                   lat = Punto_3$coords[2], 
                   popup = "Punto 3")

# Mostrar el mapa interactivo
mapa
# Cargar la librería chirps
library("chirps")

# Crear un data frame con las coordenadas de los puntos
lonlat <- data.frame(lon = c(Punto_1$coords[1], Punto_2$coords[1], Punto_3$coords[1]),
                     lat = c(Punto_1$coords[2], Punto_2$coords[2], Punto_3$coords[2]))

# Especificar las fechas de inicio y fin
dates <- c("2010-01-01", "2022-12-31")

# Obtener los datos de precipitación de CHIRPS para las coordenadas y fechas especificadas
dat <- get_chirps(lonlat, dates, server = "ClimateSERV", as.matrix = FALSE)
## writing: substituting ENGCRS["Undefined Cartesian SRS with unknown unit"] for missing CRS
## Fetching data from ClimateSERV
## Getting your request...
suppressMessages({
  suppressWarnings({
    

  library(ggplot2)
  library(dplyr)
  
  dat_subset_p1 <- subset(dat, id == 1)
  
  dat_subset_p1 <- mutate(dat_subset_p1, year = format(date, "%Y"))
  
  # Calcular el promedio de "chirps" por año
  dat_avg_p1 <- dat_subset_p1 %>%
    group_by(year) %>%
    summarise(avg_chirps = sum(chirps, na.rm = TRUE)) %>%
    arrange(year)  # Ordenar por año
  
  dat_subset_p2 <- subset(dat, id == 2)
  
  dat_subset_p2 <- mutate(dat_subset_p2, year = format(date, "%Y"))
  
  # Calcular el promedio de "chirps" por año
  dat_avg_p2 <- dat_subset_p2 %>%
    group_by(year) %>%
    summarise(avg_chirps = sum(chirps, na.rm = TRUE)) %>%
    arrange(year)  # Ordenar por año
  
  dat_subset_p3 <- subset(dat, id == 3)
  
  dat_subset_p3 <- mutate(dat_subset_p3, year = format(date, "%Y"))
  
  # Calcular el promedio de "chirps" por año
  dat_avg_p3 <- dat_subset_p3 %>%
    group_by(year) %>%
    summarise(avg_chirps = sum(chirps, na.rm = TRUE)) %>%
    arrange(year)  # Ordenar por año
  
  # data frame with the coordinates
  library(terra)
  valuesatpoints <- terra::extract(temperatura_global, lonlat)
  temp_p123 <- cbind(lonlat, valuesatpoints)
  temp_p123
  
  # Transponer el dataframe
  df_transposed <- t(temp_p123)
  
  df_transposed <- df_transposed[-c(1:3), ]
  
  # Asignar nombres a las columnas
  colnames(df_transposed) <- c("Punto_1", "Punto_2","Punto_3")
  
  # Imprimir el dataframe resultante
  df_transposed <- as.data.frame(df_transposed)
  
  
  # Crear un nuevo índice numérico consecutivo
  nuevo_indice <- 1:nrow(df_transposed)
  
  # Asignar el nuevo índice al dataframe
  rownames(df_transposed) <- nuevo_indice
  
  # Verificar el nuevo índice
  print(df_transposed)
  
  })
})
##     Punto_1 Punto_2 Punto_3
## 1  25.87653  22.882  17.105
## 2  26.08163  23.114  17.212
## 3  26.25102  23.145  17.398
## 4  26.20408  22.913  17.234
## 5  26.16837  22.815  17.235
## 6  25.90000  22.758  17.032
## 7  25.82041  23.235  17.201
## 8  25.66224  23.158  17.279
## 9  25.53572  22.938  17.178
## 10 25.41939  22.287  16.755
## 11 25.55510  22.140  16.719
## 12 25.63163  22.471  16.932
# Graficar los datos de serie temporal
plot(dat_avg_p1$year, dat_avg_p1$avg_chirps, type = "l", col = "blue", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Años", side = 1, line = 3)
mtext("Precipitación (mm)", side = 2, line = 3)

# Agregar título
title(main = "Precipitación anual de Cascadas La Sierpe")

# Crear una secuencia de números consecutivos como nuevo índice
nuevo_indice <- seq(1, nrow(df_transposed))

# Asignar el nuevo índice al dataframe
rownames(df_transposed) <- nuevo_indice

# Graficar los datos de serie temporal
plot(nuevo_indice, df_transposed$Punto_1, type = "l", col = "red", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Meses", side = 1, line = 3)
mtext("Temperatura (C°)", side = 2, line = 3)

# Agregar título
title(main = "Temperatura mensual de Cascadas La Sierpe")

# Graficar los datos de serie temporal
plot(dat_avg_p2$year, dat_avg_p2$avg_chirps, type = "l", col = "blue", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Años", side = 1, line = 3)
mtext("Precipitación (mm)", side = 2, line = 3)

# Agregar título
title(main = "Precipitación anual de Embalse Guacas")

# Crear una secuencia de números consecutivos como nuevo índice
nuevo_indice <- seq(1, nrow(df_transposed))

# Asignar el nuevo índice al dataframe
rownames(df_transposed) <- nuevo_indice

# Graficar los datos de serie temporal
plot(nuevo_indice, df_transposed$Punto_2, type = "l", col = "red", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Meses", side = 1, line = 3)
mtext("Temperatura (C°)", side = 2, line = 3)

# Agregar título
title(main = "Temperatura mensual de Embalse Guacas")

# Graficar los datos de serie temporal
plot(dat_avg_p3$year, dat_avg_p3$avg_chirps, type = "l", col = "blue", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Años", side = 1, line = 3)
mtext("Precipitación (mm)", side = 2, line = 3)

# Agregar título
title(main = "Precipitación anual de Alto la Cutimbre")

# Crear una secuencia de números consecutivos como nuevo índice
nuevo_indice <- seq(1, nrow(df_transposed))

# Asignar el nuevo índice al dataframe
rownames(df_transposed) <- nuevo_indice

# Graficar los datos de serie temporal
plot(nuevo_indice, df_transposed$Punto_3, type = "l", col = "red", lwd = 2,
     xlab = "", ylab = "")

# Agregar etiquetas para los ejes x e y
mtext("Meses", side = 1, line = 3)
mtext("Temperatura (C°)", side = 2, line = 3)

# Agregar título
title(main = "Temperatura mensual de Alto la Cutimbre")

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.

suppressMessages({
  suppressWarnings({

    # Suponiendo que tu data frame se llama df y las columnas que deseas eliminar son lon, lat e ID
    temp_p123_f <- subset(temp_p123, select = -c(lon, lat, ID))
    
    # Obtener los valores de precipitación para los puntos 1, 2 y 3
    valuesatpoints_prec <- terra::extract(precipitacion_global, lonlat)
    prec_p123 <- cbind(lonlat, valuesatpoints_prec)
    
    # Eliminar las columnas lon, lat e ID del dataframe de precipitación
    prec_p123_f <- subset(prec_p123, select = -c(lon, lat, ID))
    
    # Calcular la distancia euclidiana entre los puntos y los datos globales de temperatura y precipitación
    d_euclid_temp_p1 <- sqrt(sum((temperatura_global - as.numeric(temp_p123_f[1, ]))^2))
    d_euclid_prec_p1 <- sqrt(sum((precipitacion_global - as.numeric(prec_p123_f[1, ]))^2))
    
    d_euclid_temp_p2 <- sqrt(sum((temperatura_global - as.numeric(temp_p123_f[2, ]))^2))
    d_euclid_prec_p2 <- sqrt(sum((precipitacion_global - as.numeric(prec_p123_f[2, ]))^2))
    
    d_euclid_temp_p3 <- sqrt(sum((temperatura_global - as.numeric(temp_p123_f[3, ]))^2))
    d_euclid_prec_p3 <- sqrt(sum((precipitacion_global - as.numeric(prec_p123_f[3, ]))^2))

  
  })
})
## |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          |---------|---------|---------|---------|=========================================                                          
# Graficar la similitud en temperatura para Cascadas La Sierpe
terra::plot(d_euclid_temp_p1, col = my_palette_t(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en temperatura para Cascadas La Sierpe
title(main = "Similitud en temperatura para Cascadas La Sierpe", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar la similitud en precipitación para Cascadas La Sierpe
terra::plot(d_euclid_prec_p1, col = my_palette_p(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en precipitación para Cascadas La Sierpe
title(main = "Similitud en precipitación para Cascadas La Sierpe", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar la similitud en temperatura para Embalse Guacas
terra::plot(d_euclid_temp_p2, col = my_palette_t(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en temperatura para Embalse Guacas
title(main = "Similitud en temperatura para Embalse Guacas", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar la similitud en precipitación para Embalse Guacas
terra::plot(d_euclid_prec_p2, col = my_palette_p(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en precipitación para Embalse Guacas
title(main = "Similitud en precipitación para Embalse Guacas", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar la similitud en temperatura para Alto la Cutimbre
terra::plot(d_euclid_temp_p3, col = my_palette_t(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en temperatura para Alto la Cutimbre
title(main = "Similitud en temperatura para Alto la Cutimbre", cex.main = 0.8, adj = 0.45, line = 3)

# Graficar la similitud en precipitación para Alto la Cutimbre
terra::plot(d_euclid_prec_p3, col = my_palette_p(10), plg = list(title = "Similitud"))

# Agregar el mapa mundial a la gráfica
plot(mundo, col = "transparent", border = "black", add = TRUE)

# Agregar título a la gráfica de similitud en precipitación para Alto la Cutimbre
title(main = "Similitud en precipitación para Alto la Cutimbre", cex.main = 0.8, adj = 0.45, line = 3)

Punto 5:

Compare los mapas generados por ambas aproximaciones y concluya.

1- Los países cercanos al Ecuador global, son aquellos aptos para cultivos de Caña.

2- Colombia presenta las precipitaciones más altas frente a los otros dos países seleccionados.

3- De los tres puntos seleccionados en el Valle del Cauca, ninguno cumple con los requisitos para cultivos de caña, debido a que no presentan la combinación adecuada de precipitaciones y temperatura.

4- Los mapas de similaridad generados para los puntos del valle del cauca, muestran de manera global la similitud, sin embargo esta no es muy precisa.