Este cuaderno presenta mapas temáticos del departamento de Boyacá, con los mapas temáticos podemos mostrar información específica sobre cualquier tema para que podamos ilustrar la información con la audiencia que la vamos a compartir. Hay varias técnicas utilizadas en el mapeo temático que vamos a revisar a través de este cuaderno.

library(tidyverse)
library(readxl)
library(rgeos)
library(raster)
library(sf)
library(cartography)
library(SpatialPosition)
library(dplyr)

Ahora cargamos los datos, que previamente fueron filtrados y copiados a un nuevo archivo para nuestro departamento a partir de los datos de Necesidades Básicas Insatisfechas (NBI) del Censo Nacional de Población y Vivienda 2018 que se pueden descargar aquí.

NBI_Boyaca <- read_excel("C:/Users/David Perdomo/Desktop/NBI_Boyacá.xlsx")
head(NBI_Boyaca)

Debido a que la columna COD es una variable de tipo double, nescesitamos convertirla a tipo character para lo cual usamos la funcion as.character y observamos de nuevo los primeros atributos del data.frame nbi:

NBI_Boyaca$COD <- as.character(NBI_Boyaca$COD)

head(NBI_Boyaca)

Usamos la funcion slice para clasificar el municipio con mayor porcentaje de NBI, guardamos los datos en un obtejo de tipo data.frame que llamamos max_nbi:

max_nbi <- NBI_Boyaca %>%
  slice(which.max(NBI)) 

max_nbi

obtuvimos que el mayor porcentaje de NBI se registro en el municipio de PAYA.

Busquemos cual es el municipio con el porcentaje mas bajo de NBI: guardamos los datos en un objeto de tipo data.frame que llamamos min_nbi:

min_nbi <- NBI_Boyaca %>%
  slice(which.min(NBI))

min_nbi

el menor porcentaje de NBI se registro en el municipio de SOGAMOSO. Clasifiquemos los municipios por NBI en orden descendente: Usamos la funcion arrange para clasificar los municipios en orden descendente de acuerdo al porcentaje de NBI, almacenamos los nuevos datos en un objeto de tipo data.frame, que llamamos desc_nbi:

desc_nbi <- NBI_Boyaca %>%
  arrange(desc(NBI))

desc_nbi

Leemos los datos del Marco Geoestadistico Departamental descargado de DANE Geoportal, usando la libreria sf y los almacenamos en un nuevo data.frame que llamaremos BOY_munic:

munic <- st_read("C:/Users/David Perdomo/Desktop/Geomatica/15_BOYACA/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\David Perdomo\Desktop\Geomatica\15_BOYACA\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
Simple feature collection with 123 features and 9 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: -74.66496 ymin: 4.655196 xmax: -71.94885 ymax: 7.055557
geographic CRS: WGS 84

Observamos los primeros Municipios usando la funcion head, e indicando que queremos leer el data.frame BOY_munic y usamos el signo $ para indicar que solo queremos ver los datos de la columna MPIO_CCDGO, la cual contiene los nombres municipales.

head(BOY_munic$MPIO_CNMBR)
[1] "TUNJA"     "ALMEIDA"   "AQUITANIA" "ARCABUCO"  "BELÉN"    
[6] "BERBEO"   

Usamos left_join para unir los municipios y los datos de NBI en un data.frame que llamamos nbi_munic.

NBI_Munic <- left_join(munic, NBI_Boyaca, by=c("MPIO_CCDGO"="COD"))
head(NBI_Munic)
Simple feature collection with 6 features and 20 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: -73.51402 ymin: 4.904038 xmax: -72.65243 ymax: 6.098348
geographic CRS: WGS 84
  DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR
1         15      15001      TUNJA
2         15      15022    ALMEIDA
3         15      15047  AQUITANIA
4         15      15051   ARCABUCO
5         15      15087      BELÉN
6         15      15090     BERBEO
                       MPIO_CRSLC MPIO_NAREA MPIO_NANO
1                            1541  119.68957      2017
2                            1908   57.67212      2017
3                            1789  942.14660      2017
4                            1856  137.89859      2017
5                            1756  163.08822      2017
6 Ordenanza 28 de Abril 9 de 1913   58.01301      2017
  DPTO_CNMBR Shape_Leng  Shape_Area COD_DEP  DEPTO COD_MUNI
1     BOYACÁ  0.5723744 0.009766301      15 BOYACÁ        1
2     BOYACÁ  0.3484692 0.004701759      15 BOYACÁ       22
3     BOYACÁ  1.8003115 0.076843504      15 BOYACÁ       47
4     BOYACÁ  0.7527090 0.011256738      15 BOYACÁ       51
5     BOYACÁ  0.6293489 0.013314920      15 BOYACÁ       87
6     BOYACÁ  0.4291743 0.004730850      15 BOYACÁ       90
       MUNI       NBI   MISERIA  VIVIENDA SERVICIOS
1     TUNJA  3.596644 0.2936770 0.3326341 0.2373389
2   ALMEIDA  7.458913 0.7585335 1.5802781 0.8217446
3 AQUITANIA 12.864358 1.6738817 1.7099567 3.6147186
4  ARCABUCO  8.940701 0.4773270 0.4589682 0.1835873
5     BELÉN  7.334062 0.6965310 0.3414368 1.0243103
6    BERBEO 15.048544 2.7045770 5.7558946 1.7337032
  HACINAMIENTO INASISTENCIA ECONOMIA
1    0.9835181    0.6209170 1.769853
2    1.3274336    1.2010114 3.286979
3    3.4632035    1.4357864 4.523810
4    2.2948412    4.3143015 2.166330
5    2.0349631    0.5736138 4.110899
6    1.0402219    1.3176144 8.460472
                        geometry
1 POLYGON ((-73.34014 5.58308...
2 POLYGON ((-73.36793 5.01349...
3 POLYGON ((-72.76242 5.63856...
4 POLYGON ((-73.50487 5.84347...
5 POLYGON ((-72.91692 6.08612...
6 POLYGON ((-73.0677 5.27048,...

Comprobemos que los datos se han unido de la forma correcta comprobando el NBI; aquí usamos un comando un poco poco común dplyr :: select; este se usa porque select es el nombre de una función en algunos de los paquetes que estamos usando aquí, por lo que necesitamos especificar que queremos usar la función select del paquete dplyr. Después de eso, configuraremos el sistema de referencia para nuestros datos.

NBI_Munic %>%
  dplyr::select(COD_MUNI, MPIO_CCDGO, NBI)  ->  Check_nbi_munic

Check_nbi_munic
Simple feature collection with 123 features and 3 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: -74.66496 ymin: 4.655196 xmax: -71.94885 ymax: 7.055557
geographic CRS: WGS 84
First 10 features:
   COD_MUNI MPIO_CCDGO       NBI                       geometry
1         1      15001  3.596644 POLYGON ((-73.34014 5.58308...
2        22      15022  7.458913 POLYGON ((-73.36793 5.01349...
3        47      15047 12.864358 POLYGON ((-72.76242 5.63856...
4        51      15051  8.940701 POLYGON ((-73.50487 5.84347...
5        87      15087  7.334062 POLYGON ((-72.91692 6.08612...
6        90      15090 15.048544 POLYGON ((-73.0677 5.27048,...
7        92      15092 10.870712 POLYGON ((-72.81796 5.97422...
8        97      15097 19.059205 POLYGON ((-72.64907 6.43640...
9       104      15104 11.091234 POLYGON ((-73.34806 5.47411...
10      106      15106 16.005874 POLYGON ((-73.89118 5.73749...
NBI_Munic_Proj <- st_transform(NBI_Munic, crs = 3116)

Hagamos nuestro primer mapa usando la función getTiles para obtener el mapa base de OpenStreetMap, luego establecemos los márgenes para el gráfico y todas las etiquetas para visualizar el NBI con círculos rojos de diferentes tamaños, conocido como mapa de símbolos proporcionales o graduados.

Mun_osm <- getTiles(
x = NBI_Munic_Proj, 
type = "OpenStreetMap", 
zoom = 10,
cachedir = TRUE,
crop = FALSE
)
Discarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defsDiscarded datum WGS_1984 in CRS definitionDiscarded datum Unknown based on GRS80 ellipsoid in CRS definition,
 but +towgs84= values preservedDiscarded datum Unknown based on GRS80 ellipsoid in CRS definition,
 but +towgs84= values preservedDiscarded datum Unknown based on GRS80 ellipsoid in CRS definition,
 but +towgs84= values preserved
opar <- par(mar = c(0,0,1.2,0))
tilesLayer(x = Mun_osm)
plot(st_geometry(NBI_Munic_Proj), col = NA, border = "grey", add=TRUE)
propSymbolsLayer(
  x = NBI_Munic_Proj, 
  var = "NBI", 
  inches = 0.1, 
  col = "red",
  legend.pos = "topright",  
  legend.title.txt = "Total NBI",
  legend.frame = T,
  legend.style = "e"
)

layoutLayer(title = "NBI Distribución en Boyacá",
            sources = "Sources: DANE, 2018\n© OpenStreetMap",
            author = "Jorge Perdomo",
            frame = TRUE, north = FALSE, tabtitle = TRUE)

north(pos = "topleft")

Ahora no vamos a utilizar OpenStreetMap Background y trazar el NBI con diferentes intensidades de color, lo que también se conoce como mapeo de coropletas.


opar <- par(mar = c(0,0,1.2,0))

par(bg="grey90")

plot(st_geometry(NBI_Munic_Proj), col = NA, border = NA, bg = "#aadaff")

choroLayer(
  x = NBI_Munic_Proj, 
  var = "NBI",
  method = "geom",
  nclass=5,
  col = carto.pal(pal1 = "orange.pal", n1 = 5),
  border = "white", 
  lwd = 0.5,
  legend.pos = "topright", 
  legend.title.txt = "NBI",
  add = TRUE
) 

layoutLayer(title = "NBI Distribución en Boyacá", 
            sources = "Source: DANE, 2018",
            author = "Jorge Perdomo", 
            frame = TRUE, tabtitle = TRUE, col="black") 

north(pos = "topleft")

Ahora vamos a crear una nueva variable creando una nueva categoría llamada Pobreza usando las categorías Miseria y Hacinamiento.

NBI_Munic_Proj2 <- dplyr::mutate(NBI_Munic_Proj, poverty=ifelse(MISERIA > 20, "Extreme",                                              ifelse(HACINAMIENTO > 5, "High", "Intermediate")))

NBI_Munic_Proj2
Simple feature collection with 123 features and 21 fields
geometry type:  POLYGON
dimension:      XY
bbox:           xmin: 934932.9 ymin: 1006592 xmax: 1235253 ymax: 1272398
projected CRS:  MAGNA-SIRGAS / Colombia Bogota zone
First 10 features:
   DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR
1          15      15001      TUNJA
2          15      15022    ALMEIDA
3          15      15047  AQUITANIA
4          15      15051   ARCABUCO
5          15      15087      BELÉN
6          15      15090     BERBEO
7          15      15092  BETÉITIVA
8          15      15097    BOAVITA
9          15      15104     BOYACÁ
10         15      15106    BRICEÑO
                             MPIO_CRSLC MPIO_NAREA MPIO_NANO
1                                  1541  119.68957      2017
2                                  1908   57.67212      2017
3                                  1789  942.14660      2017
4                                  1856  137.89859      2017
5                                  1756  163.08822      2017
6       Ordenanza 28 de Abril 9 de 1913   58.01301      2017
7                                  1754  101.89955      2017
8                                  1613  145.30529      2017
9                                  1537   48.02287      2017
10 Ordenanza 14 del 25 de Julio de 1890   64.59970      2017
   DPTO_CNMBR Shape_Leng  Shape_Area COD_DEP  DEPTO COD_MUNI
1      BOYACÁ  0.5723744 0.009766301      15 BOYACÁ        1
2      BOYACÁ  0.3484692 0.004701759      15 BOYACÁ       22
3      BOYACÁ  1.8003115 0.076843504      15 BOYACÁ       47
4      BOYACÁ  0.7527090 0.011256738      15 BOYACÁ       51
5      BOYACÁ  0.6293489 0.013314920      15 BOYACÁ       87
6      BOYACÁ  0.4291743 0.004730850      15 BOYACÁ       90
7      BOYACÁ  0.4738184 0.008317810      15 BOYACÁ       92
8      BOYACÁ  0.6597822 0.011867743      15 BOYACÁ       97
9      BOYACÁ  0.3256140 0.003918022      15 BOYACÁ      104
10     BOYACÁ  0.4849753 0.005273255      15 BOYACÁ      106
        MUNI       NBI   MISERIA  VIVIENDA SERVICIOS
1      TUNJA  3.596644 0.2936770 0.3326341 0.2373389
2    ALMEIDA  7.458913 0.7585335 1.5802781 0.8217446
3  AQUITANIA 12.864358 1.6738817 1.7099567 3.6147186
4   ARCABUCO  8.940701 0.4773270 0.4589682 0.1835873
5      BELÉN  7.334062 0.6965310 0.3414368 1.0243103
6     BERBEO 15.048544 2.7045770 5.7558946 1.7337032
7  BETÉITIVA 10.870712 1.4775726 0.7915567 2.0580475
8    BOAVITA 19.059205 3.2643958 1.1962693 6.8329278
9     BOYACÁ 11.091234 0.8273703 0.7826476 0.8050089
10   BRICEÑO 16.005874 2.0558003 2.9858052 1.3215859
   HACINAMIENTO INASISTENCIA ECONOMIA
1     0.9835181    0.6209170 1.769853
2     1.3274336    1.2010114 3.286979
3     3.4632035    1.4357864 4.523810
4     2.2948412    4.3143015 2.166330
5     2.0349631    0.5736138 4.110899
6     1.0402219    1.3176144 8.460472
7     3.7994723    0.7387863 5.171504
8     7.3600973    0.8718573 6.792376
9     2.9964222    0.9838998 6.440072
10    4.4542340    0.3426334 9.495839
                         geometry      poverty
1  POLYGON ((1081699 1109184, ... Intermediate
2  POLYGON ((1078692 1046187, ... Intermediate
3  POLYGON ((1145704 1115432, ... Intermediate
4  POLYGON ((1063418 1137961, ... Intermediate
5  POLYGON ((1128481 1164899, ... Intermediate
6  POLYGON ((1111945 1074654, ... Intermediate
7  POLYGON ((1139466 1152547, ... Intermediate
8  POLYGON ((1158033 1203719, ...         High
9  POLYGON ((1080836 1097132, ... Intermediate
10 POLYGON ((1020639 1126211, ... Intermediate

Aquí vamos a hacer un mapa usando las categorías NBI y Pobreza juntas.

library(sf)
library(cartography)

opar <- par(mar = c(0,0,1.2,0))

plot(st_geometry(NBI_Munic_Proj2), col="#f2efe9", border="#b38e43", bg = "#aad3df", 
     lwd = 0.5)

propSymbolsTypoLayer(
  x = NBI_Munic_Proj2, 
  var = "NBI", 
  inches = 0.3,
  symbols = "square",
  border = "white",
  lwd = .5,
  legend.var.pos = c(1050000, 1350000), 
  legend.var.title.txt = "NBI",
  var2 = "poverty",
  legend.var2.values.order = c("Extreme", "High", 
                               "Intermediate"),
  col = carto.pal(pal1 = "multi.pal", n1 = 3),
  legend.var2.pos = c(1050000, 1200000), 
  legend.var2.title.txt = "Poverty"
) 
layoutLayer(title="NBI y distribución de la pobreza en Boyacá", 
            author = "Jorge Perdomo", 
            sources = "Source: DANE, 2018", 
            scale = 1, tabtitle = TRUE, frame = TRUE)

north(pos = "topleft")

Ahora tracemos el NBI con los nombres de los municipios de nuestro departamento.


opar <- par(mar = c(0,0,1.2,0))

par(bg="grey25")

plot(st_geometry(NBI_Munic_Proj2), col = "#e4e9de", border = "darkseagreen4", bg = "grey75")

choroLayer(
  x = NBI_Munic_Proj2, 
  var = "NBI",
  method = "geom",
  nclass=5,
  col = carto.pal(pal1 = "orange.pal", n1 = 5),
  border = "white", 
  lwd = 0.5,
  legend.pos = "topright", 
  legend.title.txt = "NBI",
  add = TRUE
) 

labelLayer(
  x = NBI_Munic_Proj2, 
  txt = "MUNI", 
  col= "white", 
  cex = 0.3, 
  font = 4,
  halo = TRUE, 
  bg = "grey25", 
  r = 0.05, 
  overlap = FALSE, 
  show.lines = FALSE
)

layoutLayer(
  title = "Municipios y NBI de Boyacá", 
  sources = "Source: DANE, 2018",  
  author = "Jorge Perdomo", 
  frame = TRUE,
  tabtitle = TRUE, 
  theme = "taupe.pal"
) 
north(pos = "topleft")

LS0tDQp0aXRsZTogImNhcnRvZ3JhZsOtYSB0ZW3DoXRpY2EgZW4gZWwgZGVwYXJ0YW1lbnRvIGRlIEJveWFjw6EiDQphdXRob3I6ICJKb3JnZSBQZXJkb21vIg0KZGF0ZTogIjUgZGUgTm92aWVtYnJlIGRlIDIwMjAiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KRXN0ZSBjdWFkZXJubyBwcmVzZW50YSBtYXBhcyB0ZW3DoXRpY29zIGRlbCBkZXBhcnRhbWVudG8gZGUgQm95YWPDoSwgY29uIGxvcyBtYXBhcyB0ZW3DoXRpY29zIHBvZGVtb3MgbW9zdHJhciBpbmZvcm1hY2nDs24gZXNwZWPDrWZpY2Egc29icmUgY3VhbHF1aWVyIHRlbWEgcGFyYSBxdWUgcG9kYW1vcyBpbHVzdHJhciBsYSBpbmZvcm1hY2nDs24gY29uIGxhIGF1ZGllbmNpYSBxdWUgbGEgdmFtb3MgYSBjb21wYXJ0aXIuIEhheSB2YXJpYXMgdMOpY25pY2FzIHV0aWxpemFkYXMgZW4gZWwgbWFwZW8gdGVtw6F0aWNvIHF1ZSB2YW1vcyBhIHJldmlzYXIgYSB0cmF2w6lzIGRlIGVzdGUgY3VhZGVybm8uDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KHJnZW9zKQ0KbGlicmFyeShyYXN0ZXIpDQpsaWJyYXJ5KHNmKQ0KbGlicmFyeShjYXJ0b2dyYXBoeSkNCmxpYnJhcnkoU3BhdGlhbFBvc2l0aW9uKQ0KbGlicmFyeShkcGx5cikNCmBgYA0KQWhvcmEgY2FyZ2Ftb3MgbG9zIGRhdG9zLCBxdWUgcHJldmlhbWVudGUgZnVlcm9uIGZpbHRyYWRvcyB5IGNvcGlhZG9zIGEgdW4gbnVldm8gYXJjaGl2byBwYXJhIG51ZXN0cm8gZGVwYXJ0YW1lbnRvIGEgcGFydGlyIGRlIGxvcyBkYXRvcyBkZSBOZWNlc2lkYWRlcyBCw6FzaWNhcyBJbnNhdGlzZmVjaGFzIChOQkkpIGRlbCBDZW5zbyBOYWNpb25hbCBkZSBQb2JsYWNpw7NuIHkgVml2aWVuZGEgMjAxOCBxdWUgc2UgcHVlZGVuIGRlc2NhcmdhciBhcXXDrS4NCmBgYHtyfQ0KTkJJX0JveWFjYSA8LSByZWFkX2V4Y2VsKCJDOi9Vc2Vycy9EYXZpZCBQZXJkb21vL0Rlc2t0b3AvTkJJX0JveWFjw6EueGxzeCIpDQpgYGANCmBgYHtyfQ0KaGVhZChOQklfQm95YWNhKQ0KYGBgDQpEZWJpZG8gYSBxdWUgbGEgY29sdW1uYSBDT0QgZXMgdW5hIHZhcmlhYmxlIGRlIHRpcG8gZG91YmxlLCBuZXNjZXNpdGFtb3MgY29udmVydGlybGEgYSB0aXBvIGNoYXJhY3RlciBwYXJhIGxvIGN1YWwgdXNhbW9zIGxhIGZ1bmNpb24gYXMuY2hhcmFjdGVyIHkgb2JzZXJ2YW1vcyBkZSBudWV2byBsb3MgcHJpbWVyb3MgYXRyaWJ1dG9zIGRlbCBkYXRhLmZyYW1lIG5iaToNCmBgYHtyfQ0KTkJJX0JveWFjYSRDT0QgPC0gYXMuY2hhcmFjdGVyKE5CSV9Cb3lhY2EkQ09EKQ0KDQpoZWFkKE5CSV9Cb3lhY2EpDQpgYGANClVzYW1vcyBsYSBmdW5jaW9uIHNsaWNlIHBhcmEgY2xhc2lmaWNhciBlbCBtdW5pY2lwaW8gY29uIG1heW9yIHBvcmNlbnRhamUgZGUgTkJJLCBndWFyZGFtb3MgbG9zIGRhdG9zIGVuIHVuIG9idGVqbyBkZSB0aXBvIGRhdGEuZnJhbWUgcXVlIGxsYW1hbW9zIG1heF9uYmk6DQpgYGB7cn0NCm1heF9uYmkgPC0gTkJJX0JveWFjYSAlPiUNCiAgc2xpY2Uod2hpY2gubWF4KE5CSSkpIA0KDQptYXhfbmJpDQpgYGANCm9idHV2aW1vcyBxdWUgZWwgbWF5b3IgcG9yY2VudGFqZSBkZSBOQkkgc2UgcmVnaXN0cm8gZW4gZWwgbXVuaWNpcGlvIGRlIFBBWUEuDQoNCkJ1c3F1ZW1vcyBjdWFsIGVzIGVsIG11bmljaXBpbyBjb24gZWwgcG9yY2VudGFqZSBtYXMgYmFqbyBkZSBOQkk6ICBndWFyZGFtb3MgbG9zIGRhdG9zIGVuIHVuIG9iamV0byBkZSB0aXBvIGRhdGEuZnJhbWUgcXVlIGxsYW1hbW9zIG1pbl9uYmk6DQpgYGB7cn0NCm1pbl9uYmkgPC0gTkJJX0JveWFjYSAlPiUNCiAgc2xpY2Uod2hpY2gubWluKE5CSSkpDQoNCm1pbl9uYmkNCmBgYA0KZWwgbWVub3IgcG9yY2VudGFqZSBkZSBOQkkgc2UgcmVnaXN0cm8gZW4gZWwgbXVuaWNpcGlvIGRlIFNPR0FNT1NPLg0KQ2xhc2lmaXF1ZW1vcyBsb3MgbXVuaWNpcGlvcyBwb3IgTkJJIGVuIG9yZGVuIGRlc2NlbmRlbnRlOiBVc2Ftb3MgbGEgZnVuY2lvbiBhcnJhbmdlIHBhcmEgY2xhc2lmaWNhciBsb3MgbXVuaWNpcGlvcyBlbiBvcmRlbiBkZXNjZW5kZW50ZSBkZSBhY3VlcmRvIGFsIHBvcmNlbnRhamUgZGUgTkJJLCBhbG1hY2VuYW1vcyBsb3MgbnVldm9zIGRhdG9zIGVuIHVuIG9iamV0byBkZSB0aXBvIGRhdGEuZnJhbWUsIHF1ZSBsbGFtYW1vcyBkZXNjX25iaToNCmBgYHtyfQ0KZGVzY19uYmkgPC0gTkJJX0JveWFjYSAlPiUNCiAgYXJyYW5nZShkZXNjKE5CSSkpDQoNCmRlc2NfbmJpDQpgYGANCkxlZW1vcyBsb3MgZGF0b3MgZGVsIE1hcmNvIEdlb2VzdGFkaXN0aWNvIERlcGFydGFtZW50YWwgZGVzY2FyZ2FkbyBkZSBEQU5FIEdlb3BvcnRhbCwgdXNhbmRvIGxhIGxpYnJlcmlhIHNmIHkgbG9zIGFsbWFjZW5hbW9zIGVuIHVuIG51ZXZvIGRhdGEuZnJhbWUgcXVlIGxsYW1hcmVtb3MgQk9ZX211bmljOg0KYGBge3J9DQptdW5pYyA8LSBzdF9yZWFkKCJDOi9Vc2Vycy9EYXZpZCBQZXJkb21vL0Rlc2t0b3AvR2VvbWF0aWNhLzE1X0JPWUFDQS9BRE1JTklTVFJBVElWTy9NR05fTVBJT19QT0xJVElDTy5zaHAiKQ0KYGBgDQpPYnNlcnZhbW9zIGxvcyBwcmltZXJvcyBNdW5pY2lwaW9zIHVzYW5kbyBsYSBmdW5jaW9uIGhlYWQsIGUgaW5kaWNhbmRvIHF1ZSBxdWVyZW1vcyBsZWVyIGVsIGRhdGEuZnJhbWUgQk9ZX211bmljIHkgdXNhbW9zIGVsIHNpZ25vICQgcGFyYSBpbmRpY2FyIHF1ZSBzb2xvIHF1ZXJlbW9zIHZlciBsb3MgZGF0b3MgZGUgbGEgY29sdW1uYSBNUElPX0NDREdPLCBsYSBjdWFsIGNvbnRpZW5lIGxvcyBub21icmVzIG11bmljaXBhbGVzLg0KYGBge3J9DQpoZWFkKEJPWV9tdW5pYyRNUElPX0NOTUJSKQ0KYGBgDQpVc2Ftb3MgbGVmdF9qb2luIHBhcmEgdW5pciBsb3MgbXVuaWNpcGlvcyB5IGxvcyBkYXRvcyBkZSBOQkkgZW4gdW4gZGF0YS5mcmFtZSBxdWUgbGxhbWFtb3MgbmJpX211bmljLg0KYGBge3J9DQpOQklfTXVuaWMgPC0gbGVmdF9qb2luKG11bmljLCBOQklfQm95YWNhLCBieT1jKCJNUElPX0NDREdPIj0iQ09EIikpDQpoZWFkKE5CSV9NdW5pYykNCmBgYA0KQ29tcHJvYmVtb3MgcXVlIGxvcyBkYXRvcyBzZSBoYW4gdW5pZG8gZGUgbGEgZm9ybWEgY29ycmVjdGEgY29tcHJvYmFuZG8gZWwgTkJJOyBhcXXDrSB1c2Ftb3MgdW4gY29tYW5kbyB1biBwb2NvIHBvY28gY29tw7puIGRwbHlyIDo6IHNlbGVjdDsgZXN0ZSBzZSB1c2EgcG9ycXVlIHNlbGVjdCBlcyBlbCBub21icmUgZGUgdW5hIGZ1bmNpw7NuIGVuIGFsZ3Vub3MgZGUgbG9zIHBhcXVldGVzIHF1ZSBlc3RhbW9zIHVzYW5kbyBhcXXDrSwgcG9yIGxvIHF1ZSBuZWNlc2l0YW1vcyBlc3BlY2lmaWNhciBxdWUgcXVlcmVtb3MgdXNhciBsYSBmdW5jacOzbiBzZWxlY3QgZGVsIHBhcXVldGUgZHBseXIuIERlc3B1w6lzIGRlIGVzbywgY29uZmlndXJhcmVtb3MgZWwgc2lzdGVtYSBkZSByZWZlcmVuY2lhIHBhcmEgbnVlc3Ryb3MgZGF0b3MuDQpgYGB7cn0NCk5CSV9NdW5pYyAlPiUNCiAgZHBseXI6OnNlbGVjdChDT0RfTVVOSSwgTVBJT19DQ0RHTywgTkJJKSAgLT4gIENoZWNrX25iaV9tdW5pYw0KDQpDaGVja19uYmlfbXVuaWMNCmBgYA0KYGBge3J9DQpOQklfTXVuaWNfUHJvaiA8LSBzdF90cmFuc2Zvcm0oTkJJX011bmljLCBjcnMgPSAzMTE2KQ0KYGBgDQpIYWdhbW9zIG51ZXN0cm8gcHJpbWVyIG1hcGEgdXNhbmRvIGxhIGZ1bmNpw7NuIGdldFRpbGVzIHBhcmEgb2J0ZW5lciBlbCBtYXBhIGJhc2UgZGUgT3BlblN0cmVldE1hcCwgbHVlZ28gZXN0YWJsZWNlbW9zIGxvcyBtw6FyZ2VuZXMgcGFyYSBlbCBncsOhZmljbyB5IHRvZGFzIGxhcyBldGlxdWV0YXMgcGFyYSB2aXN1YWxpemFyIGVsIE5CSSBjb24gY8OtcmN1bG9zIHJvam9zIGRlIGRpZmVyZW50ZXMgdGFtYcOxb3MsIGNvbm9jaWRvIGNvbW8gbWFwYSBkZSBzw61tYm9sb3MgcHJvcG9yY2lvbmFsZXMgbyBncmFkdWFkb3MuDQpgYGB7cn0NCk11bl9vc20gPC0gZ2V0VGlsZXMoDQp4ID0gTkJJX011bmljX1Byb2osIA0KdHlwZSA9ICJPcGVuU3RyZWV0TWFwIiwgDQp6b29tID0gMTAsDQpjYWNoZWRpciA9IFRSVUUsDQpjcm9wID0gRkFMU0UNCikNCg0Kb3BhciA8LSBwYXIobWFyID0gYygwLDAsMS4yLDApKQ0KdGlsZXNMYXllcih4ID0gTXVuX29zbSkNCnBsb3Qoc3RfZ2VvbWV0cnkoTkJJX011bmljX1Byb2opLCBjb2wgPSBOQSwgYm9yZGVyID0gImdyZXkiLCBhZGQ9VFJVRSkNCnByb3BTeW1ib2xzTGF5ZXIoDQogIHggPSBOQklfTXVuaWNfUHJvaiwgDQogIHZhciA9ICJOQkkiLCANCiAgaW5jaGVzID0gMC4xLCANCiAgY29sID0gInJlZCIsDQogIGxlZ2VuZC5wb3MgPSAidG9wcmlnaHQiLCAgDQogIGxlZ2VuZC50aXRsZS50eHQgPSAiVG90YWwgTkJJIiwNCiAgbGVnZW5kLmZyYW1lID0gVCwNCiAgbGVnZW5kLnN0eWxlID0gImUiDQopDQoNCmxheW91dExheWVyKHRpdGxlID0gIk5CSSBEaXN0cmlidWNpw7NuIGVuIEJveWFjw6EiLA0KICAgICAgICAgICAgc291cmNlcyA9ICJTb3VyY2VzOiBEQU5FLCAyMDE4XG7CqSBPcGVuU3RyZWV0TWFwIiwNCiAgICAgICAgICAgIGF1dGhvciA9ICJKb3JnZSBQZXJkb21vIiwNCiAgICAgICAgICAgIGZyYW1lID0gVFJVRSwgbm9ydGggPSBGQUxTRSwgdGFidGl0bGUgPSBUUlVFKQ0KDQpub3J0aChwb3MgPSAidG9wbGVmdCIpDQpgYGANCkFob3JhIG5vIHZhbW9zIGEgdXRpbGl6YXIgT3BlblN0cmVldE1hcCBCYWNrZ3JvdW5kIHkgdHJhemFyIGVsIE5CSSBjb24gZGlmZXJlbnRlcyBpbnRlbnNpZGFkZXMgZGUgY29sb3IsIGxvIHF1ZSB0YW1iacOpbiBzZSBjb25vY2UgY29tbyBtYXBlbyBkZSBjb3JvcGxldGFzLg0KYGBge3J9DQoNCm9wYXIgPC0gcGFyKG1hciA9IGMoMCwwLDEuMiwwKSkNCg0KcGFyKGJnPSJncmV5OTAiKQ0KDQpwbG90KHN0X2dlb21ldHJ5KE5CSV9NdW5pY19Qcm9qKSwgY29sID0gTkEsIGJvcmRlciA9IE5BLCBiZyA9ICIjYWFkYWZmIikNCg0KY2hvcm9MYXllcigNCiAgeCA9IE5CSV9NdW5pY19Qcm9qLCANCiAgdmFyID0gIk5CSSIsDQogIG1ldGhvZCA9ICJnZW9tIiwNCiAgbmNsYXNzPTUsDQogIGNvbCA9IGNhcnRvLnBhbChwYWwxID0gIm9yYW5nZS5wYWwiLCBuMSA9IDUpLA0KICBib3JkZXIgPSAid2hpdGUiLCANCiAgbHdkID0gMC41LA0KICBsZWdlbmQucG9zID0gInRvcHJpZ2h0IiwgDQogIGxlZ2VuZC50aXRsZS50eHQgPSAiTkJJIiwNCiAgYWRkID0gVFJVRQ0KKSANCg0KbGF5b3V0TGF5ZXIodGl0bGUgPSAiTkJJIERpc3RyaWJ1Y2nDs24gZW4gQm95YWPDoSIsIA0KICAgICAgICAgICAgc291cmNlcyA9ICJTb3VyY2U6IERBTkUsIDIwMTgiLA0KICAgICAgICAgICAgYXV0aG9yID0gIkpvcmdlIFBlcmRvbW8iLCANCiAgICAgICAgICAgIGZyYW1lID0gVFJVRSwgdGFidGl0bGUgPSBUUlVFLCBjb2w9ImJsYWNrIikgDQoNCm5vcnRoKHBvcyA9ICJ0b3BsZWZ0IikNCmBgYA0KQWhvcmEgdmFtb3MgYSBjcmVhciB1bmEgbnVldmEgdmFyaWFibGUgY3JlYW5kbyB1bmEgbnVldmEgY2F0ZWdvcsOtYSBsbGFtYWRhIFBvYnJlemEgdXNhbmRvIGxhcyBjYXRlZ29yw61hcyBNaXNlcmlhIHkgSGFjaW5hbWllbnRvLg0KYGBge3J9DQpOQklfTXVuaWNfUHJvajIgPC0gZHBseXI6Om11dGF0ZShOQklfTXVuaWNfUHJvaiwgcG92ZXJ0eT1pZmVsc2UoTUlTRVJJQSA+IDIwLCAiRXh0cmVtZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShIQUNJTkFNSUVOVE8gPiA1LCAiSGlnaCIsICJJbnRlcm1lZGlhdGUiKSkpDQoNCk5CSV9NdW5pY19Qcm9qMg0KYGBgDQpBcXXDrSB2YW1vcyBhIGhhY2VyIHVuIG1hcGEgdXNhbmRvIGxhcyBjYXRlZ29yw61hcyBOQkkgeSBQb2JyZXphIGp1bnRhcy4NCmBgYHtyfQ0KbGlicmFyeShzZikNCmxpYnJhcnkoY2FydG9ncmFwaHkpDQoNCm9wYXIgPC0gcGFyKG1hciA9IGMoMCwwLDEuMiwwKSkNCg0KcGxvdChzdF9nZW9tZXRyeShOQklfTXVuaWNfUHJvajIpLCBjb2w9IiNmMmVmZTkiLCBib3JkZXI9IiNiMzhlNDMiLCBiZyA9ICIjYWFkM2RmIiwgDQogICAgIGx3ZCA9IDAuNSkNCg0KcHJvcFN5bWJvbHNUeXBvTGF5ZXIoDQogIHggPSBOQklfTXVuaWNfUHJvajIsIA0KICB2YXIgPSAiTkJJIiwgDQogIGluY2hlcyA9IDAuMywNCiAgc3ltYm9scyA9ICJzcXVhcmUiLA0KICBib3JkZXIgPSAid2hpdGUiLA0KICBsd2QgPSAuNSwNCiAgbGVnZW5kLnZhci5wb3MgPSBjKDEwNTAwMDAsIDEzNTAwMDApLCANCiAgbGVnZW5kLnZhci50aXRsZS50eHQgPSAiTkJJIiwNCiAgdmFyMiA9ICJwb3ZlcnR5IiwNCiAgbGVnZW5kLnZhcjIudmFsdWVzLm9yZGVyID0gYygiRXh0cmVtZSIsICJIaWdoIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybWVkaWF0ZSIpLA0KICBjb2wgPSBjYXJ0by5wYWwocGFsMSA9ICJtdWx0aS5wYWwiLCBuMSA9IDMpLA0KICBsZWdlbmQudmFyMi5wb3MgPSBjKDEwNTAwMDAsIDEyMDAwMDApLCANCiAgbGVnZW5kLnZhcjIudGl0bGUudHh0ID0gIlBvdmVydHkiDQopIA0KbGF5b3V0TGF5ZXIodGl0bGU9Ik5CSSB5IGRpc3RyaWJ1Y2nDs24gZGUgbGEgcG9icmV6YSBlbiBCb3lhY8OhIiwgDQogICAgICAgICAgICBhdXRob3IgPSAiSm9yZ2UgUGVyZG9tbyIsIA0KICAgICAgICAgICAgc291cmNlcyA9ICJTb3VyY2U6IERBTkUsIDIwMTgiLCANCiAgICAgICAgICAgIHNjYWxlID0gMSwgdGFidGl0bGUgPSBUUlVFLCBmcmFtZSA9IFRSVUUpDQoNCm5vcnRoKHBvcyA9ICJ0b3BsZWZ0IikNCmBgYA0KQWhvcmEgdHJhY2Vtb3MgZWwgTkJJIGNvbiBsb3Mgbm9tYnJlcyBkZSBsb3MgbXVuaWNpcGlvcyBkZSBudWVzdHJvIGRlcGFydGFtZW50by4NCmBgYHtyfQ0KDQpvcGFyIDwtIHBhcihtYXIgPSBjKDAsMCwxLjIsMCkpDQoNCnBhcihiZz0iZ3JleTI1IikNCg0KcGxvdChzdF9nZW9tZXRyeShOQklfTXVuaWNfUHJvajIpLCBjb2wgPSAiI2U0ZTlkZSIsIGJvcmRlciA9ICJkYXJrc2VhZ3JlZW40IiwgYmcgPSAiZ3JleTc1IikNCg0KY2hvcm9MYXllcigNCiAgeCA9IE5CSV9NdW5pY19Qcm9qMiwgDQogIHZhciA9ICJOQkkiLA0KICBtZXRob2QgPSAiZ2VvbSIsDQogIG5jbGFzcz01LA0KICBjb2wgPSBjYXJ0by5wYWwocGFsMSA9ICJvcmFuZ2UucGFsIiwgbjEgPSA1KSwNCiAgYm9yZGVyID0gIndoaXRlIiwgDQogIGx3ZCA9IDAuNSwNCiAgbGVnZW5kLnBvcyA9ICJ0b3ByaWdodCIsIA0KICBsZWdlbmQudGl0bGUudHh0ID0gIk5CSSIsDQogIGFkZCA9IFRSVUUNCikgDQoNCmxhYmVsTGF5ZXIoDQogIHggPSBOQklfTXVuaWNfUHJvajIsIA0KICB0eHQgPSAiTVVOSSIsIA0KICBjb2w9ICJ3aGl0ZSIsIA0KICBjZXggPSAwLjMsIA0KICBmb250ID0gNCwNCiAgaGFsbyA9IFRSVUUsIA0KICBiZyA9ICJncmV5MjUiLCANCiAgciA9IDAuMDUsIA0KICBvdmVybGFwID0gRkFMU0UsIA0KICBzaG93LmxpbmVzID0gRkFMU0UNCikNCg0KbGF5b3V0TGF5ZXIoDQogIHRpdGxlID0gIk11bmljaXBpb3MgeSBOQkkgZGUgQm95YWPDoSIsIA0KICBzb3VyY2VzID0gIlNvdXJjZTogREFORSwgMjAxOCIsICANCiAgYXV0aG9yID0gIkpvcmdlIFBlcmRvbW8iLCANCiAgZnJhbWUgPSBUUlVFLA0KICB0YWJ0aXRsZSA9IFRSVUUsIA0KICB0aGVtZSA9ICJ0YXVwZS5wYWwiDQopIA0Kbm9ydGgocG9zID0gInRvcGxlZnQiKQ0KYGBgDQoNCg0K