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
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"
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.
# 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)
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.
# 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")
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)
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.