Presentación y opciones Caja de diálogo de la aplicación
Ejemplos Sintaxis

Presentación y opciones

Este programa permite realizar reclasificaciones y operaciones matemáticas y lógicas, simultáneamente, sobre capas de cualquier tipo (rásters, vectores estructurados y vectores no estructurados), en cualquier número y en cualquier directorio. Las operaciones lógicas retornan 1 en caso verdadero y 0 en caso falso.

La expresión matemática debe contener como mínimo un fichero y, en cambio, puede no tener definido ningún operador o función; en este caso puede utilizarse para saturar o escalar el fichero, cambiar el valor de fondo, transformar el formato de un fichero ráster, rasterizar un vector... aunque existen aplicaciones específicas para estas últimas transformaciones (vea IMGIMG, TiraVec).

Todos los rásters que formen parte de la expresión deben corresponder al mismo ámbito geográfico, deben tener la misma resolución y las mismas unidades referidas al mismo sistema de referencia. En cambio, pueden ser de diferente tipo (byte, real, etc) y no importa su grado de compresión. Se sobreentiende que el ámbito de las capas vectoriales queda definido por el ámbito de las capas ráster de la expresión, cuando las haya. Para expresiones donde solamente participen capas vectoriales habrá que definir el ámbito a través del botón de opciones Avanzadas. Las singularidades de las operaciones o funciones utilizadas (p. ej.: división entre cero, raíz negativa...) siempre darán como resultado en aquella posición geográfica un valor igual al valor NODATA (sindatos). Este valor es establecido por el programa en función del tipo de dato del fichero resultado (255 para tipo byte, 0 para tipo bit, y el valor más negativo posible para el resto de tipos), excepto cuando se indique explícitamente en la caja de opciones avanzadas; en este último caso hay que tener cuidado al escoger el valor de fondo fuera del rango de valores posibles del ráster resultado. En caso de duda, deje que sea la aplicación la que determine el valor.

Todos los cálculos se realizan en doble precisión (15-16 cifras significativas y rango aproximadamente entre 1.7E-308 y 1.7E+308). La longitud o complejidad de la expresión es ilimitada (sólo depende de su hardware y sistema operativo).

En la primera casilla se introduce la fórmula matemático-lógica a calcular. Forman parte de dicha fórmula números, capas (rásters y vectores), operadores y funciones. Los nombres de las capas que forman parte de la expresión matemática son alias de los ficheros correspondientes y se indican entre corchetes ('[' y ']'); los corchetes se incluyen automáticamente si inserta la capa desde el botón "Nueva...". El nombre es el nombre del fichero, indicado sin path para mayor claridad de la expresión (el programa conoce el path porque lo ha retenido al volver de la caja de exploración para seleccionar el fichero; en el caso remoto de nombres de ficheros iguales en directorios distintos el programa introduce un carácter diferenciador para poder evaluar igualmente sin problemas). Cuando la capa a insertar en la expresión sea un vector habrá que definir algunos parámetros adicionales:

Ejemplo de expresión comentada para recordar y facilitar su objetivo:
;diferencia en valor absoluto;ABS([modelo];modelo teórico;-[dat0299];datos muestreo Febrero 1999;)

El botón Listado nos informará de las propiedades de las capas que forman la expresión, así como de la relación entre su alias y su nombre auténtico.

Los operadores y funciones implementadas se describen posteriormente. Los argumentos de las funciones tienen que estar encerrados entre paréntesis; los paréntesis son automáticamente incluidos si inserta la fórmula desde el botón "Librería de funciones..."; p. ej.: SING(30). Si la función tiene más de un argumento hay que separarlos mediante comas; p. ej.: MAX([IMG1],[IMG2]).

Todos los operadores pueden usarse tanto en capas como en valores numéricos.
Por ejemplo, puede hacer:

 MAX([IMG1], SING(30))
y obtener, para cada celda de la capa IMG1, el máximo valor entre el valor de la celda y el seno de 30°; también puede escribir expresiones como:
 MAX([IMG1], 100)
 100*SING([IMG1])
 MAX( MIN([IMG1],[IMG2]), 100)
 etc.

En caso de duda, recomendamos usar la sintaxis construida a base de ir pulsando los botones y menús correspondientes de la aplicación Windows sin editarlos posteriormente, así como usar paréntesis siempre que dude sobre la precedencia de los operadores.

El tipo de dato del fichero de salida se controla en el desplegable homónimo. En el caso "automático", el propio programa ajusta el tipo de dato final en función del rango y tipo (entero o real) de los valores del fichero de salida, y de su nivel de compresión, comprimiendo si parece adecuado; por ejemplo, cuando el resultado es booleano (0,1) se opta por byte-RLE, que da ficheros muy pequeños. "Automático" no comprimirá si tan sólo una de les imágenes que forman la expresión está descomprimida (excepto en el caso de resultados con valores 0 o 1 -booleanos- en los que se opta por byte-RLE). El caso bit sólo se genera cuando se le especifica expresamente, ya que habitualmente un formato byte-RLE da ficheros de menor tamaño. Aunque el modo automático es más cómodo, el cálculo se realiza de forma substancialmente más rápida si se determina el tipo de dato de salida; además, "automático" necesita crear, durante el proceso, un fichero temporal en formato double, (formato que fácilmente consume bastante espacio de disco). Existe un botón informativo asociado al tipo de dato, que permite conocer cuánto espacio de disco necesita el programa para generar el resultado. En caso de ficheros comprimidos, cuando se escoge automático o cuando se activa la opción Escalar, se informa del espacio máximo que se necesitaría si el fichero o ficheros no pudieran comprimirse en absoluto (para automático y Escalar hay que tener en cuenta que el programa genera un fichero temporal adicional).

Cuando se selecciona "Saturar", si el rango de valores de salida sobrepasa el rango correspondiente al dominio (tipo de dato) escogido, los valores que sobrepasan se asignan al máximo o al mínimo del dominio, según convenga. En cambio, si se selecciona un escalado, el programa reescala linealmente los valores resultantes en el intervalo indicado en las casillas "Mínimo" y "Máximo" de escalado. Ejemplo: Suponga que un fichero con valores entre 0 y 200 se multiplica por 2 y se escoge el formato de salida byte; si se selecciona saturar, todos los valores entre 256 y 400 se asignarán a 255, si se selecciona escalar, el rango [0,400] se escalará dentro del rango [0,255].

Cuando el tipo de dato resultante no es real, el programa permite escoger entre truncar o redondear (recomendado) el resultado. Este proceso sólo se aplica en la fase final de grabación del fichero resultante, no durante los cálculos. Si le interesa truncar en una etapa intermedia de la expresión, utilice la función ENT() (parte entera) disponible pulsando el botón "Librería de funciones".

La casilla "Título" permite introducir un título descriptivo para el fichero resultante; si se deja en blanco se utilizará la fórmula matemático-lógica como título.

El botón Reclasifica permite definir la función de Reclasificación: RECL([fichero reclasificador], [capa a reclasificar]). Esta función cambiará valores antiguos de la capa a reclasificar por nuevos valores según las correspondencias especificadas en el fichero reclasificador (*.MRC). Este fichero está compuesto por líneas de números donde se especifican estos cambios. Una línea que contiene dos números quiere decir que al primer valor se le asignará el segundo (en el ejemplo que tenemos a continuación corresponde a la línea 2); una línea que contiene tres números implica que un valor comprendido entre el primero y el segundo (igual o superior al primero y estrictamente inferior al segundo) pasará a ser el tercero (ejemplo línea 3). Este formato permite dejar líneas en blanco y poner comentarios cuando la primera posición de la línea es ';' (ejemplo línea 1). Observe que el formato de reclasificación no necesita cerrar el comentario con un segundo ';'.
El formato de reclasificación también tiene formatos especiales para enviar un valor (ejemplo línea 5) o un intervalo (ejemplo línea 6) al valor de fondo o "sindatos", definiendo como nuevo valor el literal "NODATA", y que también puede reclasificar el valor de fondo como un píxel cualquiera (ejemplo línea 4) y asignarle un nuevo valor perdiendo la condición de valor de fondo.
Hay que entender el argumento "capa a reclasificar" de la manera más general posible, es decir, puede corresponder efectivamente a uno de los ficheros seleccionados, o al resultado de cualquier operación definida entre capas y escalares. De la misma manera, el resultado de la reclasificación puede guardarse como resultado definitivo o puede ser simplemente uno de los cálculos intermedios de la expresión matemático-lógica.
Ejemplos de formatos correctos de reclasificación:

;Esta línea es un comentario
10 20
1 5 8
NODATA 1
1 NODATA
2 3 NODATA 
Ejemplos de formatos incorrectos de reclasificación:
Esta línea es un comentario definido incorrectamente
10 
1 5 8 9
NODATA 1 2
1 NODATA 2
NODATA NODATA
Ejemplo de expresión en el que se reclasifica un formato intermedio:
RECL([niveles_altimetricos], [MDE]*10)
En este ejemplo, un Modelo Digital de Elevaciones (MDE) en decímetros se pasa a metros y entonces se reclasifica en niveles altitudinales con el fichero "niveles_altimetricos.MRC".

En el botón "Avanzadas", la casilla "Descripción valores" permite introducir una cadena descriptiva de los tipos de valores que se obtendrán. Este descriptor se mostrará entre paréntesis cuando consulte por localización el fichero resultante. Normalmente déjelo en blanco para resultados categóricos (por ejemplo en mapas temáticos) y asígnele las unidades adecuadas en caso de mapas de valores continuos (por ejemplo "°C" para un mapa que resulta de un modelo de regresión que aproxima la temperatura en grados centígrados). En el caso de resultados categóricos, el fichero resultante puede importar las categorías asociadas a cualquier capa (descritas en el fichero DOC o en la tabla DBF asociada para imágenes ráster), en particular de alguna de las imágenes que formen la expresión matemático-lógica. Este fichero de categorías, si es necesario, debe quedar indicado en la casilla "Fichero de categorías". De esta manera, es fácil hacer que un fichero de salida categórico tenga automáticamente sus categorías bien descritas si tenemos un DOC de referencia o un tabla DBF asociada.
También en el botón avanzadas podemos definir el valor NODATA en el fichero resultado; recomendamos utilizar siempre el parámetro automático, excepto en casos especiales donde el usuario necesite asignar un valor concreto al valor NODATA.
La opción avanzada "Reservar desde el principio el valor NODATA" es útil para anticiparnos al programa, cuando conocemos de antemano que se generará un valor sindatos en el fichero resultado; en cualquier caso, si no dejamos activado este parámetro, si el programa detectase la necesidad de escribir un valor sindatos en el fichero resultado haría las modificaciones necesarias para añadirlo.
Cuando no hay ningún ráster en la fórmula hay que definir el ámbito del ráster de salida y es necesario indicar las coordenadas del envolvente y el lado del píxel en las casillas correspondientes.

Como todas las Aplicaciones de Soporte a MiraMon lanzadas desde su correspondiente interfaz Windows, la calculadora guarda los parámetros de cada ejecución en un fichero de texto para poder recuperar los parámetros de la última ejecución. Asimismo, en caso de querer guardar una expresión concreta para recuperarla en cualquier otro momento, independientemente de haber ejecutado otros cálculos en el intervalo, puede pulsarse el botón "Guardar...". La fórmula quedará guardada en el fichero MMC que indique (excepto el nombre reservado para la última ejecución, usado internamente para la aplicación, _PARCLMM.MMC). Para recuperar una fórmula guardada, simplemente pulse el botón "Cargar". Si en la última ejecución se definió explícitamente un valor sindatos, el símbolo '!' al lado del botón "Avanzadas..." nos avisará de que es muy conveniente volver a restablecer el automático si la nueva ejecución no tiene las particularidades que causaron el cambio de la definición del valor de fondo.

Para más información se puede consultar lasiguiente referencia:

Pesquer L, Masó J, Pons X (2000) Herramientas de análisis combinado ráster/vector en un entorno SIG. Aguado I, Gómez M (eds.) Tecnologías Geográficas para el Desarrollo Sostenible. Departamento de Geografía. Universidad de Alcalá, 2000: 53-73. IX congreso del Grupo de Métodos Cuantitativos, Teledetección y SIG de la Asociación de Geógrafos Españoles, Alcalá de Henares.


Caja de diálogo de la aplicación

Caja de diálogo de CalcImg


Ejemplos

Ejemplo 1: Queremos crear una imagen ya multiplicada por una máscara: Supongamos que queremos seleccionar, de la imagen 'A', las zonas que en la imagen 'B' tienen valores superiores a 3000.
La operación será: [A]*([B]>3000)
En este caso la imagen resultante presentará 0 en las zonas con valores inferiores o iguales a 3000 en la imagen B, y mantendrá los valores originales de la imagen A en las demás zonas (las de valores superiores a 3000).


Ejemplo 2: Queremos reclasificar en dos grupos los valores de una imagen 'C'. Los valores inferiores a 100 los pasamos a 50 y los superiores o iguales a 150.
La operación será: ([C]<100)*50+(NOT([C]<100))*150
Alternativamente, puede usarse la forma: ([C]<100)*50+([C]>=100)*150
La imagen resultante tendrá dos posibles valores: 50 ó 150, según sea el original inferior o no a 100.
También podemos utilizar la función de reclasificación: RECL([MMReclas],[C]) si conocemos el rango de valores de la capa 'C'. En caso de que 'C' sea un ráster de tipo byte o byte-RLE el contenido del fichero de reclasificación MMReclas.MRC sería:

0 100 50
100 256 150
o, si desconocemos el rango de valores del ráster 'C', también es admisible una reclasificación basada en un fichero MRC como éste:
-1.0E+40 100 50
100 1.0E+40 150


Ejemplo 3: Queremos obtener un ráster resultado de la agrupación de las categorías:

category1 : Arbolado denso 
category2 : Arbolado claro 
category3 : Bosques de ribera
category4 : Reforestaciones
category5 : Alameda
category6 : Plataneda
category7 : Matorral 
category8 : Vegetación de humedales
category9 : Prados y herbazales
category 10 : Incendios CORINE
category 11 : Roquedales
category 12 : Tarteras
category 13 : Zonas denudadas
category 14 : Playas
category 15 : Aguas continentales 
category 16 : Glaciares y nieves permanentes
category 17 : Cultivos
category 18 : Zonas urbanizadas
category 19 : Vías de comunicación 
category 20 : Zonas deportivas y lúdicas 
category 21 : Zonas de extracción minera
según la reclasificación:
1 11 1
11 17 2
17 3
18 21 4
El ráster resultado tendrá 4 categorías que podrían definirse como:
category1 : Terreno forestal 
category2 : Improductivo natural 
category3 : Cultivos
category4 : Improductivo artificial


Ejemplo 4: Dada una imagen '256c', para seleccionar tanto los valores "3" como los valores "12", y ponerlos a "1", dejando con valor "0" los restantes valores escriba:

([256c]=3)OR([256c]=12)
Esta operación también puede realizarse desde MiraMon, a través de una consulta por atributo y guardando el resultado en un fichero IMG.


Ejemplo 5: Dada una imagen '256c', para seleccionar tanto los valores "3" como los valores "12", pero preservando sus valores "3" y "12" en el resultado (y poniendo a "0" los valores restantes) escriba:

(([256c]=3)OR([256c]=12))*[256c]


Ejemplo 6: Queremos obtener el modelo digital de elevaciones de tres comarcas a partir del modelo digital de elevaciones de toda Catalunya '[Mde300]' y del fichero vectorial de comarcas '[Coma800]'.

[Mde300]*([Coma800;Comarca;]="Bages" OR [Coma800;Comarca;]="Solsonès" OR [Coma800;Comarca;]="Berguedà")
Es necesario indicar que el fichero resultado tendrá el mismo ámbito que [Mde300], de toda Catalunya, y habría que utilizar la aplicación Retalla si deseáramos reducir el ámbito.


Ejemplo 7: Un ejemplo, menos intuitivo, pero interesante de cara a ver cómo se trata la rasteritzación dinámica en la calculadora, es la rasterización de una capa de líneas '[Perfiles]' donde se desea que las líneas rasterizadas queden a 0 y el exterior quede a 1.

[Perfiles;LONG_ARC;]=0 
donde se ha definido 'Valor exterior al vector'=0
En las celdas afectadas por el vector (rasterizadas) ningún arco tiene longitud 0 y, por lo tanto, la operación lógica devuelve FALSO, o sea cero. En cambio, como en el exterior asignamos un 0, al compararlo con el valor cero, el resultado es VERDADERO, o sea 1.


Ejemplo 8: Deseamos generar un valor aleatorio entre -1 y 1.Raster1 es un ráster constante de valor 1, es necesario para definir el ámbito y lado de píxel del fichero de salida.

(RND(2)-1)*[Raster1]
	


Sintaxis

Sintaxis:

Parámetros:

Descripción del fichero de parámetros (*.MMC) y de la sintaxis matemática y lógica:

(no es necesario leerlo si usamos la interfaz Windows)

Operadores y funciones implementados

+Suma o signo positivo.
-Resta o signo negativo.
*Multiplicación.
/División.
ANDY. 
OR O.
NOTNegación
XORO exclusiva.
>'Mayor que' estricto.
>=Mayor o igual.
<'Menor que' estricto.
<= Menor o igual.
=Igual.
=/=Diferente.
SQRT Raíz cuadrada.
LOGLogaritmo en base 10.
LN Logaritmo neperiano.
EXPExponencial.
INVInverso.
ENTTruncamiento.
ABSValor absoluto.
RNDValor aleatorio entre 0 y el argumento.
BOLBooleano.
POWPotenciación. 
NR Ratio normalizado.
MODResto de la división.
MAXMayor de dos valores.
MINMás pequeño de dos valores.
RECL Reclasificación.
CVRTransparentar (*).
(*) La función Transparentar (también llamada Cover) devuelve el valor del segundo argumento cuando el primer argumento es igual al valor de fondo (valor definido para sindatos en la documentación del primer fichero si es un ráster) y devuelve el primer argumento cuando es diferente a este valor. De este modo, los valores del segundo fichero se ven a través de las zonas "sindatos" de la primera capa. Como en los otros casos, cualquiera de los argumentos de Transparentar puede ser los resultados parciales de otras operaciones entre capas y escalares.
SINSeno.
COSCoseno.
TANTangente.
ASIN Arcoseno.
ACOS Arcocoseno.
ATAN Arcotangente.
COSECCosecante.
SECSecante.
CTGCotangente.
SING Seno.
COSG Coseno.
TANG Tangente.
ASINGArcoseno.
ACOSGArcocoseno.
ATANGArcotangente.
COSECG Cosecante.
SECG Secante.
CTGG Cotangente.

El orden de precedencia viene dado por seis categorías de operadores y funciones ordenadas de mayor a menor precedencia. Dentro de la misma categoría las operaciones se efectúan de izquierda a derecha. Las categorías son las siguientes:

No se ha implementado la función condicional
?(condición, funcio_TRUE, funcio_FALSE) ya que puede reproducirse con una combinación de operaciones lógicas de la forma:

(condición)*(funcio_TRUE)+(NOT condición)*(funcio_FALSE)