UNIVERSIDAD CENTRAL DEL ECUADOR

FACULTAD DE CIENCIAS ECONÓMICAS

INGENIERÍA EN ESTADÍSTICA

NOMBRE:

ELIZABETH AGUILAR

CURSO:

ES4-001

FECHA DE PUBLICACIÓN: 2024-06-26

DEBER #2

Abrir los archivos .shp en R, realizar un join entre las tablas de mapas (Provincias, Cantones y Parroquias) y el archivo de datos en Excel (Provincias, Cantones y Parroquias) y visualizar los mapas, Para realizar este items, realice la estandarización de las tablas de excel y pueda realizar el join de manera correcta.

Abrir los archivos .shp en R

  • Primero cargamos las siguientes librerias
library(sf)
## Warning: package 'sf' was built under R version 4.3.3
## Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.3.3
## 
## 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(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(tmap)
## Warning: package 'tmap' was built under R version 4.3.3
## Breaking News: tmap 3.x is retiring. Please test v4, e.g. with
## remotes::install_github('r-tmap/tmap')

*utilizaremos getwd y setwd para ver donde esta ubicado el proyecto y en que carpeta se va a trabajar

getwd()
## [1] "C:/SIG/PROYECTOS SIG/Trabajo-1-SIG/Base de datos"
setwd("C:\\SIG\\PROYECTOS SIG\\Trabajo-1-SIG\\Base de datos")
  • Luego de aver ubicado en la carpeta correspondiente procedemos a cargar nuestros archivos shape lo cual utilizaremos la funcion st_read que nos ayuda a cargar archivos shape o de tipo . geojson luego colocaremos el nombre de nuestros archivos en este caso se llaman Provincias, Cantones y Parroquias.
# Cargar archivos shapefile
provincias_sf <- st_read("Provincias.shx")
## Reading layer `Provincias' from data source 
##   `C:\SIG\PROYECTOS SIG\Trabajo-1-SIG\Base de datos\Provincias.shx' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 25 features and 2 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -732143.5 ymin: 9445216 xmax: 1147852 ymax: 10189400
## Projected CRS: WGS 84 / UTM zone 17S
cantones_sf <- st_read("Cantones.shx")
## Reading layer `Cantones' from data source 
##   `C:\SIG\PROYECTOS SIG\Trabajo-1-SIG\Base de datos\Cantones.shx' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 224 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -732143.5 ymin: 9445216 xmax: 1147852 ymax: 10189400
## Projected CRS: WGS 84 / UTM zone 17S
parroquias_sf <- st_read("Parroquias.shx")
## Reading layer `Parroquias' from data source 
##   `C:\SIG\PROYECTOS SIG\Trabajo-1-SIG\Base de datos\Parroquias.shx' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 1040 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -732143.5 ymin: 9445216 xmax: 1147852 ymax: 10189400
## Projected CRS: WGS 84 / UTM zone 17S

Realizar un join entre las tablas de mapas (Provincias, Cantones y Parroquias) y visualizar los mapas

  • Aqui realizamos un join entre las tablas de Provincias y Cantones en este caso utilizaremos la funcion st_join ya que es un archivo shap esto nos ayuda a que cruce registros en base a sus coordenadas espaciales, en lugar de otros atributos.
# Realizar join entre provincias y cantones
mapas_sf <- st_join(provincias_sf, cantones_sf, by = "DPA_PROVIN")
  • Haremos el mismo paso pero ahora con parroquias
# Realizar join con parroquias
mapas2_sf <- st_join(mapas_sf, parroquias_sf, by = "DPA_PROVIN")

Visualizar mapas

PROVINCIAS

# Crear los mapas
plot(st_geometry(provincias_sf), axes=TRUE)

CANTONES

plot(st_geometry(cantones_sf), axes=TRUE)

PARROQUIAS

plot(st_geometry(parroquias_sf), axes=TRUE)

Realizar los ejemplos realizados en clases utilizando R

  • Haremos la seleccion de la region sierra
# Filtrar las provincias de la Sierra
sierra_provincias <- provincias_sf[provincias_sf$DPA_DESPRO %in% c("AZUAY", "BOLIVAR", "CAÑAR", "CARCHI", "COTOPAXI", "CHIMBORAZO", "IMBABURA", "LOJA", "PICHINCHA", "TUNGURAHUA"), ]
# Crear el mapa de la Sierra del Ecuador 
ggplot() +
  geom_sf(data = provincias_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa del Ecuador en gris claro
  geom_sf(data = sierra_provincias, aes(fill = DPA_DESPRO), color = "black", size = 0.5) +  # Provincias de la Sierra en colores específicos
  geom_sf_text(data = sierra_provincias, aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias de la Sierra
  labs(title = "Provincias de la Sierra del Ecuador") +
  theme_minimal()

  • Para poder visualizarse mejor la region sierra sacamos su perfil
# Crear el perfil de la Región Sierra del Ecuador
perfil_sierra <- ggplot() +
  geom_sf(data = sierra_provincias, aes(fill = "blue", color = "blue"), size = 0.5) +  # Rellenar y contornear las provincias de la Sierra en azul
  labs(title = "Perfil de la Región Sierra del Ecuador") +
  theme_minimal()

# Mostrar el gráfico
perfil_sierra

  • Ahora lo haremos con la provincia de la costa
# Filtrar las provincias de la Sierra
costa_provincias <- provincias_sf[provincias_sf$DPA_DESPRO %in% c("SANTO DOMINGO DE LOS TSACHILAS", "EL ORO", "ESMERALDAS", "MANABI", "LOS RIOS", "GUAYAS", "SANTA ELENA"), ]


# Crear el mapa de la Costa del Ecuador 
ggplot() +
  geom_sf(data = provincias_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa del Ecuador en gris claro
  geom_sf(data = costa_provincias, aes(fill = DPA_DESPRO), color = "black", size = 0.5) +  # Provincias de la Costa en colores específicos
  geom_sf_text(data = costa_provincias, aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias de la Costa
  labs(title = "Provincias de la Costa del Ecuador") +
  theme_minimal()

*Perfil de la costa

# Crear el perfil de la Región Costa del Ecuador
perfil_costa <- ggplot() +
  geom_sf(data = costa_provincias, aes(fill = "blue", color = "blue"), size = 0.5) +  # Rellenar y contornear las provincias de la Costa en azul
  labs(title = "Perfil de la Región Costa del Ecuador") +
  theme_minimal()

# Mostrar el gráfico
perfil_costa

*Haremos la union de estas dos Regiones

# Crear el mapa combinado de la Sierra y la Costa del Ecuador
ggplot() +
  geom_sf(data = provincias_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa del Ecuador en gris claro
  geom_sf(data = sierra_provincias, aes(fill = "Sierra"), color = "black", size = 0.5) +  # Provincias de la Sierra en colores específicos
  geom_sf(data = costa_provincias, aes(fill = "Costa"), color = "black", size = 0.5) +  # Provincias de la Costa en colores específicos
  geom_sf_text(data = sierra_provincias, aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias de la Sierra
  geom_sf_text(data = costa_provincias, aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias de la Costa
  scale_fill_manual(values = c("Sierra" = "blue", "Costa" = "green"), name = "Región") +
  labs(title = "Provincias de la Sierra y Costa del Ecuador") +
  theme_minimal()

*Combinamos las capas de sierra y costa para visualizar de un solo color

# Filtrar las provincias de la Sierra
sierra_provincias <- provincias_sf %>%
  filter(DPA_DESPRO %in% c("AZUAY", "BOLIVAR", "CAÑAR", "CARCHI", "COTOPAXI", "CHIMBORAZO", "IMBABURA", "LOJA", "PICHINCHA", "TUNGURAHUA"))

# Filtrar las provincias de la Costa
costa_provincias <- provincias_sf %>%
  filter(DPA_DESPRO %in% c("SANTO DOMINGO DE LOS TSACHILAS", "EL ORO", "ESMERALDAS", "MANABI", "LOS RIOS", "GUAYAS", "SANTA ELENA"))

# Combinar las provincias de la Sierra y la Costa
provincias_combined <- rbind(sierra_provincias, costa_provincias)

# Visualizar el mapa combinado con un solo color
ggplot() +
  geom_sf(data = provincias_sf, fill = "green", color = "black", size = 0.2) +  # Mapa del Ecuador en gris claro
  geom_sf(data = provincias_combined, fill = "blue", color = "black", size = 0.5) +  # Provincias combinadas en un solo color
  geom_sf_text(data = provincias_combined, aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias combinadas
  labs(title = "Provincias de la Sierra y Costa del Ecuador") +
  theme_minimal()

*Sacamos el perimetro de la costa y la sierra de acuerdo al ejemplo que hicimos anteriormente

# Filtrar las provincias de la Sierra
sierra_provincias1 <- provincias_sf %>%
  filter(DPA_DESPRO %in% c("AZUAY", "BOLIVAR", "CAÑAR", "CARCHI", "COTOPAXI", "CHIMBORAZO", "IMBABURA", "LOJA", "PICHINCHA", "TUNGURAHUA"))

# Filtrar las provincias de la Costa
costa_provincias1 <- provincias_sf %>%
  filter(DPA_DESPRO %in% c("SANTO DOMINGO DE LOS TSACHILAS", "EL ORO", "ESMERALDAS", "MANABI", "LOS RIOS", "GUAYAS", "SANTA ELENA"))

# Calcular el perímetro de las provincias de la Sierra y la Costa
sierra_provincias1$perimetro <- st_length(st_cast(sierra_provincias1, "MULTILINESTRING"))
costa_provincias1$perimetro <- st_length(st_cast(costa_provincias1, "MULTILINESTRING"))

*Selecionamos la Provincia de esmeraldas

# Filtrar la provincia con DPA_PROVIN = 8 (Pichincha)
provincia_8 <- provincias_sf %>%
  filter(DPA_PROVIN == "08")

# Visualizar el mapa de la provincia seleccionada
ggplot() +
  geom_sf(data = provincias_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa del Ecuador en gris claro
  geom_sf(data = provincia_8, aes(fill = DPA_DESPRO), color = "black", size = 0.5) +  # Provincia filtrada en color específico
  geom_sf_text(data = provincia_8, aes(label = DPA_DESPRO), size = 3, color = "black", check_overlap = TRUE) +  # Etiqueta de la provincia seleccionada
  labs(title = "Provincia de Pichincha (DPA_PROVIN = 08)") +
  theme_minimal()

*Visualizar la provincia de esmeraldas y Quito

# Seleccionar los cantones según los criterios especificados
cantones_seleccionados <- cantones_sf %>%
  filter(DPA_PROVIN == "08" | DPA_CANTON == "1701")

# Visualizar el mapa de los cantones seleccionados
ggplot() +
  geom_sf(data = cantones_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa de todos los cantones en gris claro
  geom_sf(data = cantones_seleccionados, aes(fill = DPA_CANTON), color = "black", size = 0.5) +  # Cantones seleccionados en colores específicos
  geom_sf_text(data = filter(cantones_sf, DPA_PROVIN == "08"), aes(label = DPA_PROVIN), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de la provincia 08
  labs(title = "Cantones seleccionados (DPA_PROVIN=08 OR DPA_CANTON=1701)") +
  theme_minimal()

*Hacer el contorno del mapa mas gruesos(lineas)

# Crear el mapa
a <- ggplot() +
  geom_sf(data = provincias_sf, fill = "pink", color = "black", size = 1) +  # Ajustar el tamaño de las líneas aquí (size = 1)
  labs(title = "Mapa de Ecuador") +
  theme_minimal()

# Mostrar el mapa
print(a)

  • Seleccionamos la provincia de Esmeraldas y el canton Quito pero tambien queremos mostrar los cantones que terminen en 01
# Filtrar los cantones según las condiciones especificadas
cantones_filtrados <- cantones_sf %>%
  filter(DPA_PROVIN == '08' | DPA_CANTON == '1701' | grepl('01$', DPA_CANTON))

# Visualizar el mapa con ggplot2
ggplot() +
  geom_sf(data = cantones_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa de todos los cantones en gris claro
  geom_sf(data = cantones_filtrados, aes(fill = DPA_CANTON), color = "black", size = 0.5) +  # Cantones filtrados en colores específicos
  geom_sf_text(data = cantones_filtrados, aes(label = DPA_CANTON), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de los cantones filtrados
  labs(title = "Cantones específicos del Ecuador") +
  theme_minimal()

  • Sacamos el area de cantones para realizar otro ejercico que requiere de areas
cantones_sf <- st_transform(cantones_sf, crs = 32717)
cantones_sf$area_m2 <- st_area(cantones_sf)
cantones_sf$area_km2 <- cantones_sf$area_m2 / 1e6
print(head(cantones_sf))
## Simple feature collection with 6 features and 5 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: 682311.4 ymin: 9756425 xmax: 739865.1 ymax: 9872842
## Projected CRS: WGS 84 / UTM zone 17S
##   DPA_CANTON DPA_DESCAN DPA_PROVIN                       geometry
## 1       0201   GUARANDA         02 MULTIPOLYGON (((710807.6 98...
## 2       0202  CHILLANES         02 MULTIPOLYGON (((720530.2 97...
## 3       0203     CHIMBO         02 MULTIPOLYGON (((711141.9 98...
## 4       0204  ECHEANDIA         02 MULTIPOLYGON (((700585.5 98...
## 5       0205 SAN MIGUEL         02 MULTIPOLYGON (((721746.3 98...
## 6       0206     CALUMA         02 MULTIPOLYGON (((696532.6 98...
##            area_m2        area_km2
## 1 1891837946 [m^2] 1891.8379 [m^2]
## 2  662432538 [m^2]  662.4325 [m^2]
## 3  261250674 [m^2]  261.2507 [m^2]
## 4  230614466 [m^2]  230.6145 [m^2]
## 5  573169817 [m^2]  573.1698 [m^2]
## 6  176849577 [m^2]  176.8496 [m^2]
  • Ahora si realizamos el ejercicio de buscar el area mayor a 5000 y area menor que 10000
# Filtrar los cantones según los criterios especificados
cantones_filtrados <- cantones_sf %>%
  filter(DPA_PROVIN == 8 |
         DPA_CANTON == 1701 |
         grepl("01$", DPA_CANTON) |
         (as.numeric(area_km2) > 5000 & as.numeric(area_km2) < 10000))

# Visualizar el mapa con ggplot2
ggplot() +
  geom_sf(data = cantones_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa de todos los cantones en gris claro
  geom_sf(data = cantones_filtrados, aes(fill = DPA_CANTON), color = "black", size = 0.5) +  # Cantones filtrados en colores específicos
  geom_sf_text(data = cantones_filtrados, aes(label = DPA_CANTON), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de los cantones filtrados
  labs(title = "Cantones Filtrados del Ecuador") +
  theme_minimal()

  • Haremos la interseccion de las Provincias de PICHINCHA, CUENCA Y GUAYAS
# Filtrar para hacer la interseccion de  las provincias de Pichincha, Cuenca y Guayas
provincias_filtradas <- provincias_sf %>%
  filter(DPA_DESPRO %in% c("PICHINCHA", "AZUAY", "GUAYAS"))

# Visualizar el mapa con ggplot2
ggplot() +
  geom_sf(data = provincias_sf, fill = "gray90", color = "gray50", size = 0.2) +  # Mapa de todas las provincias en gris claro
  geom_sf(data = provincias_filtradas, aes(fill = DPA_DESPRO), color = "black", size = 0.5) +  # Provincias filtradas en colores específicos
  geom_sf_text(data = provincias_filtradas, aes(label = DPA_DESPRO), size = 3, color = "black", check_overlap = TRUE) +  # Etiquetas de las provincias filtradas
  labs(title = "Provincias de Pichincha, Azuay (Cuenca) y Guayas") +
  theme_minimal()