1. INTRODUCCION

Este es el segundo R Markdown Notebook para el curso Geomatica Basica 2023. Este mismo ilustra cómo hacer mapas temáticos que muestren la participación municipal de los dos grupos de cultivos más importantes para un departamento determinado, en nuestro caso Risaralda. Usaremos como fuente principal los archivos csv guardados en la libreta EVA, así como un shapefile de municipios obtenido en clase.

2. CONFIGURACION

Esta sera la configuracion utilizada para la lectura y analisis de los archivos de interes

#run the following lines from the command line: #install.packages(‘dplyr’) #install.packages(‘readxl’) #install.packages(’sf)

library(sf)
## Warning: package 'sf' was built under R version 4.2.3
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)

3.

list.files("C:/Cuaderno1/datos", pattern=c('csv'))
## [1] "co.csv"                      "OTROS_PERMANENTES2018.csv"  
## [3] "TUBERCULOSYPLATANOS2018.csv"
list.files("C:/Cuaderno1/MUNICIPIOS.shp")
## character(0)
(OTROS_PERMANENTES2018 = read_csv("C:/Cuaderno1/datos/OTROS_PERMANENTES2018.csv", show_col_types = FALSE))
## # A tibble: 14 × 4
##    COD_MUN MUNICIPIO           GRUPO_CUL         max_prod
##      <dbl> <chr>               <chr>                <dbl>
##  1   66075 BALBOA              OTROS PERMANENTES   192273
##  2   66687 SANTUARIO           OTROS PERMANENTES    98273
##  3   66400 LA VIRGINIA         OTROS PERMANENTES    26029
##  4   66088 BELEN DE UMBRIA     OTROS PERMANENTES    10139
##  5   66001 PEREIRA             OTROS PERMANENTES     9742
##  6   66572 PUEBLO RICO         OTROS PERMANENTES     8855
##  7   66594 QUINCHIA            OTROS PERMANENTES     5110
##  8   66682 SANTA ROSA DE CABAL OTROS PERMANENTES     4817
##  9   66440 MARSELLA            OTROS PERMANENTES     4612
## 10   66318 GUATICA             OTROS PERMANENTES     4096
## 11   66045 APIA                OTROS PERMANENTES     3716
## 12   66383 LA CELIA            OTROS PERMANENTES     3403
## 13   66456 MISTRATO            OTROS PERMANENTES     1336
## 14   66170 DOS QUEBRADAS       OTROS PERMANENTES     1260

Ahora leeremos los municipios de nuestro departamento

library(stringr)
# this shapefile must have a 4326 EPSG code
# this shapefile was obtained in class using QGIS
(mun.tmp =  st_read("C:/Cuaderno1/MUNICIPIOS.shp"))
## Reading layer `MUNICIPIOS' from data source `C:\Cuaderno1\MUNICIPIOS.shp' using driver `ESRI Shapefile'
## Simple feature collection with 14 features and 14 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.3595 ymin: 4.670201 xmax: -75.411 ymax: 5.475137
## Geodetic CRS:  WGS 84
## Simple feature collection with 14 features and 14 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.3595 ymin: 4.670201 xmax: -75.411 ymax: 5.475137
## Geodetic CRS:  WGS 84
## First 10 features:
##    fid ID_0 ISO   NAME_0 ID_1    NAME_1 ID_2          NAME_2    TYPE_2
## 1    1   53 COL Colombia   25 Risaralda  838            Apía Municipio
## 2    2   53 COL Colombia   25 Risaralda  839          Balboa Municipio
## 3    3   53 COL Colombia   25 Risaralda  840 Belén de Umbría Municipio
## 4    4   53 COL Colombia   25 Risaralda  841    Dosquebradas Municipio
## 5    5   53 COL Colombia   25 Risaralda  842         Guática Municipio
## 6    6   53 COL Colombia   25 Risaralda  843        La Celia Municipio
## 7    7   53 COL Colombia   25 Risaralda  844     La Virginia Municipio
## 8    8   53 COL Colombia   25 Risaralda  845        Marsella Municipio
## 9    9   53 COL Colombia   25 Risaralda  846        Mistrato Municipio
## 10  10   53 COL Colombia   25 Risaralda  847         Pereira Municipio
##       ENGTYPE_2 NL_NAME_2     VARNAME_2 AREA     AREA1
## 1  Municipality      <NA>          <NA>  255 255.15373
## 2  Municipality      <NA>          <NA>  149 148.75731
## 3  Municipality      <NA>          <NA>  175 175.30133
## 4  Municipality      <NA> Dos Quebradas   71  70.88232
## 5  Municipality      <NA>          <NA>  101 101.06658
## 6  Municipality      <NA>          <NA>   73  73.21514
## 7  Municipality      <NA>          <NA>   31  30.59224
## 8  Municipality      <NA>          <NA>  164 164.16023
## 9  Municipality      <NA>          <NA>  566 566.09186
## 10 Municipality      <NA>          <NA>  652 651.78611
##                          geometry
## 1  POLYGON ((-76.1697 4.965092...
## 2  POLYGON ((-76.0186 4.869299...
## 3  POLYGON ((-75.986 5.228999,...
## 4  POLYGON ((-75.6566 4.751701...
## 5  POLYGON ((-75.8978 5.264499...
## 6  POLYGON ((-76.05933 4.93264...
## 7  POLYGON ((-75.9068 4.920801...
## 8  POLYGON ((-75.723 4.921799,...
## 9  POLYGON ((-75.8978 5.264499...
## 10 POLYGON ((-75.7459 4.7087, ...
mun.tmp = mun.tmp %>% 
  mutate(NAME_1 = toupper(NAME_1),
         NAME_2 = toupper(NAME_2),
         
         NAME_2 = str_replace_all(NAME_2, 'Á', 'A'),
         NAME_2 = str_replace_all(NAME_2, 'É', 'E'),
         NAME_2 = str_replace_all(NAME_2, 'Í', 'I'),
         NAME_2 = str_replace_all(NAME_2, 'Ó', 'O'),
         NAME_2 = str_replace_all(NAME_2, 'Ú', 'U'),
         NAME_2 = str_replace_all(NAME_2, 'DOSQUEBRADAS', 'DOS QUEBRADAS'),)

Procedemos a limpiar con algunos atributos que son de interes:

# verifique la salida del objeto en el último fragmento y
# Cambiar los nombres de los atributos segun sus datos
mun.tmp %>% select(ID_0, ID_2, AREA1) -> municipios

Ahora, lea el archivo csv de las ciudades:

# Este archivo se descargó de simplemaps como se describe anteriormente
(cities = read_csv("C:/Cuaderno1/datos/co.csv"))
## Rows: 1104 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): city, country, iso2, admin_name, capital
## dbl (4): lat, lng, population, population_proper
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
## # A tibble: 1,104 × 9
##    city           lat   lng country  iso2  admin_name    capital popul…¹ popul…²
##    <chr>        <dbl> <dbl> <chr>    <chr> <chr>         <chr>     <dbl>   <dbl>
##  1 Bogotá        4.71 -74.1 Colombia CO    Bogotá        primary 7968095 7743955
##  2 Timbío        2.34 -76.7 Colombia CO    Cauca         minor   4444444 4444444
##  3 Medellín      6.23 -75.6 Colombia CO    Antioquia     admin   2529403 2529403
##  4 Cali          3.42 -76.5 Colombia CO    Valle del Ca… admin   2471474 2471474
##  5 Barranquilla 11.0  -74.8 Colombia CO    Atlántico     admin   1326588 1274250
##  6 Cartagena    10.4  -75.5 Colombia CO    Bolívar       admin   1036412 1036412
##  7 Bucaramanga   7.13 -73   Colombia CO    Santander     admin    870752  581130
##  8 Palermo       2.89 -75.4 Colombia CO    Huila         minor    800000  800000
##  9 Cúcuta        7.89 -72.5 Colombia CO    Norte de San… admin    750000  750000
## 10 Soledad      10.9  -74.8 Colombia CO    Atlántico     minor    698852  455796
## # … with 1,094 more rows, and abbreviated variable names ¹​population,
## #   ²​population_proper
# Convierta el marco de datos en un objeto de función simple
sf.cities <-  st_as_sf(x = cities, 
                        coords = c("lng", "lat"))

Observe el CRS faltante. Agreguemos el CRS usando el código EPSG:

st_crs(sf.cities) <- 4326

4. Subconjunto de datos relevantes para nuestro departamento

Como estamos interesados en un solo departamento, necesitamos crear una unión espacial:

# encontrar puntos (ciudades) dentro de polígonos (nuestros municipios)
sf.cities.joined <- st_join(sf.cities, municipios, join = st_within)

Para mostrar el objeto unido:

sf.cities.joined
## Simple feature collection with 1104 features and 10 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -81.7006 ymin: -4.2167 xmax: -67.4667 ymax: 13.3817
## Geodetic CRS:  WGS 84
## # A tibble: 1,104 × 11
##    city  country iso2  admin…¹ capital popul…² popul…³           geometry
##  * <chr> <chr>   <chr> <chr>   <chr>     <dbl>   <dbl>        <POINT [°]>
##  1 Bogo… Colomb… CO    Bogotá  primary 7968095 7743955  (-74.0722 4.7111)
##  2 Timb… Colomb… CO    Cauca   minor   4444444 4444444  (-76.6839 2.3445)
##  3 Mede… Colomb… CO    Antioq… admin   2529403 2529403  (-75.5906 6.2308)
##  4 Cali  Colomb… CO    Valle … admin   2471474 2471474  (-76.5222 3.4206)
##  5 Barr… Colomb… CO    Atlánt… admin   1326588 1274250 (-74.8019 10.9833)
##  6 Cart… Colomb… CO    Bolívar admin   1036412 1036412       (-75.5 10.4)
##  7 Buca… Colomb… CO    Santan… admin    870752  581130       (-73 7.1333)
##  8 Pale… Colomb… CO    Huila   minor    800000  800000  (-75.4375 2.8917)
##  9 Cúcu… Colomb… CO    Norte … admin    750000  750000  (-72.5039 7.8942)
## 10 Sole… Colomb… CO    Atlánt… minor    698852  455796   (-74.75 10.9167)
## # … with 1,094 more rows, 3 more variables: ID_0 <dbl>, ID_2 <dbl>,
## #   AREA1 <dbl>, and abbreviated variable names ¹​admin_name, ²​population,
## #   ³​population_proper

Tenga en cuenta que obtuvimos un marco de datos sf con cada fila de ciudades anexadas con las columnas de nuestros municipios. Las ciudades ubicadas en un departamento diferente tienen muchas NAs.

Ahora, vamos a filtrar las filas que corresponden a nuestro departamento (en este caso Risaralda):

risaralda.cities = dplyr::filter(sf.cities.joined, admin_name=='Risaralda')
risaralda.cities 
## Simple feature collection with 14 features and 10 fields
## Geometry type: POINT
## Dimension:     XY
## Bounding box:  xmin: -76.1667 ymin: 4.8143 xmax: -75.6167 ymax: 5.3379
## Geodetic CRS:  WGS 84
## # A tibble: 14 × 11
##    city  country iso2  admin…¹ capital popul…² popul…³          geometry
##  * <chr> <chr>   <chr> <chr>   <chr>     <dbl>   <dbl>       <POINT [°]>
##  1 Pere… Colomb… CO    Risara… admin    590554  590554 (-75.6946 4.8143)
##  2 Dosq… Colomb… CO    Risara… minor    179301  179301 (-75.6833 4.8333)
##  3 Sant… Colomb… CO    Risara… minor     73028   73028 (-75.6167 4.8667)
##  4 Quin… Colomb… CO    Risara… minor     34005   34005 (-75.7296 5.3379)
##  5 La V… Colomb… CO    Risara… minor     32330   32330 (-75.8333 4.9167)
##  6 Mars… Colomb… CO    Risara… minor     24131   24131   (-75.75 4.9167)
##  7 Belé… Colomb… CO    Risara… minor     21450   21450    (-75.8667 5.2)
##  8 Mist… Colomb… CO    Risara… minor     16203   16203    (-75.8833 5.3)
##  9 Guát… Colomb… CO    Risara… minor     15306   15306    (-75.8 5.3167)
## 10 Pueb… Colomb… CO    Risara… minor     14429   14429   (-76.1667 5.25)
## 11 Sant… Colomb… CO    Risara… minor     11787   11787 (-75.9623 5.0725)
## 12 Apía  Colomb… CO    Risara… minor     10707   10707      (-75.95 5.1)
## 13 La C… Colomb… CO    Risara… minor      9000    9000 (-76.0039 5.0019)
## 14 Balb… Colomb… CO    Risara… minor      6333    6333   (-75.95 4.9167)
## # … with 3 more variables: ID_0 <dbl>, ID_2 <dbl>, AREA1 <dbl>, and abbreviated
## #   variable names ¹​admin_name, ²​population, ³​population_proper
class(risaralda.cities$geometry)
## [1] "sfc_POINT" "sfc"

Obtuvimos – ciudades que estan localizadas en Risaralda

5. Mapa para el grupo de cultivos más importante

#Corremos las siguientes lineas con las librerias necesarias:
#install.packages("tmap")
#install.packages("ggplot2")
#install.packages("classInt")
library(tmap)
## Warning: package 'tmap' was built under R version 4.2.3
library(ggplot2)
library(ggrepel)
## Warning: package 'ggrepel' was built under R version 4.2.3
library(classInt)
## Warning: package 'classInt' was built under R version 4.2.3

Recordemos que el objeto municipios no tiene atributos EVA. En cambio, los objetos otros permanentes, que contienen estadísticas de cultivo, es un objeto no espacial. Nuestra próxima tarea es unir el objeto de estadísticas a los objetos espaciales para tener los datos relevantes en un solo objeto.

Para poder realizar la unión, necesitamos una clave compartida, es decir, un atributo común. En este caso lo tenemos en ambos objetos, ese es el código municipal.

### se deben verificar con los nuestros datos
class(OTROS_PERMANENTES2018$COD_MUN)
## [1] "numeric"
class(OTROS_PERMANENTES2018$MUNICIPIO)
## [1] "character"
class(OTROS_PERMANENTES2018$GRUPO_CUL)
## [1] "character"
class(municipios$ID_2)
## [1] "numeric"

Por esta razon debemos arreglar esto:

municipios$ID_2 = as.character(municipios$ID_2)

Ahora estamos listos para realizar la union

munic_otros_permanentes = left_join(mun.tmp, OTROS_PERMANENTES2018,
                                    by = c("NAME_2" = "MUNICIPIO"))

unique(mun.tmp$NAME_2)
##  [1] "APIA"                "BALBOA"              "BELEN DE UMBRIA"    
##  [4] "DOS QUEBRADAS"       "GUATICA"             "LA CELIA"           
##  [7] "LA VIRGINIA"         "MARSELLA"            "MISTRATO"           
## [10] "PEREIRA"             "PUEBLO RICO"         "QUINCHIA"           
## [13] "SANTA ROSA DE CABAL" "SANTUARIO"
unique(OTROS_PERMANENTES2018$MUNICIPIO)
##  [1] "BALBOA"              "SANTUARIO"           "LA VIRGINIA"        
##  [4] "BELEN DE UMBRIA"     "PEREIRA"             "PUEBLO RICO"        
##  [7] "QUINCHIA"            "SANTA ROSA DE CABAL" "MARSELLA"           
## [10] "GUATICA"             "APIA"                "LA CELIA"           
## [13] "MISTRATO"            "DOS QUEBRADAS"
sum(is.na(munic_otros_permanentes$max_prod))
## [1] 0
munic_otros_permanentes
## Simple feature collection with 14 features and 17 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.3595 ymin: 4.670201 xmax: -75.411 ymax: 5.475137
## Geodetic CRS:  WGS 84
## First 10 features:
##    fid ID_0 ISO   NAME_0 ID_1    NAME_1 ID_2          NAME_2    TYPE_2
## 1    1   53 COL Colombia   25 RISARALDA  838            APIA Municipio
## 2    2   53 COL Colombia   25 RISARALDA  839          BALBOA Municipio
## 3    3   53 COL Colombia   25 RISARALDA  840 BELEN DE UMBRIA Municipio
## 4    4   53 COL Colombia   25 RISARALDA  841   DOS QUEBRADAS Municipio
## 5    5   53 COL Colombia   25 RISARALDA  842         GUATICA Municipio
## 6    6   53 COL Colombia   25 RISARALDA  843        LA CELIA Municipio
## 7    7   53 COL Colombia   25 RISARALDA  844     LA VIRGINIA Municipio
## 8    8   53 COL Colombia   25 RISARALDA  845        MARSELLA Municipio
## 9    9   53 COL Colombia   25 RISARALDA  846        MISTRATO Municipio
## 10  10   53 COL Colombia   25 RISARALDA  847         PEREIRA Municipio
##       ENGTYPE_2 NL_NAME_2     VARNAME_2 AREA     AREA1 COD_MUN
## 1  Municipality      <NA>          <NA>  255 255.15373   66045
## 2  Municipality      <NA>          <NA>  149 148.75731   66075
## 3  Municipality      <NA>          <NA>  175 175.30133   66088
## 4  Municipality      <NA> Dos Quebradas   71  70.88232   66170
## 5  Municipality      <NA>          <NA>  101 101.06658   66318
## 6  Municipality      <NA>          <NA>   73  73.21514   66383
## 7  Municipality      <NA>          <NA>   31  30.59224   66400
## 8  Municipality      <NA>          <NA>  164 164.16023   66440
## 9  Municipality      <NA>          <NA>  566 566.09186   66456
## 10 Municipality      <NA>          <NA>  652 651.78611   66001
##            GRUPO_CUL max_prod                       geometry
## 1  OTROS PERMANENTES     3716 POLYGON ((-76.1697 4.965092...
## 2  OTROS PERMANENTES   192273 POLYGON ((-76.0186 4.869299...
## 3  OTROS PERMANENTES    10139 POLYGON ((-75.986 5.228999,...
## 4  OTROS PERMANENTES     1260 POLYGON ((-75.6566 4.751701...
## 5  OTROS PERMANENTES     4096 POLYGON ((-75.8978 5.264499...
## 6  OTROS PERMANENTES     3403 POLYGON ((-76.05933 4.93264...
## 7  OTROS PERMANENTES    26029 POLYGON ((-75.9068 4.920801...
## 8  OTROS PERMANENTES     4612 POLYGON ((-75.723 4.921799,...
## 9  OTROS PERMANENTES     1336 POLYGON ((-75.8978 5.264499...
## 10 OTROS PERMANENTES     9742 POLYGON ((-75.7459 4.7087, ...
breaks <- classIntervals(OTROS_PERMANENTES2018$max_prod, n = 6, style = 'fisher')
#Etiquetas
lab_vec <- vector(length = length(breaks$brks)-1)
rounded_breaks <- round(breaks$brks,2)
lab_vec[1] <- paste0('[', rounded_breaks[1],' - ', rounded_breaks[2],']')
for(i in 2:(length(breaks$brks) - 1)){
  lab_vec[i] <- paste0('(',rounded_breaks[i], ' - ', rounded_breaks[i+1], ']')}

Ahora un mapa estatico:

munic_otros_permanentes <-  munic_otros_permanentes %>%
  mutate(faktor_class = factor(cut(max_prod, breaks$brks, include.lowest = T), labels = lab_vec))
# cambiar el nombre del atributo
munic_otros_permanentes$max_prod = munic_otros_permanentes$faktor_class
# obtener las coordenadas de los centroides
munic_otros_permanentes$mid <- sf::st_centroid(munic_otros_permanentes$geometry)
# Obtener los valores de longitud
LONG = st_coordinates(munic_otros_permanentes$mid)[,1]
# Obtener los valores de latitud
LAT = st_coordinates(munic_otros_permanentes$mid)[,2]
ggplot(data = munic_otros_permanentes) +
   geom_sf(aes(fill = max_prod)) +
   geom_label_repel(aes(x = LONG, y = LAT, label = risaralda.cities$city), 
                    label.padding =     unit(0.05,"lines"),  
                    label.r = unit(0.025, "lines"),
                    label.size = 0.05)

6. Segundo mapa para el segundo grupo mas grande de cultivos

Aquí, utilizaremos los datos de EVA para el grupo de “-”, que representa la segunda mayor producción en 2018 en Risaralda.

Necesitamos realizar pasos similares a los anteriores:

(TUBERCULOSYPLATANOS2018 = read_csv("C:/Cuaderno1/datos/TUBERCULOSYPLATANOS2018.csv",show_col_types = FALSE))
## # A tibble: 14 × 4
##    COD_MUN MUNICIPIO           GRUPO_CUL             max_prod
##      <dbl> <chr>               <chr>                    <dbl>
##  1   66088 BELEN DE UMBRIA     TUBERCULOS Y PLATANOS    36600
##  2   66682 SANTA ROSA DE CABAL TUBERCULOS Y PLATANOS    35102
##  3   66440 MARSELLA            TUBERCULOS Y PLATANOS    17501
##  4   66045 APIA                TUBERCULOS Y PLATANOS    15332
##  5   66075 BALBOA              TUBERCULOS Y PLATANOS    13244
##  6   66001 PEREIRA             TUBERCULOS Y PLATANOS    12592
##  7   66318 GUATICA             TUBERCULOS Y PLATANOS     9730
##  8   66383 LA CELIA            TUBERCULOS Y PLATANOS     8029
##  9   66687 SANTUARIO           TUBERCULOS Y PLATANOS     5647
## 10   66594 QUINCHIA            TUBERCULOS Y PLATANOS     4600
## 11   66170 DOS QUEBRADAS       TUBERCULOS Y PLATANOS     4430
## 12   66456 MISTRATO            TUBERCULOS Y PLATANOS     2190
## 13   66572 PUEBLO RICO         TUBERCULOS Y PLATANOS      540
## 14   66400 LA VIRGINIA         TUBERCULOS Y PLATANOS      498
TUBERCULOSYPLATANOS2018$COD_MUN = as.character(TUBERCULOSYPLATANOS2018$COD_MUN)
MUNIC_TUBERCULOSYPLATANOS2018 = left_join(mun.tmp, TUBERCULOSYPLATANOS2018,
                                    by = c("NAME_2" = "MUNICIPIO"))
MUNIC_TUBERCULOSYPLATANOS2018
## Simple feature collection with 14 features and 17 fields
## Geometry type: POLYGON
## Dimension:     XY
## Bounding box:  xmin: -76.3595 ymin: 4.670201 xmax: -75.411 ymax: 5.475137
## Geodetic CRS:  WGS 84
## First 10 features:
##    fid ID_0 ISO   NAME_0 ID_1    NAME_1 ID_2          NAME_2    TYPE_2
## 1    1   53 COL Colombia   25 RISARALDA  838            APIA Municipio
## 2    2   53 COL Colombia   25 RISARALDA  839          BALBOA Municipio
## 3    3   53 COL Colombia   25 RISARALDA  840 BELEN DE UMBRIA Municipio
## 4    4   53 COL Colombia   25 RISARALDA  841   DOS QUEBRADAS Municipio
## 5    5   53 COL Colombia   25 RISARALDA  842         GUATICA Municipio
## 6    6   53 COL Colombia   25 RISARALDA  843        LA CELIA Municipio
## 7    7   53 COL Colombia   25 RISARALDA  844     LA VIRGINIA Municipio
## 8    8   53 COL Colombia   25 RISARALDA  845        MARSELLA Municipio
## 9    9   53 COL Colombia   25 RISARALDA  846        MISTRATO Municipio
## 10  10   53 COL Colombia   25 RISARALDA  847         PEREIRA Municipio
##       ENGTYPE_2 NL_NAME_2     VARNAME_2 AREA     AREA1 COD_MUN
## 1  Municipality      <NA>          <NA>  255 255.15373   66045
## 2  Municipality      <NA>          <NA>  149 148.75731   66075
## 3  Municipality      <NA>          <NA>  175 175.30133   66088
## 4  Municipality      <NA> Dos Quebradas   71  70.88232   66170
## 5  Municipality      <NA>          <NA>  101 101.06658   66318
## 6  Municipality      <NA>          <NA>   73  73.21514   66383
## 7  Municipality      <NA>          <NA>   31  30.59224   66400
## 8  Municipality      <NA>          <NA>  164 164.16023   66440
## 9  Municipality      <NA>          <NA>  566 566.09186   66456
## 10 Municipality      <NA>          <NA>  652 651.78611   66001
##                GRUPO_CUL max_prod                       geometry
## 1  TUBERCULOS Y PLATANOS    15332 POLYGON ((-76.1697 4.965092...
## 2  TUBERCULOS Y PLATANOS    13244 POLYGON ((-76.0186 4.869299...
## 3  TUBERCULOS Y PLATANOS    36600 POLYGON ((-75.986 5.228999,...
## 4  TUBERCULOS Y PLATANOS     4430 POLYGON ((-75.6566 4.751701...
## 5  TUBERCULOS Y PLATANOS     9730 POLYGON ((-75.8978 5.264499...
## 6  TUBERCULOS Y PLATANOS     8029 POLYGON ((-76.05933 4.93264...
## 7  TUBERCULOS Y PLATANOS      498 POLYGON ((-75.9068 4.920801...
## 8  TUBERCULOS Y PLATANOS    17501 POLYGON ((-75.723 4.921799,...
## 9  TUBERCULOS Y PLATANOS     2190 POLYGON ((-75.8978 5.264499...
## 10 TUBERCULOS Y PLATANOS    12592 POLYGON ((-75.7459 4.7087, ...
# mirar este ejemplo https://r-tmap.github.io/tmap-book/layout.html
facet = "max_prod"
oleag_map =  
  tm_shape(MUNIC_TUBERCULOSYPLATANOS2018) + tm_polygons(facet) + tm_text(text = "NAME_2", size = 0.7, fontfamily = "sans") +
  tm_shape(risaralda.cities) + tm_symbols(shape = 2, col = "red", size = 0.20) +
  tm_credits("Data source: UPRA (2020)", fontface = "bold") +
  tm_layout(main.title = "Produccion de Tuberculos y Platanos 2018",
            main.title.fontface = "bold.italic", 
            legend.title.fontfamily = "monospace") +
  tm_scale_bar(position = c("left", "bottom"))
tmap_mode("view")
## tmap mode set to interactive viewing

Modo tmap configurado para visualizacion interactiva

oleag_map
## Credits not supported in view mode.
## Symbol shapes other than circles or icons are not supported in view mode.

Los créditos no se admiten en el modo de visualización.

Las formas de símbolos que no sean círculos o iconos no se admiten en el modo de visualización.

7. Bibliografia

Cuaderno realizado en base a: Lizarazo, I. Reading and processing municipal agricultural statistics for 2020.https://rpubs.com/ials2un/thematic_maps_v2.

sessionInfo()
## R version 4.2.2 (2022-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 22621)
## 
## Matrix products: default
## 
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8  LC_CTYPE=Spanish_Colombia.utf8   
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C                     
## [5] LC_TIME=Spanish_Colombia.utf8    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] classInt_0.4-9 ggrepel_0.9.3  ggplot2_3.4.1  tmap_3.3-3     stringr_1.5.0 
## [6] readr_2.1.4    dplyr_1.1.0    sf_1.0-12     
## 
## loaded via a namespace (and not attached):
##  [1] sass_0.4.5              bit64_4.0.5             vroom_1.6.3            
##  [4] jsonlite_1.8.4          viridisLite_0.4.1       bslib_0.4.2            
##  [7] highr_0.10              sp_1.6-0                yaml_2.3.7             
## [10] pillar_1.8.1            lattice_0.20-45         glue_1.6.2             
## [13] digest_0.6.31           RColorBrewer_1.1-3      leaflet.providers_1.9.0
## [16] colorspace_2.1-0        htmltools_0.5.4         XML_3.99-0.14          
## [19] pkgconfig_2.0.3         raster_3.6-20           stars_0.6-1            
## [22] s2_1.1.3                scales_1.2.1            terra_1.7-29           
## [25] tzdb_0.3.0              tibble_3.1.8            proxy_0.4-27           
## [28] farver_2.1.1            generics_0.1.3          ellipsis_0.3.2         
## [31] cachem_1.0.6            withr_2.5.0             leafsync_0.1.0         
## [34] cli_3.6.0               mime_0.12               magrittr_2.0.3         
## [37] crayon_1.5.2            evaluate_0.20           fansi_1.0.4            
## [40] lwgeom_0.2-11           class_7.3-20            tools_4.2.2            
## [43] hms_1.1.2               lifecycle_1.0.3         munsell_0.5.0          
## [46] compiler_4.2.2          jquerylib_0.1.4         e1071_1.7-13           
## [49] rlang_1.0.6             units_0.8-2             grid_4.2.2             
## [52] tmaptools_3.1-1         dichromat_2.0-0.1       rstudioapi_0.14        
## [55] htmlwidgets_1.6.2       crosstalk_1.2.0         leafem_0.2.0           
## [58] base64enc_0.1-3         rmarkdown_2.20          wk_0.7.2               
## [61] gtable_0.3.1            codetools_0.2-18        abind_1.4-5            
## [64] DBI_1.1.3               markdown_1.5            R6_2.5.1               
## [67] knitr_1.42              fastmap_1.1.0           bit_4.0.5              
## [70] utf8_1.2.3              KernSmooth_2.23-20      stringi_1.7.12         
## [73] parallel_4.2.2          Rcpp_1.0.10             vctrs_0.5.2            
## [76] png_0.1-8               leaflet_2.1.2           tidyselect_1.2.0       
## [79] xfun_0.37