Intro

En el documento anterior, hemos visto como representar y transformar información de una capa ráster. Veamos ahora, en detalle, como realizar las operaciones algebraicas más habituales y como aprovechar esta potente herramienta para prepara nuestra información tanto para obtener resultados directos como de cara a utilizarla en procesos posteriores.

Operaciones algebraicas

Cuando trabajamos con información ráster recurrimos a la llamada álgebra de mapas que esencialmente consiste en realizar cálculos con los valores de los píxeles equivalentes de cada capa; es comparable a obtener nuevos mapas tras superponer mapas disponibles.

En los siguientes ejemplo utilizaremos varias capas simples que permitan visualizar con detalle los resultados de los procedimientos básicos.

Las expresiones que implican cálculos con capas son formalmente semejantes a la suma de matrices o de data frames, deben tener el mismo número de filas y columnas, pero además deben compartir una misma extensión y proyección, si esto no se cumple el sistema devuelve error como resultado. También es posible utilizar expresiones que implique más de dos capas, en los siguientes ejemplos consideraremos solo dos, para ver en detalle el resultado de cada operador. El operador elegido trabajará con las celdillas equivalentes de cada mapa.

Vamos a ver como utilizar adecuadamente los operadores habituales lógicos y aritméticos, pero también puedes realizar cálculo con capas y valores o vectores.

Suma y resta de capas

Nada más intuitivo que sumar los valores de dos píxeles equivalentes, dadas dos capas r1 y r2:

Los resultados

  1. sumando

  2. restando, el orden si importa

  3. Si utilizamos un vector como elemento este se “despliega” para ajustarse a las dimensiones de la capa. Si considerados:

    Es equivalente a:

    En el caso de un vector:

Importante

No olvides la regla de reuso, si usas un vector debes tener muy presente la longitud del mismo y su significado.

Sacando partido a la suma

Pero ¿podemos sumar peras y manzanas? Supongamos dos capas que recogen dos sistemas de clasificación, ¿qué pasa si los sumamos?

No es posible distinguir si un valor de 3 en el resultado procede de 2+1 o 1+2, que reflejarían dos situaciones completamente distintas. Una forma muy intuitiva de resolver esta cuestión es multiplicar, en este caso, dado que los valores no pasan de diez por esta cifra.

  1. Primera capa con factor x10

  2. Segunda capa con factor x 10

Cuidado

Para evitar problemas, es necesario, a posteriori organizar la leyenda convenientemente.

El cero y los valores NA

No olvides que el elemento neutro de la suma es el valor 0, pero NA no actuará como tal.

Si los valores cero son sustituidos por NA, entonces, solo obtiene resultado cuando no aparece este valor.

Esto también es válido cuando ambos mapas presentan valores NA.

Responde

¿Cúal es la diferencia entre los resultados utilizando 0 y NA?

¿Se te ocurre algún criterio para elegir una opción frente a la otra?

Productos y cocientes

Como en el caso del producto el resultado es el esperado.

En en caso del cociente: también, pero cuidado con los gráficos, pueden ser engañosos.

Si analizamos la capa resultante:

class      : RasterLayer 
dimensions : 5, 5, 25  (nrow, ncol, ncell)
resolution : 1, 1  (x, y)
extent     : 0, 5, 0, 5  (xmin, xmax, ymin, ymax)
crs        : +proj=utm +zone=30 +ellps=GRS80 +units=m +no_defs 
source     : memory
names      : layer 
values     : 0.3333333, 2  (min, max)

Estos son los valores que realmente encontramos en los píxeles:

[1] 1.0000000 0.5000000 2.0000000 0.3333333 0.6666667

Como en el caso de la suma también podemos sacar mucho partido al producto. Tal como hemos visto en el caso de la suma, el producto puede utilizarse para realizar otro de operaciones, en particular de tipo lógico. El fundamento es utilizar valores cero para “excluir” y el resto para incluir; veamos:

Selección

Con este procedimiento puedes obtener una selección de píxeles en función de una capa binaria, donde los pixeles a excluir aparecen con valor 0.

Por ejemplo, si disponemos de una capa con el trazado previsto para una carretera y otra con las regiones administrativas por las que discurrirá, es posible obtener información detallada del área a ocupar.

     value count
[1,]     0    20
[2,]     1     1
[3,]     2     2
[4,]     3     2

Operaciones lógicas

Como en el caso de las anteriores necesitamos dos capas para hacer comparaciones. Los operadores lógicos son muy empleados para filtrar y seleccionar regiones con propiedades determinadas.

Veamos algunos ejemplos de como traducir preguntas habituales a operaciones lógicas. Si tenemos una capa de cotas sobre y consideramos una inundación, la siguiente expresión:

que se evalúa de esta manera

Otra situación, dos trabajos proporciona la adecuación a un proyecto del territorio, los informes difieren y queremos saber, dónde y cuánto, para ello

     value count
[1,]     0    13
[2,]     1    12

No olvidemos los operadores ANDy OR que le van a dar a nuestras expresiones una importante agilidad y legibilidad. De entrada debemos usar capas lógicas o expresiones que las generen. Por ejemplo, la expresión con la operación AND:

proporciona una capa de coincidencias, las dos capas de entrada deben coincidir.

Por contra, para el operador OR, vemos en este ejemplo:

una capa con TRUE si al menos una de las capas de entrada tiene este valor:

Y no te olvides de recurrir a negarlo todo, para ello el operado NOT:

A la izquierda r2 y a la derecha !r2

Combinando operadores

La utilización de unos determinados operadores y capas intermedias, están fundamentados en aspectos que van desde las preferencias personales al coste computacional. Los siguientes ejemplos muestran, dadas dos capas iniciales procesos equivalente con operaciones distintas:

  1. Si r1 y r2 son dos capas lógicas las dos expresiones devuelven el mismo mapa:

  2. Si r1 es una capas lógica, r2 una capa con valores 0 y NA y r3 presenta varios valores.

    Ten en cuenta

    En este caso, queremos ademñas de desafiarte, ponerte en guradia sobre expresiones “complicadas”, el uso de elementos neutros de los operadores, la jerarquía de los operadores, …

Resumen

Con la intención de evita expresiones más complicadas casi todos los ejemplos presentaban un solo operador y dos capas. Afortunadamente, en R pueden utilizarse expresiones más complejas. que impliquen varias capas. Como consejo, para novatos,

  1. Paso a paso, no corras prueba y ensaya con capas de entrada que tengan tamaños" razonablemente pequeños.

  2. Que tus capas de prueba tengan valores semejantes a los de tus capas reales (veremos más adelante como “reducir” una capa).

  3. No confíes sólo de los gráficos, usa tablas para comprobar valores y frecuencias.

Cuestiones