# Parte 1
# Ejercicio 1.
seq(1, 40, by = 2)
# Ejercicio 2
seq(1, 40, by = -2)
# Este código da error porque especifiqué algo mal :)
Análisis espaciales y multivariantes con R (AEMeR) aplicados a estudios de biodiversidad
Ejercicios de manipulación de datos espaciales
Los ejercicios tendréis que entregarlos para la evaluación del curso. Para ello, crea un script de R con RStudio. Ponle el nombre ejercicios_s3_[nombre]_[apellido].R
. Dicho script deberá estar organizado con comentarios en castellano (poniendo una almohadilla #
delante) y justo detrás el código necesario para realizar el ejercicio (ver ejemplo debajo). Además, si el ejercicio pide reflexionar sobre el resultado use los comentarios (con la #
) para indicar sus reflexiones debajo del código. Una vez los tengáis completos podéis mandármelos por email.
Parte 1. Trabajando con datos vectoriales
Funciones útiles
vect()
Se usa para generar o leer datos vectoriales. Es muy flexible en su forma de funcionar, por lo que tendrás que leer bien la documentación para ver que argumentos necesita.
gadm()
Esta función del paquete geodata
se usa para cargar datos de los límites administrativos de los distintos países del planeta.
project()
Proyecta las coordenadas de los objetos espaciales a un sistema de coordenadas diferentes. Para conseguir los códigos EPSG de distintos sistemas de proyección podéis usar la siguiente página: https://epsg.io/
[]
Los corchetes sirven para extraer elementos de ciertas posiciones en los objetos de R. Se pueden usar también con los objetos espaciales
==
Se usa para realizar comparaciones y generar un vector de valores lógicos que indican cuando se cumple una condición de igualdad.
writeVector
Esta función se usa para guardar objetos vectoriales en el disco duro del ordenador.
Ejercicios
1. Cargue los límites administrativos de las provincias de España en un objeto llamado provincias
y filtre las provincias para retener sólo las provincias de la comunidad de "Andalucía"
.
library(geodata)
<- gadm("ESP", 2, path = ".")
provincias <- which(provincias$NAME_1 == "Andalucía")
i <- provincias[i] andalucia
2. Ahora, proyecte los datos de estas provincias desde el sistema de coordenadas en longitud-latitud y WGS84 al sistema UTM30 norte con datum ETRS89. Para ello necesitaréis buscar el código EPSG en https://epsg.io.
<- project(andalucia, "epsg:3042") andalucia_utm
3. Guarda el objeto vectorial de Andalucía con las coordenadas en UTM30n como un fichero geopackage nuevo, llamado Andalucia.gpkg
writeVector(andalucia_utm, "Andalucia.gpkg", overwrite = TRUE)
4. Finalmente, dibuje dos mapas uno con el mapa de la comunidad autónoma de Andalucía en longitud-latitud (WGS84) y el otro en UTM30n. ¿Se aprecian diferencias entre ellos? ¿Por qué?
Parte 2. Trabajando con datos ráster
Funciones útiles
paste0()
Se utiliza para pegar cadenas o vectores sin dejar espacios entre ellos. Es muy útil cuando quieres generar un vector de nombres con un prefijo y una secuencia de números. Por ejemplo: “bio1”, “bio2”, “bio3”…
rast()
Se utiliza para generar o cargar datos ráster. Es muy flexible también en su forma de usarse, por lo que tendrás que tener cuidad con los argumentos que usas con ella.
worldclim_country()
Esta función del paquete geodata
se usa para cargar datos climáticos de cualquier país del planeta. Los datos proceden del proyecto WorldClim.
project()
Se usa para proyectar tanto datos vectoriales como raster.
writeRaster()
Se usa para guardar objetos ráster en el disco duro del ordenador.
Ejercicios
1. Carga las variables bioclimáticas (v.gr. var = "bio"
) del proyecto WorldClim a 0.5 minutos de grado de resolución para España.
library(geodata)
<- worldclim_country("ESP", var = "bio", path = ".") esp_bio
2. Fíjese el nombre tan largo y poco intuitivo de los nombres de las distintas capas (puede consultarlo usando el siguiente código names(bio)
). Cambie el nombre de las variables por algo más corto e intuitivo (v.gr. “bio1”, “bio2”, etc.).
names(esp_bio)
names(esp_bio) <- paste0("bio", 1:19)
3. Revisa el CRS de los datos que has descargado. ¿Coinciden con los datos que has generado como resultado de los ejercicios de la Parte 1? Si no es así, proyecta los datos raster para que coincidan con esos datos y mantengan una resolución exacta de 1000 metros.
<- project(esp_bio, "epsg:3042", res = 1000) esp_bio_utm
4. Guarde los dos objetos ráster (original y resultante) como ficheros en el disco duro de su ordenador, de modo que pueda reutilizarlos más adelante cuando los vuelva a necesitar.
writeRaster(esp_bio, "esp_bio.tif", overwrite = TRUE)
writeRaster(esp_bio_utm, "esp_bio_utm.tif", overwrite = TRUE)
5. Finalmente, para cerciorarnos que todo esté correcto, dibuje el mapa de la variable "bio4"
en UTM30n con los polígonos de los municipios de la provincia de “Andalucía” superpuestos.
Parte 3. Manipulación datos ráster y vectoriales
Funciones útiles
expanse()
Se usa para calcular la superficie de cada uno de los polígonos en una capa vectorial.
aggregate()
Sirve para agregar formas vectoriales que tienen el mismo valor en alguno de los campos de los atributos, el cual se usa como criterio de agregación. También se usa para agregar los valores de varios píxeles contiguos en datos ráster.
mask()
Se usa para eliminar la información de un ráster que queda fuera de la superficie delimitada por los polígonos de una capa vectorial.
Ejercicios
1. Añade una columna de atributos a la capa de las provincias de “Andalucía” en la que se recoja el área (superficie) de cada provincia. Posteriormente, dibuja un mapa de las provincias en el que se pueda observar con colores diferentes el área de cada uno de ellos.
$area <- expanse(andalucia)
andaluciaplot(andalucia, "area", type = "interval")
2. Agrega todos los municipios de la provincia de “Andalucía” para generar un polígono con la forma de la provincia. Dibuja el mapa del ejercicio anterior y adiciona el borde de la provincia con los colores de la bandera española.
<- aggregate(andalucia, "NAME_1")
andalucia_borde plot(andalucia, "area", type = "interval")
plot(andalucia_borde, lwd = 4, border = "red", add = TRUE)
plot(andalucia_borde, lwd = 2, border = "yellow", add = TRUE)
3. Recorta el objeto ráster con las variables bioclimáticas de España para quedarte sólo con los datos de la comunidad autónoma de “Andalucía”. Dibuja el mapa de la variable bio4
de dichos datos. ¿Ves algo raro?
<- mask(esp_bio, andalucia)
andalucia_bio plot(andalucia_bio[["bio4"]])
4. Usa el siguiente código x <- trim(x)
(donde x
es el nombre del objeto resultante del ejercicio anterior) y vuelve a dibujar el mapa raster resultante. ¿Que diferencia observas con el mapa del ejercicio anterior? ¿Qué crees que hace la función?
<- trim(andalucia_bio)
andalucia_bio plot(andalucia_bio[["bio4"]])