Datos a revisar para el cultivo de caña de azucar
La temperatura media debe estar entre 20 y 30 grados centígrados. La Precipitación mensual debe estar entre 125 y 290 milimetros. La Precipitación anual debe estar entre 1500 y 3500 milimetros.
library(raster)
library(sp)
library(viridis)
Mapa_1=raster("temperatura/temperatura/wc2.1_10m_tavg_01.tif")
color_palette <- c("lightgray", viridis(99))
plot(Mapa_1, col = color_palette, main = "Mapa de Temperatura con Gradiente de Colores",
xlab = "Longitud", ylab = "Latitud")
Primera condicion (Temperatura)
Mapa_1_temp=Mapa_1>20&Mapa_1<30
Mapa_1_temp
## class : RasterLayer
## dimensions : 1080, 2160, 2332800 (nrow, ncol, ncell)
## resolution : 0.1666667, 0.1666667 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## source : memory
## names : layer
## values : 0, 1 (min, max)
Mapa de regiones que cumplen con la condicion 1
plot(Mapa_1_temp, col = color_palette, main = "Temperatura optima",
xlab = "Longitud", ylab = "Latitud")
Ruta=list.files("temperatura/temperatura/", full.names = TRUE)
temp=stack(Ruta)
temp
## class : RasterStack
## dimensions : 1080, 2160, 2332800, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.1666667, 0.1666667 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## names : wc2.1_10m_tavg_01, wc2.1_10m_tavg_02, wc2.1_10m_tavg_03, wc2.1_10m_tavg_04, wc2.1_10m_tavg_05, wc2.1_10m_tavg_06, wc2.1_10m_tavg_07, wc2.1_10m_tavg_08, wc2.1_10m_tavg_09, wc2.1_10m_tavg_10, wc2.1_10m_tavg_11, wc2.1_10m_tavg_12
## min values : -45.88400, -44.80000, -57.92575, -64.19250, -64.81150, -64.35825, -68.46075, -66.52250, -64.56325, -55.90000, -43.43475, -45.32700
## max values : 34.00950, 32.82425, 32.90950, 34.19375, 36.25325, 38.35550, 39.54950, 38.43275, 35.79000, 32.65125, 32.78800, 32.82525
Mapas con los meses del año
names(temp)=month.name
plot(temp, col = color_palette)
Revision de la condición
Temperatura_condicion=temp>20&temp<30
Temperatura_condicion
## class : RasterBrick
## dimensions : 1080, 2160, 2332800, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.1666667, 0.1666667 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## source : memory
## names : January, February, March, April, May, June, July, August, September, October, November, December
## min values : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## max values : 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
Mapa de la temperatura
plot(Temperatura_condicion, col = color_palette,
xlab = "Longitud", ylab = "Latitud")
Revisión de la temperatura a nivel mundia
porc_temp=sum(Temperatura_condicion)/12*100
plot(porc_temp, col = color_palette, main = "Porcentaje Temperatura",
xlab = "Longitud", ylab = "Latitud")
Segunda y tercera condición
color_palette <- c("#EEF8F8", "lightblue","blue")
Mapa_2=raster("wc2_1_5m_prec/wc2.1_5m_prec_01.tif")
plot(Mapa_2, col = color_palette, main = "Precipitación mensual")
Mapa precipitación
Mapa_2_prec=Mapa_2>125&Mapa_2<290
Mapa_2_prec
## class : RasterLayer
## dimensions : 2160, 4320, 9331200 (nrow, ncol, ncell)
## resolution : 0.08333333, 0.08333333 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## source : memory
## names : layer
## values : 0, 1 (min, max)
plot(Mapa_2_prec, col = color_palette, main = "Precipitación mensual optima")
Mapa precipitación Optima
ruta2=list.files("wc2_1_5m_prec/", full.names = TRUE)
prec=stack(ruta2)
prec
## class : RasterStack
## dimensions : 2160, 4320, 9331200, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.08333333, 0.08333333 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## names : wc2.1_5m_prec_01, wc2.1_5m_prec_02, wc2.1_5m_prec_03, wc2.1_5m_prec_04, wc2.1_5m_prec_05, wc2.1_5m_prec_06, wc2.1_5m_prec_07, wc2.1_5m_prec_08, wc2.1_5m_prec_09, wc2.1_5m_prec_10, wc2.1_5m_prec_11, wc2.1_5m_prec_12
## min values : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## max values : 936, 1005, 774, 1004, 2068, 2210, 2578, 1897, 1955, 2328, 736, 827
Mapa precipitación por meses del año
names(prec)=month.name
plot(prec,col = color_palette)
Revision de la condición.
prec_cond=prec>125&prec<290
prec_cond
## class : RasterBrick
## dimensions : 2160, 4320, 9331200, 12 (nrow, ncol, ncell, nlayers)
## resolution : 0.08333333, 0.08333333 (x, y)
## extent : -180, 180, -90, 90 (xmin, xmax, ymin, ymax)
## crs : +proj=longlat +datum=WGS84 +no_defs
## source : r_tmp_2024-06-13_234532_7700_94996.grd
## names : layer.1, layer.2, layer.3, layer.4, layer.5, layer.6, layer.7, layer.8, layer.9, layer.10, layer.11, layer.12
## min values : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
## max values : 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
names(prec_cond)=month.name
plot(prec_cond,col = color_palette)
Revision de la precipitación a nivel mundial
porc_preci=sum(prec_cond)/12*100
plot(porc_preci , col = color_palette, main = "Precipitación mundial")
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.
library(raster)
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
Visualizando la temperatura de Colombia en enero:
im1 <- raster("temperatura/temperatura/wc2.1_10m_tavg_01.tif")
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Colombia", ]
im1_crop <- crop(im1, extent(country))
im1_mask <- mask(im1_crop, country)
color_palette <- c("lightgray", viridis(99))
plot(im1_mask, main = "Temperatura promedio en enero - Colombia",col = color_palette)
bras = list.files("temperatura/temperatura/", full.names = TRUE)
bras_temp = stack(bras)
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Colombia", ]
im1_crop <- crop(bras_temp, extent(country))
im1_mask <- mask(im1_crop, country)
names(im1_mask)=month.name
plot(im1_mask,col = color_palette)
porc_temp=sum(im1_mask)/12*1
plot(porc_temp,col = color_palette)
Visualizando la precipitación de Colombia en enero:
im1 <- raster("wc2_1_5m_prec/wc2.1_5m_prec_01.tif")
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Colombia", ]
im1_crop <- crop(im1, extent(country))
im1_mask <- mask(im1_crop, country)
color_palette_preci <- c("#EEF8F8", "lightblue","blue")
plot(im1_mask, main = "Precipitación promedio en enero - Colombia", col=color_palette_preci)
bras = list.files("wc2_1_5m_prec/", full.names = TRUE)
bras_temp = stack(bras)
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Colombia", ]
im1_crop <- crop(bras_temp, extent(country))
im1_mask <- mask(im1_crop, country)
names(im1_mask)=month.name
plot(im1_mask, col=color_palette_preci)
porc_temp_bra=sum(im1_mask)/12*10
plot(porc_temp_bra, col=color_palette_preci)
Visualizando la temperatura de Brasil en enero:
im1 <- raster("temperatura/temperatura/wc2.1_10m_tavg_01.tif")
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Brazil", ]
im1_crop <- crop(im1, extent(country))
im1_mask <- mask(im1_crop, country)
plot(im1_mask, main = "Temperatura promedio en enero - Brasil", col=color_palette)
bras = list.files("temperatura/temperatura/", full.names = TRUE)
bras_temp = stack(bras)
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Brazil", ]
im1_crop <- crop(bras_temp, extent(country))
im1_mask <- mask(im1_crop, country)
names(im1_mask)=month.name
plot(im1_mask, col=color_palette)
Temperatura Optima
porc_temp_bra=sum(im1_mask)/12*1
plot(porc_temp_bra, col=color_palette)
Visualizando la precipitación de Brasil en enero:
im1 <- raster("wc2_1_5m_prec/wc2.1_5m_prec_01.tif")
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Brazil", ]
im1_crop <- crop(im1, extent(country))
im1_mask <- mask(im1_crop, country)
plot(im1_mask, main = "Precipitación promedio en enero - Brasil", col=color_palette_preci)
bras = list.files("wc2_1_5m_prec/", full.names = TRUE)
bras_temp = stack(bras)
world <- ne_countries(scale = "medium", returnclass = "sf")
country <- world[world$name == "Brazil", ]
im1_crop <- crop(bras_temp, extent(country))
im1_mask <- mask(im1_crop, country)
names(im1_mask)=month.name
plot(im1_mask, col=color_palette_preci)
porc_temp_bra=sum(im1_mask)/12*10
plot(porc_temp_bra, col=color_palette_preci)
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.
library(leaflet)
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-76.315081 ,lat = 3.5407942)
palmira <- data.frame(longitude = c(-76.315081), latitude = c(3.5407942))
palmira_temp = as.data.frame(extract(temp, palmira))
palmira_prec = as.data.frame(extract(prec, palmira))
palmira_temp
## January February March April May June July August September
## 1 22.50275 22.6155 22.73675 22.44175 22.3585 22.328 22.6225 22.74675 22.57575
## October November December
## 1 22.02075 21.88275 22.14775
palmira_prec
## January February March April May June July August September October November
## 1 96 101 135 171 151 122 64 76 113 204 178
## December
## 1 126
Serie de tiempo para la temperatura:
Temperatura_palmira=ts(as.numeric(palmira_temp[1,]))
plot(Temperatura_palmira, main= "Palmira", col="blue")
Serie de tiempo para la precipitacion:
Precipitacion_palmira=ts(as.numeric(palmira_prec[1,]))
plot(Precipitacion_palmira, main= "Precipitación - Palmira", col="Blue")
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-76.5006027 ,lat = 3.5448105)
Yumbo_ <- data.frame(longitude = c(-76.5006027), latitude = c(3.5448105))
Yumbo__temp = as.data.frame(extract(temp, Yumbo_))
Yumbo__prec = as.data.frame(extract(prec, Yumbo_))
Yumbo__temp
## January February March April May June July August
## 1 19.6715 19.7905 19.93025 19.70875 19.58575 19.40175 19.53775 19.61475
## September October November December
## 1 19.58275 19.18175 19.14025 19.47825
Yumbo__prec
## January February March April May June July August September October November
## 1 143 137 181 222 197 135 79 97 132 264 206
## December
## 1 186
Serie de tiempo para la temperatura:
Temperatura_Yumbo_=ts(as.numeric(Yumbo__temp[1,]))
plot(Temperatura_Yumbo_, main= "Temperatura - Yumbo", col="green")
Serie de tiempo para la precipitacion:
Precipitacion_Yumbo_=ts(as.numeric(Yumbo__prec[1,]))
plot(Precipitacion_Yumbo_, main= "Precipitación - Yumbo", col="blue")
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.
punt_loc=cbind(-76.315081,3.5407942)
punt_loc2=cbind(-76.5006027,3.5448105)
locs=rbind.data.frame(punt_loc,punt_loc2)
Temperatura
temp_pal=extract(temp,punt_loc)
temp_pal2=extract(temp,locs)
temp_pal2
## January February March April May June July August
## [1,] 22.50275 22.6155 22.73675 22.44175 22.35850 22.32800 22.62250 22.74675
## [2,] 19.67150 19.7905 19.93025 19.70875 19.58575 19.40175 19.53775 19.61475
## September October November December
## [1,] 22.57575 22.02075 21.88275 22.14775
## [2,] 19.58275 19.18175 19.14025 19.47825
matplot(t(temp_pal2),type="l")
similitud=abs(temp_pal[1,]-temp)
plot(similitud[[1]], col=color_palette)
plot(similitud, col=color_palette)
Temperaturas similares a palmira y yumbo
library(RColorBrewer)
library(rasterVis)
library(lattice)
Simil_comp_temp <- sqrt(sum((temp - as.numeric(Temperatura_Yumbo_))^2))
levelplot(Simil_comp_temp,
col.regions = colorRampPalette(c("yellow", "orange","#AED6F1"))(100), # Colores degradados de azul
at = seq(0, 176, 10), # Definir intervalos para las etiquetas de los colores
main = "Similitud de Temperatura con Cali",
xlab = "Longitud",
ylab = "Latitud",
colorkey = list(labels = list(at = seq(0, 176, 20), # Etiquetas de la leyenda
labels = seq(0, 176, 20))),
scales = list(draw = TRUE), # Mostrar escalas de ejes
par.settings = BTCTheme) # Aplicar ajustes de estilo
library(RColorBrewer)
library(rasterVis)
library(lattice)
Simil_comp_temp <- sqrt(sum((temp - as.numeric(Temperatura_palmira))^2))
levelplot(Simil_comp_temp,
col.regions = colorRampPalette(c("yellow", "orange","#AED6F1"))(100), # Colores degradados de azul
at = seq(0, 176, 10), # Definir intervalos para las etiquetas de los colores
main = "Similitud de Temperatura con Cali",
xlab = "Longitud",
ylab = "Latitud",
colorkey = list(labels = list(at = seq(0, 176, 20), # Etiquetas de la leyenda
labels = seq(0, 176, 20))),
scales = list(draw = TRUE), # Mostrar escalas de ejes
par.settings = BTCTheme) # Aplicar ajustes de estilo
Precipitación:
prec_pal=extract(prec,punt_loc)
prec_pal2=extract(prec,locs)
prec_pal2
## January February March April May June July August September October
## [1,] 96 101 135 171 151 122 64 76 113 204
## [2,] 143 137 181 222 197 135 79 97 132 264
## November December
## [1,] 178 126
## [2,] 206 186
matplot(t(prec_pal2),type="l")
similitud=abs(prec_pal[1,]-prec)
plot(similitud[[1]], col=color_palette_preci)
plot(similitud, col=color_palette_preci)
Grafico de similitud
similar_menosde_2=similitud<2
aptitud=sum(similar_menosde_2)/12*100
plot(aptitud, col=color_palette_preci)
library(RColorBrewer)
library(rasterVis)
library(lattice)
Simil_comp_prec <- sqrt(sum((prec - as.numeric(Precipitacion_Yumbo_))^2))
levelplot(Simil_comp_prec,
col.regions = colorRampPalette(c("blue", "darkblue"))(100), # Colores degradados de azul
at = seq(0, 176, 10), # Definir intervalos para las etiquetas de los colores
main = "Similitud de Precipitación con Cali",
xlab = "Longitud",
ylab = "Latitud",
colorkey = list(labels = list(at = seq(0, 176, 20), # Etiquetas de la leyenda
labels = seq(0, 176, 20))),
scales = list(draw = TRUE), # Mostrar escalas de ejes
par.settings = BTCTheme) # Aplicar ajustes de estilo
library(RColorBrewer)
library(rasterVis)
library(lattice)
levelplot(Simil_comp_prec,
col.regions = colorRampPalette(c("lightblue", "blue"))(100), # Colores degradados de azul
at = seq(0, 176, 10), # Definir intervalos para las etiquetas de los colores
main = "Similitud de Temperatura con Cali",
xlab = "Longitud",
ylab = "Latitud",
colorkey = list(labels = list(at = seq(0, 176, 20), # Etiquetas de la leyenda
labels = seq(0, 176, 20))),
scales = list(draw = TRUE), # Mostrar escalas de ejes
par.settings = BTCTheme) # Aplicar ajustes de estilo
5.- Compare los mapas generados por ambas aproximaciones y concluya.