Determinar las condiciones de producción de las diferentes zonas del país es fundamental para comprender la dinámica del comercio en la región, ya que permite determinar aquellos productos que sustentan en gran parte la economía de una zona específica. Como se puede observar en FAO (2020), cada región del país presenta ventajas en cuanto a la producción de difernetes productos agrícolas, lo cual se asocia a sus condiciones de relieve, clima, suelos y manejos aplicados. Por esto, el presente informe tiene como objetivo la caracterización estadística del departamento de Casanare.
Es fundamental estudiar las estadísticas no espaciales para comprender lo que sucede en los territorios. Inicialmente, es necesario realizar una limpieza al ambiente de trabajo de R, mediante la función “rm(list=ls())”, y seleccionar la carpeta en el ordenador en la cual se almacenarán todos los archivos del proyecto, mediante la función “setwd”.
###
rm(list=ls())
setwd("C:/Users/yarya/Desktop/Geomatica/Clase10")
getwd()
## [1] "C:/Users/yarya/Desktop/Geomatica/Clase10"
##
Una vez realizado esto, es necesraio instalar las librerías que se necesitan para ejecutar las funciones necesarias. La sigueinte función permite ejecutar el código, sin que se instalen siempre las mismas librerías, por lo que se pueden escribir aquellas que son necesarias para el trabajo práctico, y el programa instalará únicamente las que hacen falta.
###
list.of.packages <- c("here", "tidyverse", "rgeos", "maptools", "raster", "sf", "viridis", "rnaturalearth", "GSODR", "ggrepel", "cowplot", "RColorBrewer")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
##
Ahora si es posible cargar las librerías necesarias.
###
library(here)
## here() starts at C:/Users/yarya/Desktop/Geomatica/Clase10
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.2 v purrr 0.3.4
## v tibble 3.0.3 v dplyr 1.0.2
## v tidyr 1.1.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(rgeos)
## Loading required package: sp
## rgeos version: 0.5-5, (SVN revision 640)
## GEOS runtime version: 3.8.0-CAPI-1.13.1
## Linking to sp version: 1.4-2
## Polygon checking: TRUE
library(maptools)
## Checking rgeos availability: TRUE
library(raster)
##
## Attaching package: 'raster'
## The following object is masked from 'package:dplyr':
##
## select
## The following object is masked from 'package:tidyr':
##
## extract
library(sf)
## Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
library(viridis)
## Loading required package: viridisLite
library(rnaturalearth)
library(GSODR)
library(ggrepel)
library(cowplot)
library(readr)
library(RColorBrewer)
library(leaflet)
##
Para el presente cuaderno, los datos geoespaciales se obtuvieron de las Evaluaciones Agropecuarias Municipales EVA (Ministerio de Agricultura y Desarrollo Rural. 2019.) Estos datos fueron editados para poder ser almacenados como un archivo csv, el cual presenta como separador el punto y coma (“;”), dentro de la carpeta de la asignatura de Geomática.
Casanare <- read.csv("C:/Users/yarya/Desktop/Geomatica/Clase10/Datos_siembra_casanare.csv", sep = ";")
Casanare$PERIODO <- as.integer(Casanare$PERIODO)
## Warning: NAs introducidos por coerción
head(Casanare)
Como se puede observar, los datos presentan desde su fuente de origen el formato deseado, siendo aquellos como el municipio, el grupo, el cultivo, entre otros, caracteres, y los valores del año, la producción, el rendimiento, etc., valores integers.
Una vez cargados los datos, podemos observar los rendimientos de los diferentes grupos de cultivos en todos los municipios.
Casanare %>%
group_by(MUNICIPIO, GRUPO) %>%
summarise(rend_prom = mean(`RENDIMIENTO_TON.HA`, na.rm = TRUE)) -> rend_resumen
## `summarise()` regrouping output by 'MUNICIPIO' (override with `.groups` argument)
head(rend_resumen)
También es posible calcular el rendimiento promedio por cultivo en todos los municipios de Casanare.
Casanare %>%
group_by(GRUPO) %>%
summarise(rend_dep = mean(`RENDIMIENTO_TON.HA`, na.rm = TRUE)) -> rend_Casanare
## `summarise()` ungrouping output (override with `.groups` argument)
rend_Casanare
Notese que los cultivo con valor de rendimento más alto corresponden a Frutales, le sigue hortalizas, y por último las plantas aromáticas
Ahora, también es posible determinar aquellos municipios con mayor producción de los diferentes cultivos en el año 2018.
Casanare %>%
filter(YEAR==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_rend = max(`RENDIMIENTO_TON.HA`, na.rm = TRUE)) %>%
slice(which.max(max_rend)) -> rend_max_18
## Warning in max(RENDIMIENTO_TON.HA, na.rm = TRUE): ningun argumento finito para
## max; retornando -Inf
## Warning in max(RENDIMIENTO_TON.HA, na.rm = TRUE): ningun argumento finito para
## max; retornando -Inf
## Warning in max(RENDIMIENTO_TON.HA, na.rm = TRUE): ningun argumento finito para
## max; retornando -Inf
## `summarise()` regrouping output by 'GRUPO' (override with `.groups` argument)
rend_max_18
Es posible realizar el mismo análisis para aquellos municipios con la mayor área cosechada en el año 2018 de cada cultivo.
Casanare %>%
filter(YEAR==2018) %>%
group_by(GRUPO, MUNICIPIO) %>%
summarize(max_area_cosecha = max(AREA_COSECHADA_HA, na.rm = TRUE)) %>%
slice(which.max(max_area_cosecha)) -> area_cosecha_max
## `summarise()` regrouping output by 'GRUPO' (override with `.groups` argument)
area_cosecha_max
Se puede observar que lo que más se cosecha son plantas oleaginosas en Mani. La palma hace parte de estas plantas, y es el segundo cultivo de mayor impacto económico en la región, de acuerdo al ministerio de agricultura (2017).
Con esta información, es posible filtrar los datos para obtener la información del cultivo de palma de acéite únicamente en el municipio de Mani
Casanare %>%
filter(MUNICIPIO=="MANI" & SUBGRUPO=="PALMA DE ACEITE") %>%
group_by(YEAR, CULTIVO) -> mani_palma
mani_palma
Ahora, es posible generar un diabrama de barras, para observar como ha sido la dinámica de producción de palma a lo largo de los años, desde el año 2007 hasta el año 2018.
g <- ggplot(aes(x=YEAR, y=PRODUCCION_TON/1000), data = mani_palma) + geom_bar(stat='identity') + labs(y='Producción de Palma de aceite [Ton x 1000]')
g + ggtitle("Evolución del cultivo de Palma de aceite en Mani desde el 2007 hasta el 2018") + labs(caption= "Basado en el Ministerio de Agricultura y Desarrollo Rural. 2019.")
Se puede observar como la dinámica del cultivo de palma ha presentado un incremento a partir del año 2010, lo cual puede indicar un mejor manejo del cultivo con difernetes prácticas agronómicas.
Ahora, podemos buscar aquellos municipios con la mayor cosecha en el año 2018.
Casanare %>%
filter(YEAR==2018) %>%
group_by(GRUPO) %>%
summarize(sum_area_cosecha = sum(AREA_COSECHADA_HA, na.rm = TRUE)) %>%
arrange(desc(sum_area_cosecha)) -> total_area_cosecha
## `summarise()` ungrouping output (override with `.groups` argument)
total_area_cosecha
Podemos observar que los cultivos de cereales tenen la mayor área cosechada en el año 2018.
Debido a que el arroz se cultiva o con riego, o mecanizado por secano, y el maíz de forma tradicional o tecnificada, se realizará el filtro mediante el sistema productivo, para observar aquellos cultivos con mayor área cosechada entre los cereales.
Casanare %>%
filter(GRUPO=="CEREALES" & YEAR==2018) %>%
group_by(SISTEMA_PRODUCTIVO) %>%
summarize(sum_cosecha = sum(AREA_COSECHADA_HA, na.rm = TRUE)) %>%
arrange(desc(sum_cosecha)) -> total_cosecha
## `summarise()` ungrouping output (override with `.groups` argument)
total_cosecha
Estos resultados presentan relación con la cantidad de arroz mecanizado producido en la zona, siendo el primer cultivo en producción en el departamento de Casanare. (MINAGRICULTURA, 2017).
Y de igual forma, podemos obtener aquellos municipios con la mayor área cosechada para cada uno de los cultivos obtenidos anteriormente en el 2018.
Casanare %>%
filter(YEAR==2018 & GRUPO=="CEREALES") %>%
group_by(SISTEMA_PRODUCTIVO, MUNICIPIO) %>%
summarize(max_area2 = max(AREA_COSECHADA_HA, na.rm = TRUE)) %>%
slice(which.max(max_area2)) -> area_cosecha2
## `summarise()` regrouping output by 'SISTEMA_PRODUCTIVO' (override with `.groups` argument)
area_cosecha2
Con esto, es posible realizar un diagrama de baras, en el cual se ilustre gráficamente el área cosechada total de los diferentes cultivos en la región.
total_area_cosecha$CROP <- abbreviate(total_area_cosecha$GRUPO, 3)
g <- ggplot(aes(x=CROP, y=sum_area_cosecha), data = total_area_cosecha) + geom_bar(stat='identity') + labs(y='Área cosechada total [Ha]')
g+ ggtitle("Área cosechada total por grupos de cultivos en 2018 para Casanare") + theme(plot.title = element_text(hjust = 0.5)) +
labs(caption= "Basado en el Ministerio de Agricultura y Desarrollo Rural. 2019.")
Para realizar un análisis de forma gráfica mediante un mapa, es necesario ingresar a R los datos administrativos para Casanare, los cuales pueden ser obtenidos en el geoportal del DANE (DANE, 2020)
cas_munic <- sf::st_read("C:/Users/yarya/Desktop/Geomatica/Clase5/DatosCasanare2017/85_CASANARE/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
## Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\yarya\Desktop\Geomatica\Clase5\DatosCasanare2017\85_CASANARE\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
## Simple feature collection with 19 features and 9 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: -73.07777 ymin: 4.287476 xmax: -69.83591 ymax: 6.346111
## geographic CRS: WGS 84
Ahora, podemos observar el tipo de archivo que hemos cargado.
cas_munic
Para unir la información de las estadísticas agrícolas y la información municipal, inicialmente debemos generar un atributo en común entre ambos archivos, el cual, por conveniencia, será el código de cada municipio.
Casanare %>% filter (MUNICIPIO =="YOPAL") -> yop_datos
yop_datos
class(yop_datos$COD_N)
## [1] "integer"
Para realizar esta unión entre los datos, se debe cambiar tanto el tipo como el contenido de los datos de los códigos, los cuales identifican a cada municipio.Para esto, se realizará una copia de los datos originales.
datos2 <- Casanare
datos2$TEMP <- as.character(datos2$COD_N)
datos2$MPIO_CCDGO <- as.factor(paste(datos2$TEMP))
head(datos2)
Para facilidad en el manejo de la información, debido a que los datos suministrados no son bien procesados por el sistema R, se filtrará desde un inicio la información correspondiente únicamente para el año 2018. Aquí, nos aseguraremos de que la información del código de cada municipio se haya relacionado correctamente en los datos (presnecia de la columna “MPIO_CCDGO”).
datos2 %>% filter(CULTIVO == "PALMA DE ACEITE", YEAR == "2018") -> datos3
head(datos3)
class(datos3)
## [1] "data.frame"
datos4 <- datos3 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, PRODUCCION_TON, `RENDIMIENTO_TON.HA`)
datos4
datos4 %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number)
head(datos4)
datos4 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number) -> datos5
head(datos5)
tail(datos5)
Ahora, la función “left_join” nos pemritirá unir la información deseada.Para esto, es recomendado hacer una copia de los datos en “cas_munic2”
cas_munic2 <- cas_munic
cas_munic_stat_palma = left_join(cas_munic2, datos5, by="MPIO_CCDGO")
summary(cas_munic_stat_palma)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:19 Length:19 Length:19 Length:19
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 181.2 Min. :2017 Length:19 Min. :0.6746
## 1st Qu.: 590.1 1st Qu.:2017 Class :character 1st Qu.:1.3227
## Median : 1101.8 Median :2017 Mode :character Median :2.0349
## Mean : 2336.5 Mean :2017 Mean :3.0545
## 3rd Qu.: 2980.0 3rd Qu.:2017 3rd Qu.:4.2199
## Max. :12115.0 Max. :2017 Max. :8.5701
##
## Shape_Area MUNICIPIO PRODUCCION_TON_1 RENDIMIENTO_TON.HA_1
## Min. :0.01478 Length:19 Min. : 703 Min. :3.000
## 1st Qu.:0.04808 Class :character 1st Qu.: 2105 1st Qu.:3.000
## Median :0.08981 Mode :character Median : 2943 Median :3.000
## Mean :0.19027 Mean :22906 Mean :3.444
## 3rd Qu.:0.24256 3rd Qu.:33181 3rd Qu.:4.000
## Max. :0.98597 Max. :84389 Max. :4.000
## NA's :10 NA's :10
## YEAR_1 geometry
## Min. :2018 POLYGON :19
## 1st Qu.:2018 epsg:4326 : 0
## Median :2018 +proj=long...: 0
## Mean :2018
## 3rd Qu.:2018
## Max. :2018
## NA's :10
Ahora, haremos un mapa interactivo en el cual se pueda observar la producción de cada municipio del departamento de Casanare, que presenta valores de producción de palma de aceite en el año 2018.
bins <- c(0, 1000, 5000, 10000, 20000, 40000, 60000, 80000, 90000)
pal <- colorBin("Oranges", domain = cas_munic_stat_palma$PRODUCCION_TON_1, bins = bins)
mapa_palma <- leaflet(data = cas_munic_stat_palma) %>%
addTiles() %>%
addPolygons(label = ~PRODUCCION_TON_1,
popup = ~MPIO_CNMBR,
fillColor = ~pal(PRODUCCION_TON_1),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 1.5,
fillOpacity = 0.5,
highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~PRODUCCION_TON_1,
title = "Producción de palma en Casanare [Ton] (2018)",
opacity = 1
)
mapa_palma
Este mismo procedimiento se repite para generar un mapa de la producción de arroz en el departamento, ya que es de los cultivos más importantes de la región.
Debido a que el cultivo de arroz para el año 2018 presenta valores de producción para el sistema productivo con sistema de riego, y otro para el valor de sistema productivo por secano, es necesario filtrar directamente con el sistema productivo.
datos2 %>% filter(SISTEMA_PRODUCTIVO == "ARROZ_RIEGO", YEAR == "2018") -> arroz_riego
tail(arroz_riego)
class(arroz_riego)
## [1] "data.frame"
arroz_riego2 <- arroz_riego %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, PRODUCCION_TON, `RENDIMIENTO_TON.HA`)
arroz_riego2
arroz_riego2 %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number)
tail(arroz_riego2)
arroz_riego2 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number) -> arroz_riego3
head(arroz_riego3)
tail(arroz_riego3)
cas_munic2 <- cas_munic
cas_munic_stat_arroz_riego = left_join(cas_munic2, arroz_riego3, by="MPIO_CCDGO")
summary(cas_munic_stat_arroz_riego)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:19 Length:19 Length:19 Length:19
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 181.2 Min. :2017 Length:19 Min. :0.6746
## 1st Qu.: 590.1 1st Qu.:2017 Class :character 1st Qu.:1.3227
## Median : 1101.8 Median :2017 Mode :character Median :2.0349
## Mean : 2336.5 Mean :2017 Mean :3.0545
## 3rd Qu.: 2980.0 3rd Qu.:2017 3rd Qu.:4.2199
## Max. :12115.0 Max. :2017 Max. :8.5701
##
## Shape_Area MUNICIPIO PRODUCCION_TON_1 RENDIMIENTO_TON.HA_1
## Min. :0.01478 Length:19 Min. : 103 Min. :4.00
## 1st Qu.:0.04808 Class :character 1st Qu.: 169 1st Qu.:4.75
## Median :0.08981 Mode :character Median :1728 Median :5.50
## Mean :0.19027 Mean :1980 Mean :5.50
## 3rd Qu.:0.24256 3rd Qu.:3540 3rd Qu.:6.25
## Max. :0.98597 Max. :4362 Max. :7.00
## NA's :15 NA's :15
## YEAR_1 geometry
## Min. :2018 POLYGON :19
## 1st Qu.:2018 epsg:4326 : 0
## Median :2018 +proj=long...: 0
## Mean :2018
## 3rd Qu.:2018
## Max. :2018
## NA's :15
bins <- c(1, 500, 1000, 2000, 3000, 4000, 5000, 6000)
pal <- colorBin("Oranges", domain = cas_munic_stat_arroz_riego$PRODUCCION_TON_1, bins = bins)
mapa <- leaflet(data = cas_munic_stat_arroz_riego) %>%
addTiles() %>%
addPolygons(label = ~PRODUCCION_TON_1,
popup = ~MPIO_CNMBR,
fillColor = ~pal(PRODUCCION_TON_1),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 1.5,
fillOpacity = 0.5,
highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal, values = ~PRODUCCION_TON_1,
title = "Producción de arroz por riego [Ton] (2018)",
opacity = 1
)
mapa
datos2 %>% filter(SISTEMA_PRODUCTIVO == "ARROZ_SECANO_MECANIZADO", YEAR == "2018") -> arroz_secano_mecanizado
head(arroz_secano_mecanizado)
class(arroz_secano_mecanizado)
## [1] "data.frame"
datos4 <- datos3 %>% dplyr::select(MUNICIPIO, MPIO_CCDGO, YEAR, PRODUCCION_TON, `RENDIMIENTO_TON.HA`)
datos4
datos4 %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number)
head(datos4)
datos4 %>%
group_by(MPIO_CCDGO) %>%
mutate(Visit = 1:n()) %>%
gather("YEAR", "PRODUCCION_TON", "RENDIMIENTO_TON.HA", key = variable, value = number) %>%
unite(combi, variable, Visit) %>%
spread(combi, number) -> datos5
head(datos5)
tail(datos5)
cas_munic2 <- cas_munic
cas_munic_stat = left_join(cas_munic2, datos5, by="MPIO_CCDGO")
summary(cas_munic_stat)
## DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC
## Length:19 Length:19 Length:19 Length:19
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## MPIO_NAREA MPIO_NANO DPTO_CNMBR Shape_Leng
## Min. : 181.2 Min. :2017 Length:19 Min. :0.6746
## 1st Qu.: 590.1 1st Qu.:2017 Class :character 1st Qu.:1.3227
## Median : 1101.8 Median :2017 Mode :character Median :2.0349
## Mean : 2336.5 Mean :2017 Mean :3.0545
## 3rd Qu.: 2980.0 3rd Qu.:2017 3rd Qu.:4.2199
## Max. :12115.0 Max. :2017 Max. :8.5701
##
## Shape_Area MUNICIPIO PRODUCCION_TON_1 RENDIMIENTO_TON.HA_1
## Min. :0.01478 Length:19 Min. : 703 Min. :3.000
## 1st Qu.:0.04808 Class :character 1st Qu.: 2105 1st Qu.:3.000
## Median :0.08981 Mode :character Median : 2943 Median :3.000
## Mean :0.19027 Mean :22906 Mean :3.444
## 3rd Qu.:0.24256 3rd Qu.:33181 3rd Qu.:4.000
## Max. :0.98597 Max. :84389 Max. :4.000
## NA's :10 NA's :10
## YEAR_1 geometry
## Min. :2018 POLYGON :19
## 1st Qu.:2018 epsg:4326 : 0
## Median :2018 +proj=long...: 0
## Mean :2018
## 3rd Qu.:2018
## Max. :2018
## NA's :10
bins <- c(1, 5000, 10000, 20000, 40000, 60000, 80000, 100000)
pal2 <- colorBin("Greens", domain = cas_munic_stat$PRODUCCION_TON_1, bins = bins)
mapa2 <- leaflet(data = cas_munic_stat) %>%
addTiles() %>%
addPolygons(label = ~PRODUCCION_TON_1,
popup = ~MPIO_CNMBR,
fillColor = ~pal2(PRODUCCION_TON_1),
color = "#444444",
weight = 1,
smoothFactor = 0.5,
opacity = 1.5,
fillOpacity = 0.5,
highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = TRUE)
) %>%
addProviderTiles(providers$OpenStreetMap) %>%
addLegend("bottomright", pal = pal2, values = ~PRODUCCION_TON_1,
title = "Producción de arroz secano mecanizado [Ton] (2018)",
opacity = 1
)
mapa2
Para realizar una comparativa aproximada, se presentan los mapas obtenidos para el cultivo de arroz
mapa
mapa2