💡 OBJETIVOS DE LA ACTIVIDAD:

► Mostrar la necesidad de una correcta secuenciación en el tratamiento de la información geoespacial.

► Profundizar en el manejo de los dos modelos principales de almacenamiento de la información geoespacial (vectorial y ráster).

► Aplicar el programa R al manejo de datos de naturaleza geoespacial, en particular los datos en formato ráster en R.

► Describir los atributos fundamentales de un dataset ráster y sus metadatos con R.

► Conocer la diferencia entre los ficheros ráster monobanda y multibanda.

► Importar y exportar ficheros con formato ráster desde R utilizando el paquete terra.

💡 MATERIALES PARA LA ACTIVIDAD:

Fichero comprimido con los datos necesarios para realizar la actividad.

Script con las funciones necesarias para el desarrollo de la actividad.

INTRODUCCION

El lenguaje de programación R cuenta con una gran variedad de paquetes para manejo de datos geoespaciales, entre los que están el paquete sf para datos vectoriales y el paquete terra para datos raster.La principal diferencia de un archivo vectorial respecto a un ráster es que este último almacena píxeles mientras en el vectorial almacena coordenadas de los vértices de cada elemento geométrico.

► El modelo vectorial se basa en puntos localizados en un sistema de referencia de coordenadas. Los elementos geográficos se representan a partir de tres estructuras básicas: puntos, líneas y polígonos. Los puntos pueden representar objetos independientes o pueden agruparse para formar geometrías más complejas como líneas (ej. ríos, caminos), polígonos (ej. fincas, países, provincias) etc… El paquete sf ofrece un conjunto de funciones para el manejo de este tipo de datos, de acuerdo con el estándar Simple Features.

► El modelo de datos raster usualmente consiste de un encabezado y de una matriz con celdas (también llamadas pixeles) de un mismo tamaño. Cada celda tiene una identificación (ID) y almacena un único valor, el cual puede ser numérico o categórico. Mientras en el modelo vectorial las líneas y puntos son los elementos principales del sistema, en el modelo ráster, es el pixel o celda. Cada cuadrícula o píxel presenta una cualidad o propiedad espacial (color, altitud, etc).

EL MODELO DE DATOS RASTER

El formato habitual de las imágenes de satélite es el formato ráster, uno de los más comunes empleados en los Sistemas de Información Geográfica. Los datos ráster dividen el espacio en celdas rectangulares (cuadrícula o pixel) y se usan habitualmente para representar fenómenos espacialmente continuos, como la elevación o la precipitación, aunque también existen ráster con variables categóricas.

Las principales características del formato ráster son las siguientes:

► Los píxeles son generalmente cuadrados (dependiendo de la proyección), están regularmente espaciados y dispuestos en filas y columnas.

► Cada pixel almacena un valor numérico que representa un atributo geográfico (elevación, temperatura etc…); este valor numérico suele ser representado a través de un color diferente para expresar visualmente su información.

► Cada pixel se referencia por sus coordenadas x e y.

► Las dimensiones de cada pixel determinan la precisión de la información representada; cuanto más pequeño sea el pixel mayor será la resolución del ráster, y mayor la precisión representando la información.

Figura 1: Imagen raster
Figura 1: Imagen raster

El modelo de datos raster usualmente consiste de un encabezado y de una matriz con celdas de un mismo tamaño. El encabezado define el CRS, la extensión y el punto de origen de una capa raster.

Por lo general, el origen se ubica en la esquina inferior izquierda o en la esquina superior izquierda de la matriz.

Figura 2: Imagen raster
Figura 2: Imagen raster

La extensión se define mediante el número de filas, el número de columnas y el tamaño (resolución) de la celda.

Cada celda tiene una identificación (ID) y almacena un único valor, el cual puede ser numérico o categórico, como se muestra en la Figura 12.2.

Figura 3: El modelo raster: (A) ID de las celdas, (B) valores de las celdas, (C) mapa raster de colores
Figura 3: El modelo raster: (A) ID de las celdas, (B) valores de las celdas, (C) mapa raster de colores

A diferencia del modelo vectorial, el modelo raster no necesita almacenar todas las coordenadas de cada geometría (i.e. las esquinas de las celdas), debido a que la ubicación de cada celda puede calcularse a partir de la información contenida en el encabezado. Esta simplicidad, en conjunto con el álgebra de mapas, permiten que el procesamiento de datos raster sea mucho más eficiente que el procesamiento de datos vectoriales. Por otra parte, el modelo vectorial es mucho más flexible en cuanto a las posibilidades de representación de geometrías y almacenamiento de valores, por medio de múltiples elementos de datos.

Los mapas raster generalmente almacenan fenómenos continuos como elevación, precipitación, temperatura, densidad de población y datos espectrales. También es posible representar mediante raster datos discretos, tales como tipos de suelo o clases de cobertura de la tierra, como se muestra en la Figura 12.3.

Figura 4: Ejemplo de raster continuos y categóricos
Figura 4: Ejemplo de raster continuos y categóricos

La representación digital de valores numéricos

La representación de números en ordenadores usa diferentes tipos con una precisión variable y diferentes rangos de valores posibles. En el primer caso, cuando hablamos de integers nos referimos a números enteros; los números reales (numeric), es decir, valores continuos como 2718…, se denominan números flotantes o números dobles .

Además, algunos formatos tampoco incluyen valores NoData, lo cual puede complicar el análisis en los márgenes de las imágenes, particularmente cuando están formadas por mosaicos superpuestos.

Formatos de los ficheros ráster

Aunque hay un gran número de formatos que soportan la información ráster, los más habituales son los JPG, TIFF, ECW, MrSID, JP2, IMG, BIL, GRID o ASC. Esta diversidad tiene su explicación por la diferente capacidad de almacenar datos en los píxeles, también conocida como profundidad de bits por píxel, que influye a la hora de representar la información. Cuanto mayor sea, los archivos incluirán una mayor gama de valores. Cada uno de esos formatos puede almacenar un número determinado de valores en cada píxel, de acuerdo con la siguiente fórmula: \(2^n\).

► Archivos como los JPG, GIF o PNG “pesan” poco por su reducido volumen de datos.

► Por el contrario, los archivos TIF trabajan con un rango de valores más elevado, ofreciendo un volumen de información mucho mayor, aunque a costa de archivos más “pesados”. Este inconveniente está siendo contrarrestado por nuevos formatos de mayor compresión, como los *.ECW.

Para ilustrar este concepto, debe tenerse en cuenta que 1 bit almacena dos colores y, por tanto, dos valores; 8 bits almacenan 256 valores de colores. En niveles superiores, 16 bits albergan más de 65000 valores, y 24 bits permiten trabajar con 16 millones de colores. Un archivo JPG alberga píxeles de 8 bits mientras que archivos TIFF permiten trabajar hasta 24 bits. Las escenas de Landsat-4 , -5, y -7 tienen una resolución radimétrica de 8 bit (1 byte), por lo que pueden representar hasta 2^8 = 256 valores DN, es decir, números enteros de 0 a 255 (sin signo) o números enteros de - 127 a +127 (con signo; el signo menos ocupa un bit, por lo tanto, solo quedan 255 enteros).

En niveles superiores, 16 bits albergan \(2^16\), or 65536 valores DN, y 24 bits permiten trabajar con 16 millones de colores. Landsat-8 y el recientemente lanzado Landsat-9 funcionan con una resolución radiométrica de 12-bit, reescalada artificialmente a 16-bit. Este incremento permite una mejor detección de matices en la intensidad de la luz, ya que puede contener hasta

Figura 5: Escala de 4 bit
Figura 5: Escala de 4 bit
Figura 6: Escala de 16 bit
Figura 6: Escala de 16 bit

https://pages.cms.hu-berlin.de/EOL/gcg_eo/02_dn_toa_boa.html

El tipo de datos influye significativamente en el tamaño del archivo, algo que, a pesar del aumento exponencial de la capacidad de almacenamiento de la información que experimentamos, es muy importante si no se trabaja en la nube, sino con ordenadores de sobremesa. De forma predeterminada, terra()guarda todos los datos en el tipo float (FLT8S) de 8 bytes con signo, es decir, valores reales que van desde aproximadamente 1.7e+308 a 1.7e+308.

Ahora, si nuestros datos consisten en valores enteros de 0 a 255, es un desperdicio de recursos. Por lo tanto, especificando datatype = "INT1U" produce un archivo que es aproximadamente un octavo del tamaño de la versión flotante (en un archivo sin comprimir).

Sin embargo, se debe tener cuidado a la hora de elegir ese tipo de datos. Por ejemplo, si el objeto raster contiene valores flotantes (pe. c(0.4, 0.5, 0.9, 1) después de una clasificación en clases discretas de cobertura del suelo, y se elige el tipo de datos “INT1U”, los valores resultantes se convertirían en c(0,0,1,1).

Figura 6: Tipos de datos relevantes definidos por el paquete ráster
Figura 6: Tipos de datos relevantes definidos por el paquete ráster

Estructura de los ficheros

Por último, algunos formatos no incorporan información espacial en las cabeceras de los archivos, mientras que otros sí lo hacen, obligando a que la imagen esté acompañada de ficheros adicionales, lo que complica la estructura de archivos. Los formatos que no contienen en su cabecera información espacial acompañan el archivo de imagen por uno o varios archivos complementarios encargados de localizar espacialmente la imagen. Este es el caso de los archivos auxiliares como TFW (para algunos archivos TIF) o JGW (para los archivos JPG).

Otros formatos, como los archivos GRID, aparecen con una estructura de archivos basados en carpetas. De esta forma, un archivo GRID está formado por dos carpetas, una de ellas denominada siempre como INFO y otra denominada con el nombre de referencia del archivo ráster. Ambas carpetas han de trabajarse en conjunto y son dependientes entre sí. Separarlas y compartirlas excluyendo la carpeta INFO es uno de los fallos más comunes cuando no tenemos conocimiento del manejo de este tipo de archivos, especialmente cuando la carpeta INFO es compartida por múltiples archivos.

Ficheros monobanda y multibanda

Dependiendo del número de bandas incluidas en un archivo ráster, se pueden distinguir

Archivos monobanda, formados por una sola banda. Un ejemplo son los archicos con formato GRID, muy utilizados como soporte de los MDT, cuyos píxeles albergan la información altitudinal. A la hora de representarlos, se asigna a cada rango de valores altitudinales un color diferente.

Archivos multibanda, formados por dos, tres o más bandas. Son los más habituales para mostrar imágenes en color. Este es el caso del formato ECW, utilizados para visualizar imágenes aéreas. Están formados por tres bandas (rojo, verde y azul) que operan en la zona del espectro visible, a través de las que se obtiene una imagen en color natural o falso color (en caso de usar bandas de otra región del espectro). En otros casos, algunas imágenes pueden incluir múltiples bandas (imágenes hiperespectrales).

Figura 7: Ejemplo de raster monobanda y multibanda
Figura 7: Ejemplo de raster monobanda y multibanda

EL PAQUETE TERRA

El manejo de datos espaciales con R puede realizarse con numerosos paquetes. En el caso de información en formato ráster el paquete básico se denomina terra (Hijmans, 2022). Terra implementa un conjunto de funciones para la lectura, escritura, manipulación, análisis y modelado de datos geográficos, tanto en formato ráster como vectorial. Este paquete implementa tres clases (tipos de datos R) de datos:

► La clase SpatRaster maneja archivos ráster e incluye numerosas operaciones como son las locales, las focales, zonales y globales; también la conversión de polígono, línea y punto a ráster, así como métodos de modelado para predicciones espaciales.

SpatVector es la clase que corresponde a datos en formato vectorial y admite operaciones geométricas características de este formato.

► Un tercer objeto, el SpatExtent, representa las coordenadas extremas que definen la zona de trabajo.

Puede ocurrir que no se recuerde si se ha instalado previamente el paquete terra. En ese caso, se puede preguntar a R que verifique si está instalado con la función if (!require()); en caso afirmativo, no lo vuelve a instalar.

if (!require("terra")) install.packages('terra')
## Loading required package: terra
## Warning: package 'terra' was built under R version 4.3.3
## terra 1.8.21

Instalación del paquete terra.

library(terra) 

El paquete posee una serie de parámetros globales que definen su comportamiento. Por ejemplo, la función terraOptions() describe los valores actuales y permite su modificación.

Aunque existen paquetes más actuales y potentes para el tratamiento de objetos en formato ráster (pe. “Stars”), carece de cierto grado de compatibilidad con otros paquetes dedicados al análisis geoespacial. En la actualidad, muchas páginas web sobre temática, que servirán de complemento a las actividades desarrolladas aquí, están migrando a terra, .

⚠️ PRECAUCION:

En R pueden utilizarse dos notaciones para determinar la dirección de un directorio:

► Mediante dos barras inclinadas a la derecha (\) .

► Mediante una única barra, inclinada a la izquierda (/).

La barra única inclinada a la derecha () se usa en R como tecla de escape.

La función help() presenta la documentación del paquete terra, incluyendo sus métodos.

help("terra-package")

DIRECTORIO DE TRABAJO Y CARPETAS

Para iniciar el curso es necesario crear un directorio de trabajo dónde almacenar todos los materiales de trabajo del curso. El procedimiento requiere abrir la ventana Session, estableciendo a continuación el directorio de trabajo, que en este caso recomendamos se denomine G174_2025.

El directorio de trabajo en R es la carpeta dónde se guardarán los diferentes ficheros (scripts, datos) con los que se trabajará a lo largo del curso. Esto permitirá poder cargarlos directamente, evitando posibles errores.

Creación del directorio de trabajo
Creación del directorio de trabajo

R dispone de varias funciones que merece la pena recordar:

► Para comprobar cuál es el directorio de una sesión se utiliza la función getwd(), que imprimirá la ruta del directorio de trabajo actual, que corresponde a la carpeta donde se guardarán los archivos.

getwd()

► Para recordar a R el directorio de trabajo al comienzo de cada sesión se puede utilizar la función setwd().

setwd("C:/G174_2025")

► Dentro del directorio de trabajo se deben crear las carpetas correspondientes a cada laboratorio, dónde se ubicarán los ficheros a descargar y los scripts generados. Estas carpetas pueden denominarse lab_1, lab_2 y así sucesivamente. Para crearlas se recurre a la función dir.create(), por ejemplo

dir.create("./lab_1")

Dado R sabe que estamos ubicados en el directorio de trabajo, no es necesario informar a R de la ruta completa dónde se creará esta nueva carpeta (es decir “C:/G174_2025/lab_1”). Símplemente, con escribir “./lab_1” R entiende que debe crear esa carpeta en el directorio de trabajo.

DESCARGA DIRECTA DE DATOS Y SCRIPTS DESDE LA PÁGINA WEB

Existen dos posibilidades para descargar los scripts y los datos que se utilizarán en el curso. Hay que señalar que, en ambos casos, los ficheros originales están comprimidos con 7.zip. Por lo tanto:

Descargar los datos desde la página web.

► Para descargar los datos sin pasar por la página web se pueden utilizar la siguiente función:

download.file("https://personales.unican.es/rasillad/docencia/G174/LABORATORIO_1/LABORATORIO_1_datos.zip",          # Qué fichero descargar
              "./lab_1/laboratorio_1_datos.zip",                                                                    # A dónde y con qué nombre
              method = "auto")                                                                                    

► Una vez ubicado en la carpeta correcta, el fichero se puede descomprimir

unzip("./nombre_tu_carpeta/laboratorio_1_datos.zip",                            # Qué fichero descomprimir
      exdir = "./lab_1")                                            # En qué carpeta ubicarlo

📝 INFORMACIÓN:

A continuación, se van a mostrar algunas operaciones básicas para el manejo de ficheros geoespaciales en R. Estas operaciones serán necesarias más adelante para el análisis de imágenes de satélite.

Ficheros con formato ráster (variables continuas)

Ficheros con formato ráster (variables discretas o categóricas)

Actividades de evaluación