Análisis de Información Geográfica y Espacial
Maestría en Ciencia de Datos - Javeriana Cali
Un agricultor interesado en el cultivo de la caña de azúcar, requiere en conocer cuales son las regiones que cuentan con las mejores condiciones para el desarrollo de este cultivo bajo los siguientes parametros óptimos:
O buscar regiones con condiciones climáticas similares a las del Valle del Cauca, territorio con altos rendimientos en este cultivo.
Para la obtención de la información correspondiente a la temperatura media y precipitación, se toman las imágenes raster de WorldClim.
En primera medida se realiza la importación de las librerías.
# Importar librerías
require(raster)
require(rgdal)
require(maptools)
require(geoR)
require(leaflet)
require(tmaptools)
require(rasterVis)
require(RColorBrewer)
Se realiza el cargue de las imágenes raster correspondientes al nivel de precipitación
# Se realiza el cargue de los archivos raster de las precipitaciones para cada mes del año
prec_files = list.files("C:/Users/User/Desktop/Precipitación_10m/", full.names = TRUE)
prec_all = stack(prec_files)
names(prec_all)=month.name
# Se construye el mapa de las precipitaciones de cada mes
Theme_prec <- rasterTheme(region = brewer.pal(9, "Blues"))
levelplot(prec_all,par.settings=Theme_prec,main = "Niveles de Precipitación por mes")
# Se obtiene el resumen del nivel de precipitaciones para cada mes
summary(prec_all)
## Warning in .local(object, ...): summary is an estimate based on a sample of 1e+05 cells (4.29% of all cells)
## January February March April May June July August
## Min. 0 0 0 0 0 0 0 0
## 1st Qu. 0 2 5 7 8 2 7 15
## Median 12 13 18 21 24 23 34 39
## 3rd Qu. 39 37 47 48 53 63 74 75
## Max. 743 567 647 680 640 1173 1718 1329
## NA's 1521009 1521009 1521009 1521009 1521009 1521009 1521009 1521009
## September October November December
## Min. 0 0 0 0
## 1st Qu. 5 5 2 1
## Median 29 24 17 15
## 3rd Qu. 61 56 48 43
## Max. 766 727 617 747
## NA's 1521009 1521009 1521009 1521009
En cuanto a la los meses que registran la mayor mediana de precipitación son los meses de Agosto y Julio con 39 y 34 milimetros respectivamente.
Se realiza el cargue de las imágenes raster correspondiente al nivel de temperatura.
# Se realiza el cargue de los archivos raster de los niveles de temperatura para cada mes del año
temp_files = list.files("C:/Users/User/Desktop/Temp_prom_10m/", full.names = TRUE)
temp_all = stack(temp_files)
names(temp_all)=month.name
# Se construye el mapa de las precipitaciones de cada mes
levelplot(temp_all,par.settings=BuRdTheme,main = "Nivel de Temperatura por mes")
# Se obtiene el resumen de los niveles de temperatura registrados en cada mes.
summary(temp_all)
## Warning in .local(object, ...): summary is an estimate based on a sample of 1e+05 cells (4.29% of all cells)
## January February March April May
## Min. -45.47475 -44.79750 -57.90050 -6.418850e+01 -64.69050
## 1st Qu. -24.57931 -28.10106 -28.64813 -2.704531e+01 -26.26706
## Median -12.22363 -13.04150 -8.36775 -3.433750e-01 6.11625
## 3rd Qu. 13.87569 15.50231 18.15519 1.913725e+01 19.56606
## Max. 33.58550 32.53525 32.65400 3.419375e+01 36.22250
## NA's 1521009.00000 1521009.00000 1521009.00000 1.521009e+06 1521009.00000
## June July August September October
## Min. -64.27475 -68.40000 -66.32300 -6.440525e+01 -5.585025e+01
## 1st Qu. -26.98319 -28.64037 -29.04169 -2.679000e+01 -2.395013e+01
## Median 11.76000 14.03938 12.48688 7.517625e+00 8.053750e-01
## 3rd Qu. 21.20394 22.47563 22.34056 2.121544e+01 1.979581e+01
## Max. 38.21725 39.09800 38.07850 3.538275e+01 3.226825e+01
## NA's 1521009.00000 1521009.00000 1521009.00000 1.521009e+06 1.521009e+06
## November December
## Min. -4.341875e+01 -44.22200
## 1st Qu. -2.452319e+01 -23.15637
## Median -7.431875e+00 -10.63775
## 3rd Qu. 1.782675e+01 14.72400
## Max. 3.274175e+01 32.77875
## NA's 1.521009e+06 1521009.00000
En cuanto a la temperatura promedio de cada mes, se observa que en los periodos de Abril a Agosto es la etapa donde se registra el clima más cálido, ya que en los demás meses la temperatura alcanza niveles bajo cero. Entendiendo que esto es para todo el mundo, reconociendo que zonas próximas al ecuador no se ven afectadas por estaciones fuertes como el invierno.
# Se realiza el filtro correspondiente a un nivel precipitación entre 125 y 290 mm.
prec_optima =prec_all>=125&prec_all<=290
mytheme <- rasterTheme(region = brewer.pal(9, "Blues"))
levelplot(prec_optima,main = "Precipitación Mensual Óptima para la caña",par.settings=mytheme)
levelplot(prec_optima,par.settings=BuRdTheme, main = "Precipitación anual Óptima para la caña")
Los mapas anteriores. representan las regiones con mayores niveles de precipitación en cada uno de los meses.
A continuación se presenta consolidada la información de precipitación anual, delimitando el rango de 0 a 100, donde 100 corresponde a que la zona presenta las condiciones de precipitación durante los 12 meses del año.
# Se consolida la información de precipitación anual
indi_preci <- sum((prec_optima)/12*100)
plot(indi_preci)
Como se observa en el mapa anterior, una región importante de suramerica compuesta por Colombia, Ecuador, Perú y Brasil cuentan con buenas condiciones en sus precipitaciones para el desarrollo de este cultivo. Asi mismo, otros territorio dentro el continente africano.
# Se eliminan unos pixeles para resaltar las regiones con las mejores condiciones
pix_prec_no_optimos=which(indi_preci[]<50)
indi_preci[pix_prec_no_optimos]=NA
plot(indi_preci)
# Se realiza el filtro correspondiente al nivel de temperatura adecuado entre 22,5 y 28 grados centígrados.
temp_optima =temp_all>=22.5&temp_all<=28
mytheme <- rasterTheme(region = brewer.pal(9, "Greens"))
levelplot(temp_optima,par.settings=mytheme,main = "Temperatura Óptima para el cultivo de caña de Azúcar")
levelplot(temp_optima,par.settings=BuRdTheme)
Los mapas anteriores, representan las regiones con mayores condiciones climáticas para el desarrollo del cultivo de caña de azúcar.
A continuación se presenta consolidada la información de la temperatura, delimitando el rango de 0 a 100, donde 100 corresponde a que la zona presenta las condiciones climáticas similares durante los 12 meses del año.
# Se consolida la información de la temperatura para los 12 meses del año
indi_temp<-sum((temp_optima)*100/12)
plot(indi_temp, main="Sumatoria del rango de temperatura")
Como se observa en el mapa anterior, las zonas ubicadas en el punto 0 correspondiente a la linea del Ecuador, es decir, entre el trópico de cáncer y capricornio tienen las mejores condiciones de temperatura para el desarrollo de este cultivo, en países como Ecuador, Perú, Colombia, Brasil, Nigeria, Camerún y Congo.
# Se eliminan unos pixeles para resaltar las regiones con las mejores condiciones
pix_temp_no_optimos=which(indi_temp[]<75)
indi_temp[pix_temp_no_optimos]=NA
plot(indi_temp)
Se realiza el corte de la imagen raster para Colombia, Brasil y Ecuador.
# Se obtienen las coordenadas de los países
require(leaflet)
Co =geocode_OSM(q = "Colombia")
print(Co)
## $query
## [1] "Colombia"
##
## $coords
## x y
## -72.908813 4.099917
##
## $bbox
## xmin ymin xmax ymax
## -82.124361 -4.229403 -66.849039 16.049552
require(tmaptools)
Br = geocode_OSM(q = "Brasil")
print(Br)
## $query
## [1] "Brasil"
##
## $coords
## x y
## -53.20000 -10.33333
##
## $bbox
## xmin ymin xmax ymax
## -73.983063 -33.868906 -28.628965 5.269581
require(tmaptools)
Ec = geocode_OSM(q ="Ecuador")
print(Ec)
## $query
## [1] "Ecuador"
##
## $coords
## x y
## -79.366697 -1.339767
##
## $bbox
## xmin ymin xmax ymax
## -92.207239 -5.015931 -75.192504 1.883596
# Se definen las coordenadas de Colombia
xmin <- -82.124361
ymin <- -4.229403
xmax <- -66.849039
ymax <- 16.049552
# Realiza el recorte utilizando la función crop()
mapa_colombia1 <- crop(indi_temp, extent(xmin, xmax, ymin, ymax))
mapa_colombia2 <- crop(indi_preci, extent(xmin, xmax, ymin, ymax))
plot(mapa_colombia1, main = " Regiones de Colombia con Mejores Condiciones de Temperatura ")
plot(mapa_colombia2, main = " Regiones de Colombia con Mejores Condiciones de Precipitaciones")
Para el caso de Colombia, se observa que una de las mejores condiciones de temperatura y precipitaciones para el desarrollo de este cultivo se encuentra en todo el litoral pacifico en los departamentos de Chocó, Valle del Cauca y Cauca. Asi como en los departamentos contiguos a la región amazónica.
# Se definen las coordenadas de Brasil
xmin <- -73.983063
ymin <- -33.868906
xmax <- -28.628965
ymax <- 5.269581
# Realiza el recorte utilizando la función crop()
mapa_brasil_1 <- crop(indi_temp, extent(xmin, xmax, ymin, ymax))
mapa_brasil_2 <- crop(indi_preci, extent(xmin, xmax, ymin, ymax))
plot(mapa_brasil_1, main = " Regiones de Brasil con Mejores Condiciones de Temperatura ")
plot(mapa_brasil_2, main = " Regiones de Brasil con Mejores Condiciones de Precipitaciones")
En Brasil al igual que en Colombia, una de las regiones con mejores condiciones climáticas para el desarrollo de este cultivo es la región Amazónica, particularmente en los estados de Amazonas, Pará, Mato Grosso, entre otros.
# Se definen las coordenadas del Ecuador
xmin <- -92.207239
ymin <- -5.015931
xmax <- -75.192504
ymax <- 1.883596
# Realiza el recorte utilizando la función crop()
mapa_ecuador_1 <- crop(indi_temp, extent(xmin, xmax, ymin, ymax))
mapa_ecuador_2 <- crop(indi_preci, extent(xmin, xmax, ymin, ymax))
plot(mapa_ecuador_1, main = " Regiones de Ecuador con Mejores Condiciones de Temperatura ")
plot(mapa_ecuador_2, main = " Regiones de Ecuador con Mejores Condiciones de Precipitaciones")
Finalmente, en el caso del Ecuador como ocurre con Colombia y Brasil una de las mejores zonas para el desarrollo de este cultivo es la región amazónica. Adicionalmente, otros territorios como la costa pacífica.
Para este ejercicio se seleccionaron los municipios de Palmira y Cartago, capturando para cada uno de estos sus resultados en términos de precipitación y temperatura para posteriormente comparar zonas con condiciones similares.
# Se obtienen las coordenadas del municipio
geocode_OSM(q = "Palmira, Valle")
## $query
## [1] "Palmira, Valle"
##
## $coords
## x y
## -76.298805 3.530837
##
## $bbox
## xmin ymin xmax ymax
## -76.491742 3.451598 -75.949667 3.718068
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-76.298805 ,lat = 3.530837)
# Se extrae la información correspondiente a la temperatura y precipitación
palmira <- data.frame(
longitude = c(-76.298805),
latitude = c(3.530837))
# Se construyen los data frame con la información.
temp_palmira=as.data.frame( extract(temp_all,palmira))
prec_palmira= as.data.frame( extract(prec_all,palmira))
# Se presentan los datos de temperatura
temp_palmira
## 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
temp_palmira=ts(as.numeric(temp_palmira[1,]))
plot(temp_palmira, main= "Temperatura en Palmira", col="green")
# Se presentan los datos de precipitación
prec_palmira
## January February March April May June July August September October November
## 1 92 102 132 172 146 112 61 73 105 195 173
## December
## 1 121
prec_palmira=ts(as.numeric(prec_palmira[1,]))
plot(prec_palmira, main= "Precipitación en Palmira", col="blue")
# Se obtienen las coordenadas del municipio
geocode_OSM(q = "Cartago, Valle")
## $query
## [1] "Cartago, Valle"
##
## $coords
## x y
## -75.912123 4.746549
##
## $bbox
## xmin ymin xmax ymax
## -76.016663 4.612901 -75.822063 4.808081
leaflet() %>% addTiles() %>% addCircleMarkers(lng =-75.912123 ,lat = 4.746549)
# Se extrae la información correspondiente a la temperatura y precipitación
cartago <- data.frame(
longitude = c(-75.912123),
latitude = c(4.746549))
# Se construyen los data frame con la información.
temp_cartago=as.data.frame( extract(temp_all,cartago))
prec_cartago= as.data.frame( extract(prec_all,cartago))
# Se presentan los datos de temperatura
temp_cartago
## January February March April May June July August September
## 1 23.2375 23.45825 23.57375 23.26525 23.08175 23.006 23.382 23.42725 23.08925
## October November December
## 1 22.5165 22.501 22.84375
temp_cartago=ts(as.numeric(temp_cartago[1,]))
plot(temp_cartago, main= "Temperatura en Cartago", col="green")
# Se presentan los datos de precipitación
prec_cartago
## January February March April May June July August September October November
## 1 106 109 150 217 202 159 110 129 169 241 197
## December
## 1 107
prec_cartago=ts(as.numeric(prec_cartago[1,]))
plot(prec_cartago, main= "Precipitación en Cartago", col="blue")
# Comparación de la temperatura
Palmira_comp_temp=sqrt(sum((temp_all-as.numeric(temp_palmira))^2))
levelplot(Palmira_comp_temp,par.settings=BTCTheme,at=seq(0,176,10), main="Zonas similares a Palmira según su Temperatura")
# Comparación de la precipitación
Palmira_comp_prec=sqrt(sum((prec_all-as.numeric(prec_palmira))^2))
levelplot(Palmira_comp_prec,par.settings=BTCTheme,at=seq(0,2383,100), main="Zonas similares a Palmira según su Precipitación")
# Comparación de la precipitación
Cartago_comp_temp=sqrt(sum((temp_all-as.numeric(temp_cartago))^2))
levelplot(Cartago_comp_temp,par.settings=BTCTheme,at=seq(0,176,10), main="Zonas similares a Cartago según su Temperatura")
Cartago_comp_prec=sqrt(sum((prec_all-as.numeric(prec_cartago))^2))
levelplot(Cartago_comp_prec,par.settings=BTCTheme,at=seq(0,2383,100), main="Zonas similares a Cartago según su Precipitación")
Como se puede apreciar en los mapas anteriormente expuestos, tomando como referencia las condiciones climáticas de dos municipios del Valle del Cauca, se obtienen resultados similares al primer ejercicio de identificación de las regiones del mundo que cuentan con condiciones optimas para el cultivo de caña de Azúcar, como es el caso de una zona de Ecuador, Brasil y Perú en Suramerica, y particularmente la región de Africa central.