7  Operaciones con datos espaciales

7.0.1 Guía de Estudiante: Operaciones con Datos Espaciales Vectoriales usando sf

7.0.1.1 Introducción

En esta sección, exploraremos las operaciones con datos espaciales vectoriales utilizando la librería sf en R. Explicaremos detalladamente las funciones empleadas en las clases y actividades, describiendo sus argumentos y los tipos de objetos que requieren. Esta guía está diseñada para proporcionar una comprensión profunda de cómo manipular y analizar datos espaciales vectoriales.

7.0.1.2 Funciones Básicas de sf

7.0.1.2.1 st_read()

La función st_read() se utiliza para leer archivos espaciales y convertirlos en objetos sf. Acepta diferentes formatos de archivos, incluidos shapefiles (.shp).

library(sf)
Linking to GEOS 3.11.2, GDAL 3.8.2, PROJ 9.3.1; sf_use_s2() is TRUE
# Leer shapefile
shp <- st_read("../data/shp/LIMITE_PROVINCIAL_CONALI_CNE_2022.shp")
Reading layer `LIMITE_PROVINCIAL_CONALI_CNE_2022' from data source 
  `C:\Users\alex_ergostats\Documents\geo_stats_2024_nb\data\shp\LIMITE_PROVINCIAL_CONALI_CNE_2022.shp' 
  using driver `ESRI Shapefile'
Simple feature collection with 25 features and 2 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -732167.8 ymin: 9445216 xmax: 1147852 ymax: 10189370
Projected CRS: WGS 84 / UTM zone 17S

Argumentos: - dsn: La ruta al archivo o base de datos. - layer: El nombre de la capa si el archivo contiene múltiples capas.

7.0.1.2.2 st_as_sf()

La función st_as_sf() convierte un objeto de datos tabulares (data.frame o tibble) en un objeto espacial sf.

library(readxl)
library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.2     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.5.0     ✔ tibble    3.2.1
✔ lubridate 1.9.2     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(sf)

# Importar datos tabulados
metro_data <- read_excel("../data/Metro_quito_usuarios_enero_2024.xlsx")

# Convertir datos tabulados en objeto sf
metro_sf <- st_as_sf(metro_data, coords = c("Long", "Lat"))

Argumentos: - x: El objeto a convertir. - coords: Un vector de nombres de las columnas que contienen las coordenadas.

7.0.1.2.3 st_crs()

La función st_crs() establece o recupera el sistema de referencia de coordenadas (CRS) de un objeto sf.

# Asignar un sistema de referencia de coordenadas geográficas (EPSG 4326)
st_crs(metro_sf) <- 4326

Argumentos:

  • x: El objeto sf.
  • value: El CRS a asignar.
7.0.1.2.4 st_transform()

La función st_transform() transforma las coordenadas de un objeto sf a un nuevo sistema de referencia de coordenadas (CRS).

# Transformar a un sistema de coordenadas proyectado (WGS84 UTM 17S EPSG 32717)
metro_32717 <- st_transform(metro_sf, 32717)

Argumentos:

  • x: El objeto sf a transformar.
  • crs: El nuevo CRS (puede ser un código EPSG o una definición de PROJ4).
7.0.1.2.5 st_union()

La función st_union() combina múltiples geometrías en una sola geometría.

# Disolver este shape
shp_disuelto <- st_union(shp)

Argumentos:

  • x: El objeto sf que contiene las geometrías a unir.
7.0.1.2.6 st_simplify()

La función st_simplify() reduce la complejidad de las geometrías, eliminando vértices innecesarios.

# Simplificar polígonos
shp_simplificado <- st_simplify(shp, dTolerance = 1000)

Argumentos:

  • x: El objeto sf que contiene las geometrías a simplificar.
  • dTolerance: La tolerancia para la simplificación (cuanto mayor es el valor, más simplificación se aplica).
7.0.1.2.7 st_centroid()

La función st_centroid() calcula el centroide de las geometrías.

# Obtener centroides
centroide <- st_centroid(shp_simplificado)
Warning: st_centroid assumes attributes are constant over geometries

Argumentos:

  • x: El objeto sf que contiene las geometrías.

Argumentos:

  • x: El primer objeto sf.
  • y: El segundo objeto sf con los atributos a unir.
  • join: El tipo de unión (por defecto es st_intersects).
7.0.1.2.8 sf_use_s2()

La función sf_use_s2() controla si las operaciones geométricas en sf utilizan la biblioteca s2.

# Desactivar el uso de s2 para cálculos de geometría en sf
sf_use_s2(FALSE)
Spherical geometry (s2) switched off

Argumentos:

  • use_s2: Un valor lógico que indica si se debe usar s2 (TRUE o FALSE).

7.0.1.3 Ejemplo Completo: Transformación y Visualización de Datos Espaciales

A continuación, presentamos un ejemplo completo de cómo leer, transformar y visualizar datos espaciales utilizando las funciones de sf y ggplot2.

library(sf)
library(tidyverse)
library(readxl)

# Desactivar el uso de s2 para cálculos de geometría en sf
sf_use_s2(FALSE)

# Leer los datos espaciales
datos <- read_sf("../data/shp/BC001_MERCADO_PLATAFORMA_A.shp")

# Leer el archivo Excel con las administraciones zonales y sus parroquias
admin_zones <- read_excel("../data/Administraciones_Zonales_Parroquias.xlsx")

# Leer los límites de las parroquias
datos_limites <- read_sf("../data/shp/PARROQUIAS_REF.shp")

# Unir los datos de los límites con las administraciones zonales
datos_limites <- datos_limites %>% 
  inner_join(admin_zones)
Joining with `by = join_by(dpa_parroq, dpa_despar)`
# Calcular los centroides de los datos de mercados
puntos <- datos %>% 
  st_centroid()
Warning: st_centroid assumes attributes are constant over geometries
Warning in st_centroid.sfc(st_geometry(x), of_largest_polygon =
of_largest_polygon): st_centroid does not give correct centroids for
longitude/latitude data
# Visualizar los límites de las parroquias y los puntos de los mercados
datos_limites %>% 
  ggplot() +
  geom_sf() +
  geom_sf(data = puntos, color = "blue")

7.0.1.4 Conclusión

En esta sección, hemos explorado varias funciones de la librería sf para manipular y analizar datos espaciales vectoriales. Desde la lectura de archivos espaciales hasta la transformación de sistemas de referencia de coordenadas y la simplificación de geometrías, estas herramientas te permitirán realizar un análisis espacial detallado y efectivo en R.