INTRODUCCIÓN

Un ráster categórico es un tipo de raster en el que los valores de los píxeles representan clases discretas o categorías en lugar de valores continuos.

Un ejemplo sería un mapa de usos de suelo dónde cada número representa un tipo de terreno:

→ Bosque

→ Agua

→ Urbano

→ Agrícola

Este tipo de ráster presenta diferencias con respecto a los ráster con variable contínuas

Característica Ráster Categórico Ráster Continuo
Valores Discretos (clases) Continuos (números reales)
Ejemplos Uso de suelo, tipo de vegetación, máscara de calidad (SCL) Temperatura, Elevación, NDVI
Procesamiento Reclasificación, estadísticas por categoría Interpolación, operaciones matemáticas

CREACIÓN DE UN FICHERO RÁSTER CON VALORES DISCRETOS (CATEGÓRICOS)

Los objetos SpatRaster también pueden contener valores categóricos de tipo logical o factor.

library(terra)
## Warning: package 'terra' was built under R version 4.3.3
## terra 1.8.21

En el siguiente bloque de código se crea y representa un objeto SpatRaster con información sobre granulometría de un territorio. En primer lugar, se crea un vector con las categorías

grano_tipo <- c("arcilla", "limo", "arena")

A continuación, se genera aleatoriamente un vector con 36 caracteres.

lista_granos <- sample(grano_tipo, 36, replace = TRUE)
lista_granos
##  [1] "arena"   "arena"   "arcilla" "limo"    "limo"    "arena"   "arena"  
##  [8] "limo"    "limo"    "arcilla" "arena"   "arena"   "arena"   "arcilla"
## [15] "arena"   "limo"    "arcilla" "limo"    "arena"   "arena"   "limo"   
## [22] "arcilla" "limo"    "arcilla" "arcilla" "limo"    "arena"   "arena"  
## [29] "limo"    "limo"    "arcilla" "limo"    "arena"   "limo"    "arcilla"
## [36] "arena"

Los valores de ese vector deberán convertirse en factores

grano_factor <- factor(lista_granos, 
                       levels = grano_tipo)

Esos valores, ya convertidos en factores, se convierten a continuación en un objeto SpatRaster que posee 36 píxeles (6x6).

grano <- rast(nrows = 6,
              ncols = 6,
              resolution = 0.5,
              xmin = -1.5,  xmax = 1.5,
              ymin = -1.5,
              ymax = 1.5,
              vals = grano_factor)

Finalmente, este objeto puede representarse gráficamente

plot(grano)

VERIFICACIÓN DE LA ESTRUCTURA DEL OBJETO RÁSTER

Antes de proceder a su análisis, importante conocer las propiedades del objeto ráster.

Información general del raster

print(grano)
## class       : SpatRaster 
## dimensions  : 6, 6, 1  (nrow, ncol, nlyr)
## resolution  : 0.5, 0.5  (x, y)
## extent      : -1.5, 1.5, -1.5, 1.5  (xmin, xmax, ymin, ymax)
## coord. ref. : lon/lat WGS 84 (CRS84) (OGC:CRS84) 
## source(s)   : memory
## categories  : label 
## name        :   lyr.1 
## min value   : arcilla 
## max value   :   arena

Ver los valores únicos (categorías)

unique(grano)
##     lyr.1
## 1 arcilla
## 2    limo
## 3   arena

Ver las etiquetas (si las tiene)

levels(grano)
## [[1]]
##   value   label
## 1     1 arcilla
## 2     2    limo
## 3     3   arena

ANÁLISIS DE LAS COBERTURAS POR CATEGORÍAS

Por ejemplo, es posible saber qué porcentaje del área representa cada categoría. Primero se calcula la frecuencia absoluta de cada categoría.

freq_table <- freq(grano)

En segundo lugar, se calcula su porcentaje

freq_table$percentage <- (freq_table$count / sum(freq_table$count)) * 100       # Convertir a porcentaje

Finalmente, se muestran los resultados

print(freq_table)
##   layer   value count percentage
## 1     1 arcilla     9   25.00000
## 2     1    limo    13   36.11111
## 3     1   arena    14   38.88889

MODIFICAR UN RASTER CATEGÓRICO

La función levels() puede utilizarse para consultar la Raster Attribute Table (RAT) de un objeto SpatRaster, la cual contiene información sobre sus factores y niveles.

levels(grano)
## [[1]]
##   value   label
## 1     1 arcilla
## 2     2    limo
## 3     3   arena

La misma función levels() puede emplearse para asignar nuevos factores a un objeto.

levels(grano) <- data.frame(value = c(1, 2, 3), 
                            category = c("mojado", "húmedo", "seco"))

Consulta de la RAT

levels(grano)
## [[1]]
##   value category
## 1     1   mojado
## 2     2   húmedo
## 3     3     seco

Representación gráfica

plot(grano, col = c("blue", "lightblue", "yellow"), legend = TRUE)

Los raster categóricos también pueden almacenar información relacionada con los colores de cada valor, mediante una tabla. La tabla de colores es un data frame con tres (red, green, blue) o cuatro (alpha) columnas, en la que cada fila corresponde a un valor. Las tablas de colores en terra pueden consultarse o modificarse con la función coltab().

Existen otras funciones que permite una aproximación más clara a la distribución espacial de las categorías. Por ejemplo, la función terra::segregate() permite dibujar las diferentes categorías del ráster.

segregados <- segregate(grano, keep = TRUE, other = NA)
plot(segregados)