06/12, 2020

Que es el SIG

Sistema de Información Geográfica

  • Representación de datos de forma espacial
  • Muchos tipos de datos
    • Datos de captura remota (Satelites lidar)
    • Datos modelados (Modelos Distribución de Especies)
    • Datos de expertos
    • Planes futuros (Panificación territorial)
    • Mapas de fantasía (Tierra Media, Westeros)
  • Dos formatos principales
    • Datos Vectoriales (Shapefiles)
    • Datos en grilla (Rasters)

Datos Vectoriales

  • Shapefiles
  • Puntos (Ciudades, presencias de especies, sucesos, sitios de muestreo)
  • Lineas (Ríos, Carreteras, Caminos, Senderos)
  • Polígonos (Países, Regiones, Lagos)
  • Paquetes (sf, sp, raster)

Ejemplos datos vectoriales

library(sf)
library(tidyverse)
library(rworldxtra)
data("countriesHigh")
Mundo <- st_as_sf(countriesHigh)
ggplot() + geom_sf(data = Mundo, aes(fill = POP_EST))

Ejemplos datos vectoriales (cont.)

ggplot() + geom_sf(data = Mundo, aes(fill = continent))

Elegir parte de datos vectoriales

Africa <- Mundo %>% dplyr::filter(continent == "Africa")
ggplot() + geom_sf(data = Africa, aes(fill = POP_EST))

Modificar datos vectoriales

Africa <- Africa %>% mutate(Poblacion_mill = POP_EST/1e+06)
ggplot() + geom_sf(data = Africa, aes(fill = Poblacion_mill)) + 
    theme_bw() + scale_fill_viridis_c()

Modificar datos vectoriales (Cont.)

Africa <- Africa %>% mutate(PIB_per_Cap = GDP_MD_EST/POP_EST)
ggplot() + geom_sf(data = Africa, aes(fill = PIB_per_Cap)) + 
    theme_bw()

Exportar y leer datos vectoriales

Africa <- Africa %>% dplyr::select(NAME, Poblacion_mill, PIB_per_Cap, 
    GLOCAF)
write_sf(Africa, "Africa.shp")
Africa2 <- read_sf("Africa.shp")
ggplot() + geom_sf(data = Africa2, aes(fill = GLOCAF)) + theme_dark()

Algunas bases de datos vectoriales

Algunas bases de datos vectoriales

  • En raster función getData("GADM")
Peru <- getData(name = "GADM", country = "PER", level = 1) %>% 
    st_as_sf()
ggplot() + geom_sf(data = Peru) + theme(legend.position = "none")

Raster

Datos en grilla

  • Como una foto
  • Cada pixel tiene ciertas caracteristicas (Resolución, Proyección, Unidades)
Prec <- getData("worldclim", res = 10, var = "prec")
Prec
## class      : RasterStack 
## dimensions : 900, 2160, 1944000, 12  (nrow, ncol, ncell, nlayers)
## resolution : 0.1666667, 0.1666667  (x, y)
## extent     : -180, 180, -60, 90  (xmin, xmax, ymin, ymax)
## crs        : +proj=longlat +datum=WGS84 +no_defs 
## names      : prec1, prec2, prec3, prec4, prec5, prec6, prec7, prec8, prec9, prec10, prec11, prec12 
## min values :     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      0,      0 
## max values :   885,   736,   719,   820,   955,  1850,  2088,  1386,   904,    980,    893,    914

Precipitacion

plot(Prec)

Subset de stacks

Invierno <- Prec[[c(6, 7, 8)]]
plot(Invierno)

Operaciones Simples

Total_inv <- Prec[[1]] + Prec[[2]] + Prec[[3]]
plot(Total_inv)

O resumen total

PP_Total <- sum(Prec)
plot(PP_Total)

Cortar un raster (En base a otro mapa)

Raster_Africa <- PP_Total %>% crop(Africa)
plot(Raster_Africa)

Exportar y leer un raster

writeRaster(Raster_Africa, "PP_Africa.tif", overwrite = T)
AfricaRast2 <- raster("PP_Africa.tif")

Exportar y leer un raster

plot(AfricaRast2)

Proyecciones y por que importan

Proyecciones

proj4string(AfricaRast2)
## [1] "+proj=longlat +datum=WGS84 +no_defs"
  • Supongamos que el gráfico anterior fuera de diversidad
    • Tiene sentido comparar diversidad de especies en celdas de áreas diferentes?
  • Projection wizard
  • Además por presentación

Reproyectar a equal area

newproj <- "+proj=laea +lon_0=18.28125 +lat_0=0 +datum=WGS84 +units=km +no_defs"
Africa_igual <- projectRaster(AfricaRast2, crs = newproj)
plot(Africa_igual)

La prueba

Graficar juntos

Graficar rasters y shapefiles juntos

Africa_DF <- AfricaRast2 %>% as("SpatialPixelsDataFrame") %>% 
    as.data.frame()
Africa_DF <- Africa_DF %>% rename(Prec = PP_Africa)
ggplot() + geom_tile(data = Africa_DF, aes(x = x, y = y, fill = Prec)) + 
    geom_sf(data = Africa, alpha = 0) + theme_bw() + scale_fill_viridis_c()

Graficar rasters y shapefiles juntos

ggplot() + geom_tile(data = Africa_DF, aes(x = x, y = y, fill = Prec)) + 
    geom_sf(data = Africa, alpha = 0) + coord_sf(crs = "+proj=laea +lon_0=18.28125 +lat_0=0 +datum=WGS84 +units=km +no_defs") + 
    theme_bw() + scale_fill_viridis_c()

Mas preguntas?