Skip to content

Análisis Raster

En GRASS las fronteras geográficas de un mapa raster son descritas por los parámetros: norte (north), sur (south), este (east) y oeste (west). Estos valores describen las líneas que acotan el mapa y sus esquinas. Esta información puede ser modificada con el comando r.region

Como una regla general en GRASS:

  1. Los mapas raster de salida tienen sus fronteras y resolución igual a aquellos de la región actual.
  2. Los mapas raster de entrada son automáticamente recortados y ampliados (usando el algoritmo de vecino más cercano) para coincidir con la región actual.
  3. Los mapas raster de entrada son enmascarados automáticamente si un existe un mapa raster llamado MASK.

Cuando se leen datos no georeferenciados, el mapa importado usualmente tienen su esquina inferior izquierda en (0,0) en el sistema de coordenadas; el usuario necesita usar r.region para "posicionar" el mapa importado. El procesamiento de mapas raster en GRASS es siempre ejecutada en la configuración de la región actual, o sea la extensión de la región actual y la resolución del raster actual es usado.

Si un mapa raster llamado MASK existe, muchos módulos raster de GRASS operan solo en datos que caen dentro del área enmascarada, y tratando cualquier dato que resida fuera de la máscara como si su valor fuera NULO. La mascara es solo aplicada cuando se lee un mapa raster GRASS existente, por ejemplo cuando es usado en un módulo como un mapa de entrada.

Algebra de mapas raster

El comando r.mapcalc provee métodos del álgebra de mapas. Este módulo ejecuta aritmética en capas de mapas raster. Nuevas capas de mapas raster pueden ser creadas que son expresiones aritméticas involucrando capas de mapas raster existentes, constantes puntuales enteras y funciones.

Operadores

Operador   Significado         Tipo        Precedencia
--------- -----------------   -----------  -------------
-          negación            Aritmética  12
!          NOT                 Lógica      12
^          exponente           Aritmética  11
%          módulo              Aritmética  10
/          división            Aritmética  10
*          multiplicación      Aritmética  10
+          adición             Aritmética   9
-          sustracción         Aritmética   9
>          mayor que           Lógica       7
>=         mayor o igual       Lógica       7
<          menor que           Lógica       7
<=         menor o igual       Lógica       7
==         igual               Lógica       6
!=         diferente           Lógica       6
&&         AND                 Lógica       3
||         OR                  Lógica       2

Funciones

Algunas de las funciones soportadas son listadas en la tabla de abajo. El tipo del resultado es indicado en última columna. F significa que las funciones siempre resulta en un valor de punto flotante, I significa que la función da un resultado entero, y * indica que el resultado es flotante si cualquiera de los argumentos de la función son valores de punto flotante y enteros si todos los argumentos son enteros.

función            descripción
---------------   -----------------------------
abs(x)             valor absoluto de
double(x)          convierte x a punto flotante
exp(x,y)           x a la potencia y
if                 condicional:
if(x)              1 si x no es cero, 0 sino
if(x,a)            a si x no es cero, 0 sino
if(x,a,b)          a si x no es cero, b sino
if(x,a,b,c)        a si x > 0, b si x es cero
int(x)             convierte x a entero
isnull(x)          verifica si x = NULL
max(x,y[,z...])    máximo
median(x,y[,z...]) mediana
min(x,y[,z...])    mínimo
mode(x,y[,z...])   moda
pow(x,y)           x a la potencia y 
sqrt(x)            raíz cuadrada de x

Ejemplos

Considere el siguiente archivo llamado raster1.arc:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
0 0 0 0 0 2 2 0 3 3
0 1 1 0 2 2 0 0 3 3
0 1 1 0 2 2 0 3 3 3
0 0 3 3 0 2 0 3 3 3
0 0 3 3 0 1 1 0 0 0
0 0 0 0 0 1 1 1 1 0
0 2 2 0 0 1 1 1 1 0
0 2 2 0 0 2 2 2 2 0
0 2 1 1 0 2 2 2 2 2
0 0 0 1 1 0 0 2 2 2

Para importar este archivo se utilizaría en comando:

$ r.in.gdal input=raster1.arc output=raster1

Ahora considere el siguiente archivo de datos llamado raster2.arc:

ncols            10
nrows            10 
xllcorner       100 
yllcorner       100 
cellsize         10
NODATA_value      0
	
2 2 0 0 0 0 0 0 2 1
0 2 2 2 0 3 3 1 1 0
0 0 1 0 0 3 3 3 0 0
0 1 1 1 1 1 3 3 0 0
0 0 0 2 2 2 2 2 2 0
0 0 0 2 2 2 0 2 2 0
0 1 1 2 2 2 0 0 3 3
0 0 0 0 3 0 0 0 3 3
2 2 2 4 4 4 2 2 2 0
2 2 0 4 4 4 2 2 2 0

Para importar este otro archivo se utilizaría un comando similar al anterior:

$ r.in.gdal input=raster2.arc output=raster2

Se puede obtener una nueva capa raster con los valores promedios de las dos capas raster anteriores, utilizando con el operadores aritméticos:

$ r.mapcalc expression="raster3=(raster1+raster2)/2"

El siguiente ejemplo muestra la utilización de operadores relacionales para comparar los valores de las dos capas. La capa resultante contendrá únicamente valores 0 (falso) ó 1 (verdadero).

$ r.mapcalc expression="raster4=(raster1<=raster2)"

La utilización de funciones se muestra en el ejemplo a continuación.

$ r.mapcalc expression="raster5=max(raster1,raster2)"

El procesamiento condicional es mostrado en el siguiente comando, el cual selecciona únicamente aquellas celdas con valor 2. Todas las demás celdas contendrán un valor de 0.

$ r.mapcalc expression="raster6=if(raster1==2)"

Estadísticas en mapas raster

El comando r.statistics permite calcular estadísticas zonales. Este comando es una herramienta para análisis estadístico exploratorio de acuerdo a cómo se traslapa con objetos en la capa base. Un variedad de medidas estadísticas estándar son posibles. Todas las celdas en la capa base son consideradas un objeto para el análisis. Para cierto tipo de aplicaciones, puede ser necesario preparar los datos de entrada de forma que todas las áreas de celdas contiguas con el mismo valor en la capa base sean identificadas en forma única, que puede ser hecho con r.clump

Los métodos disponibles para este comando son:

método          descripción
----------    ----------------------
diversity       diversidad
distribution    distribución
average         promedio
mode            moda
median          mediana
avedev          desviación promedio
stddev          desviación estándar
variance        varianza
min             mínimo
max             máximo
sum             suma

Los cálculos son ejecutados en cada área de los datos de la capa de cobertura que se encuentran dentro de cada valor único, o categoría, de la capa base.

La capa de salida es una versión reclasificada de la capa base con idénticos valores de celda, pero con etiquetas modificadas. Es decir, los resultados de los cálculos son almacenados en las etiquetas de la capa de salida. Para transferir los valores almacenados en las etiquetas a los valores de las celdas, se puede usar el comando r.mapcalc junto con el operador @.

Ejemplos

$ r.statistics base=raster1 cover=raster2 out=raster7 method=average

$ r.mapcalc expression="raster8=@raster7"

Funciones en vecindario

El comando r.neighbors genera para cada valor de la celda una función de los valores asignados a las celdas alrededor de ella, y almacena nuevos valores de celda en la capa raster de salida.

El comando r.neighbors toma cada celda en el archivo raster de entrada, y examina los valores asignados a celdas en algún vecindario, definido por el usuario, alrededor de ella. Este genera un mapa raster en el que a cada celda le es asignado un valor que es alguna función (especificada por el usuario) de los valores en el vecindario de la celda.

Métodos de operación en el vecindario:

método     descripción
---------    -----------
average    promedio
median     mediana
mode       moda
minimum    mínimo
maximum    máximo
stddev     desviación estándar
sum        suma
variance   variancia 
diversity  diversidad

Ejemplos

El siguiente comando crea una capa raster a partir del promedio de valores en un vecindario de tamaño 3:

$ r.neighbors input=raster2 output=raster9 method=average size=3

El siguiente comando muestra un ejemplo adicional con un vecindario "redondo" de tamaño 5:

$ r.neighbors -c input=raster1 output=raster10 method=average size=5

Agrupamiento de celdas

El comando r.clump encuentra todas las áreas de valores de celdas continuas en el mapa raster de entrada. Este asigna un valor único a cada una de estas áreas ("grupo") en el mapa raster de salida. La distinción de categorías en el mapa de entrada es preservada. Esto significa que si distintos valores son adyacentes, ellos no serán agrupados juntos. El algoritmo utilizado no considera celdas en diagonal.

Ejemplos:

Para crear los diferentes grupos de una capa raster se puede utilizar el comando:

$ r.clump input=raster1 output=raster11