El objetivo del presente script es identificar en que zonas del mundo se pueden obtener mejores rendimientos potenciales para el cultivo de la caña de azucar, teniendo en cuenta los siguientes factores limitantes:
■ Temperatura media entre 22.5 y 28 grados centrigados.
■ Precipitación anual entre 1500 y 3500 milimetros.
■ Precipitación mensual entre 125 y 290 milimetros.
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.
#Cargue de librerias para el procesamiento de imagenes raster
require(raster)
require(rgdal)
require(sp)
#Cargue shape con los paises del mundo
paises=shapefile("C:/Users/PACHO/Desktop/paises_shp/Mapa_paises_mundo.shp")
#Cargue de imagenes raster de la temperatura
archivos=list.files("C:/Users/PACHO/Desktop/world_temp_avg/", full.names = TRUE)
temp_all=stack(archivos)
names(temp_all)=month.name
plot(temp_all)
#Cargue de imagenes raster de la precipitación
archivos_prec=list.files("C:/Users/PACHO/Desktop/world_prec/", full.names = TRUE)
prec_all=stack(archivos_prec)
names(prec_all)=month.name
plot(prec_all)
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
Indicador de temperatura
#Identificar los paises con una temperatura media entre 22.5 y 28 grados centrigados
temp_cumple=temp_all>=22.5 & temp_all<=28
indicador_temp=sum(temp_cumple)
#Se ajusta el indicador para presentarlo como porcentaje
indicador_temp2=indicador_temp/12*100
plot(indicador_temp2)
Indicador de precipitación
#Identificar los paises con una precipitación mensual entre 125 y 290 mm.
prec_cumple=prec_all>=125 & prec_all<=290
indicador_prec=sum(prec_cumple)
#Se ajusta el indicador para presentarlo como porcentaje
indicador_prec2=indicador_prec/12*100
plot(indicador_prec2)
Eliminar los pixeles que no cumplen los umbrales definidos para cada indicador
#Retirar los pixeles del indicador de temperatura
pix_no_optimos_t=which(indicador_temp2[]<75)
indicador_temp2[pix_no_optimos_t]=NA
plot(indicador_temp2)
#Retirar los pixeles del indicador de precipitación
pix_no_optimos_p=which(indicador_prec2[]<75)
indicador_prec2[pix_no_optimos_p]=NA
plot(indicador_prec2)
Identificar en el shape del mundo los lugares óptimos para la siembra
lugares_optimos= (indicador_temp2+indicador_prec2)/2
plot(paises, main="Area con los mejores resultados para el cultivo de cana de azucar")
plot(lugares_optimos, add=T, col="green")
#No fue posible incorporar las tildes y la leta ñ en el titulo
Como resultado del análisis, se puede concluir que algunas zonas apropiadas para el cultivo de la caña de azucar se encuentran en la República del Congo en África, algunas paises de Ásia y en algunas zonas de Colombia y Brasil.
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.
Para este punto se identifican dos ubicaciones, una en la zona urbana de la ciudad de Cali y la otra en la parte rural cercana a la ciudad de Cali.
Punto 1: ubicación urbana
#Ubicación en la zona urbana
require(leaflet)
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-76.523255 ,lat = 3.429866)
#Extraer la información de temperatura y precipitación del punto seleccionado.
punto1 <- data.frame(
longitude = c(-76.523255),
latitude = c(3.429866)
)
temp_punto1=as.data.frame( extract(temp_all,punto1))
prec_punto1= as.data.frame( extract(prec_all,punto1))
#Temperatura por mes
temp_punto1
## January February March April May June July August September
## 1 20.28125 20.38825 20.5215 20.306 20.2295 20.109 20.3215 20.43625 20.309
## October November December
## 1 19.86275 19.7955 20.01875
#Graficar serie de tiempo de temperatura
Punto1_temp=ts(as.numeric(temp_punto1[1,]))
plot(Punto1_temp, main= "Temperatura - Punto 1", col="red")
#Precipitación por mes
prec_punto1
## January February March April May June July August September October November
## 1 133 130 155 215 191 128 74 88 129 232 186
## December
## 1 171
#Graficar serie de tiempo de precipitación
Punto1_prec=ts(as.numeric(prec_punto1[1,]))
plot(Punto1_prec, main= "Precipitacion - Punto 1", col="blue")
Punto 2: ubicación rural
#Ubicación en la zona rural
require(leaflet)
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-76.608018 ,lat = 3.429466)
#Extraer la información de temperatura y precipitación del punto seleccionado.
punto2 <- data.frame(
longitude = c(-76.608018),
latitude = c(3.429466)
)
temp_punto2=as.data.frame( extract(temp_all,punto2))
prec_punto2= as.data.frame( extract(prec_all,punto2))
#Temperatura por mes
temp_punto2
## January February March April May June July August September
## 1 20.28125 20.38825 20.5215 20.306 20.2295 20.109 20.3215 20.43625 20.309
## October November December
## 1 19.86275 19.7955 20.01875
#Graficar serie de tiempo de temperatura
Punto2_temp=ts(as.numeric(temp_punto1[1,]))
plot(Punto2_temp, main= "Temperatura - Punto 2", col="red")
#Precipitación por mes
prec_punto2
## January February March April May June July August September October November
## 1 133 130 155 215 191 128 74 88 129 232 186
## December
## 1 171
#Graficar serie de tiempo de precipitación
Punto2_prec=ts(as.numeric(prec_punto2[1,]))
plot(Punto2_prec, main= "Precipitacion - Punto 2", 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.
Comparación del punto 1: ubicación urbana
require(RColorBrewer)
require(rasterVis)
Punto1_comp_temp=sqrt(sum((temp_all-as.numeric(Punto1_temp))^2))
levelplot(Punto1_comp_temp,par.settings=BTCTheme,at=seq(0,176,10), main="Zonas similares a Punto 1 en temperatura")
#Comparación del punto 1 en precipitación
Punto1_comp_prec=sqrt(sum((prec_all-as.numeric(Punto1_prec))^2))
levelplot(Punto1_comp_prec,par.settings=BTCTheme,at=seq(0,2383,100), main="Zonas similares a Punto 1 en precipitación")
#Intersección de zonas similares al punto 1
Punto1_comp_temp_filtro<-Punto1_comp_temp
Punto1_comp_temp_filtro[(Punto1_comp_temp_filtro >28)] <- NA
Punto1_comp_prec_filtro<-Punto1_comp_prec
Punto1_comp_prec_filtro[(Punto1_comp_prec_filtro >290)] <- NA
interse<-Punto1_comp_temp_filtro & Punto1_comp_prec_filtro
opar <- par()
par(mar = c(0,0, 0, 0))
plot(paises)
plot(interse,add=T, col="blue",breaks=c(1,1.1),legend=FALSE)
De acuerdo con la gráfica anterior, se puede observar que se encuentran lugares en el mundo con características similares en Ecuador, Brasil, Africa y algunas zonas de Asia.
Comparación del punto 2: ubicación rural
Punto2_comp_temp=sqrt(sum((temp_all-as.numeric(Punto2_temp))^2))
levelplot(Punto2_comp_temp,par.settings=BTCTheme,at=seq(0,176,10), main="Zonas similares a Punto 2 en temperatura")
#Comparación del punto 2 en precipitación
Punto2_comp_prec=sqrt(sum((prec_all-as.numeric(Punto2_prec))^2))
levelplot(Punto2_comp_prec,par.settings=BTCTheme,at=seq(0,2383,100), main="Zonas similares a Punto 2 en precipitación")
#Intersección de zonas similares al punto 2
Punto2_comp_temp_filtro<-Punto2_comp_temp
Punto2_comp_temp_filtro[(Punto2_comp_temp_filtro >28)] <- NA
Punto2_comp_prec_filtro<-Punto2_comp_prec
Punto2_comp_prec_filtro[(Punto2_comp_prec_filtro >290)] <- NA
interse<-Punto2_comp_temp_filtro & Punto1_comp_prec_filtro
opar <- par()
par(mar = c(0,0, 0, 0))
plot(paises)
plot(interse,add=T, col="blue",breaks=c(1,1.1),legend=FALSE)
De acuerdo con la gráfica anterior, se puede observar que se encuentran lugares en el mundo con características similares en Ecuador, Brasil, Africa y algunas zonas de Asia, muy similar al punto número 1 debido a que se encuentran en una zona muy cercana tanto el punto 1 como el2.