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 |
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)
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
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
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)