Presentació i opcions Caixa de diàleg de l'aplicació
Exemples Sintaxi

Presentació i opcions

Aquest programa permet realitzar reclassificacions, operacions matemàtiques i lògiques, simultàniament, sobre capes de qualsevol tipus (ràsters, vectors estructurats i vectors no estructurats), en qualsevol nombre i en qualsevol directori. Les operacions lògiques retornen 1 en cas vertader i 0 en cas fals.

L'expressió matemàtica ha de contenir, com a mínim, un fitxer i, en canvi, pot no tenir definit cap operador o funció; en aquest cas pot utilitzar-se per a saturar o escalar el fitxer, canviar el valor de fons, transformar el format d'un fitxer ràster, rasteritzar un vector... encara que existeixen aplicacions específiques per aquestes últimes transformacions (vegeu IMGIMG, TiraVec).

Tots els ràsters que formin part de l'expressió han de correspondre al mateix àmbit geogràfic, han de tenir la mateixa resolució i les mateixes unitats referides al mateix sistema de referència. En canvi, poden ser de diferent tipus (byte, real, etc) i no importa el grau de compressió. Se sobreentén que l'àmbit de les capes vectorials queda definit per l'àmbit de les capes ràster de l'expressió, quan n'hi ha. Per a expressions on només participin capes vectorials caldrà definir l'àmbit a través del botó d'opcions Avançades. Les singularitats de les operacions o funcions utilitzades (p. ex.: divisió entre zero, arrel negativa...) sempre donaran com a resultat en aquella posició geogràfica un valor igual al valor NODATA (sensedades). Aquest valor l'estableix el programa en funció del tipus de dada del fitxer resultat (255 per tipus byte, 0 per a tipus bit, i el valor més negatiu possible per a la resta de tipus), excepte que s'indiqui explícitament en la caixa d'opcions avançades; en aquest darrer cas cal tenir cura d'escollir el valor de fons fora del rang de valors possibles del ràster resultat. En cas de dubte, deixeu que sigui l'aplicació qui determini el valor.

Tots els càlculs es realitzen en doble precisió (15-16 xifres significatives i rang aproximadament entre 1.7E-308 a 1.7E+308). La longitud o complexitat de l'expressió és il·limitada (només dependent del vostre hardware i sistema operatiu).

En la primera casella s'introdueix la fórmula matemàtico-lògica a calcular. En formen part nombres, capes (ràsters i vectors), operadors i funcions. Els noms de les capes que formen part de l'expressió matemàtica són àlies dels fitxers corresponents i s'indiquen entre claudàtors ('[' i ']'); els claudàtors són inclosos automàticament si inseriu la capa des del botó "Nova...". El nom és el nom del fitxer, indicat sense path per a major claredat de l'expressió (el programa sap el path perquè l'ha retingut en tornar de la caixa d'exploració per a seleccionar el fitxer; en el cas remot de noms de fitxers iguals en directoris diferents el programa introdueix un caràcter diferenciador per a poder avaluar igualment sense problemes). Quan la capa a inserir en l'expressió sigui un vector caldrà definir alguns paràmetres addicionals:

Exemple d'expressió comentada per a recordar i facilitar el seu objectiu:
;diferència en valor absolut;ABS([model];model teòric;-[dat0299];dades mostreig Febrer 1999;)

El botó Llistat ens informarà de les propietats de les capes que formen l'expressió, així com de la relació entre el seu àlies i el seu nom veritable.

Els operadors i funcions implementades es descriuen posteriorment. Els arguments de les funcions han d'estar tancats entre parèntesis; els parèntesis són inclosos automàticament si inseriu la fórmula des del botó "Llibreria de funcions..."; p. ex.: SING(30). Si la funció té més d'un argument cal separar-los per comes; p. ex.: MAX([IMG1],[IMG2]).

Tots els operadors poden ser usats tant en capes com en valors numèrics.
Per exemple, podeu fer:

 MAX([IMG1], SING(30))
i obtindreu, per cada cel·la de la capa IMG1, el màxim valor entre el valor de la cel·la i el sinus de 30°; també podeu escriure expressions com ara:
 MAX([IMG1], 100)
 100*SING([IMG1])
 MAX( MIN([IMG1],[IMG2]), 100)
 etc.

En cas de dubte, recomanem utilitzar la sintaxi construïda a partir d'anar polsant els botons i menús corresponents de l'aplicació Windows sense editar-los posteriorment, així com usar parèntesis sempre que dubteu sobre la precedència d'operadors.

El tipus de dada del fitxer de sortida es controla en el desplegable homònim. En el cas "automàtic", el propi programa ajusta el tipus de dada final en funció del rang i tipus (enter o real) dels valors del fitxer de sortida, i del seu nivell de compressió, comprimint si sembla adequat; per exemple, quan el resultat és booleà (0,1) s'opta per byte-RLE, que dona fitxers molt petits. "Automàtic" no comprimirà si tan sols una de les imatges que formen l'expressió està descomprimida (llevat del cas de resultats amb valors 0 o 1 -booleans- en què s'opta per byte-RLE). El cas bit només es genera quan se li especifica expressament, ja que habitualment un format byte-RLE dona fitxers de menor mida. Tot i que el mode automàtic és més còmode, el càlcul es realitza de forma substancialment més ràpida si es determina el tipus de dada de sortida; a més a més, "automàtic" necessita crear, durant el procés, un fitxer temporal en format double (format que fàcilment consumeix força espai de disc). Existeix un botó informatiu associat al tipus de dada, que permet conèixer quin és l'espai de disc que necessita el programa per a generar el resultat. En el cas de fitxers comprimits, quan es tria automàtic o quan s'activa l'opció Escalar, s'informa de l'espai màxim que es necessitaria si el fitxer o fitxers no poguessin comprimir-se en absolut (per automàtic i Escalar cal tenir en compte que el programa genera un fitxer temporal addicional).

Quan se selecciona "Saturar", si el rang de valors de sortida depassa el rang corresponent al domini (tipus de dada) triat, els valors que depassen s'assignen al màxim o al mínim del domini, segons convingui. En canvi, si se selecciona un escalat, el programa reescala linealment els valors resultants a l'interval indicat en les caselles "Mínim" i "Màxim" d'escalat. Exemple: Suposeu que un fitxer amb valors entre 0 i 200 és multiplicat per 2 i es tria el format de sortida byte; si se selecciona saturar, tots els valors entre 256 i 400 s'assignaran a 255, si se selecciona escalar, el rang [0,400] s'escalarà dintre el rang [0,255].

Quan el tipus de dada resultant no és real, el programa permet triar entre truncar o arrodonir (recomanat) el resultat. Aquest procés només s'aplica en la fase final de gravació del fitxer resultant, no durant els càlculs. Si us interessa truncar en una etapa intermèdia de l'expressió, utilitzeu la funció ENT() (part entera) disponible prement el botó "Llibreria de funcions".

La casella "Títol" permet introduir un títol descriptiu per al fitxer resultant; si el deixeu en blanc s'utilitzarà la fórmula matemàtico-lògica com a títol.

El botó Reclassifica permet definir la funció de Reclassificació: RECL([fitxer reclasssificador], [capa a reclassificar]). Aquesta funció canviarà valors antics de la capa a reclassificar per nous valors segons les correspondències especificades en el fitxer reclassificador (*.MRC). Aquest fitxer està compost per línies de nombres on s'especifiquen aquests canvis. Una línia que conté dos nombres vol dir que al primer valor se li assignarà el segon (en l'exemple que tenim a continuació correspon a la línia 2); una línia que conté tres nombres implica que un valor comprès entre el primer i el segon (igual o superior al primer i estrictament inferior al segon) passarà a ser el tercer (exemple línia 3). Aquest format permet deixar línies en blanc i posar comentaris quan la primera posició de la línia és ';' (exemple línia 1). Observeu que el format de reclassificació no necessita tancar el comentari amb un segon ';'.
El format de reclassificació també té formats especials per enviar un valor (exemple línia 5) o un interval (exemple línia 6) al valor de fons o "sensedades", definint com a nou valor el literal "NODATA", i que també es pot reclassificar el valor de fons com un píxel qualsevol (exemple línia 4) i assignar-li un nou valor perdent la condició de valor de fons.
Cal entendre l'argument "capa a reclassificar" de la manera més general possible, és a dir, pot correspondre efectivament a un dels fitxers seleccionats, o al resultat de qualsevol operació definida entre capes i escalars. De la mateixa manera, el resultat de la reclassificació pot guardar-se com a resultat definitiu o pot ser simplement un dels càlculs intermedis de l'expressió matemàtico-lògica.
Exemples de formats correctes de reclassificació:

;Aquesta línia és un comentari
10 20
1 5 8
NODATA 1
1 NODATA
2 3 NODATA 
Exemples de formats incorrectes de reclassificació:
Aquesta línia és un comentari definit incorrectament
10 
1 5 8 9
NODATA 1 2
1 NODATA 2
NODATA NODATA
Exemple d'expressió en què es reclassifica un format intermedi:
RECL([nivells_altimetrics], [MDE]*10)
En aquest exemple, un Model Digital d'elevacions en decímetres es passa a metres i aleshores es reclassifica en pisos altitudinals amb el fitxer "nivells_altimetrics.MRC".

En el botó "Avançades", la casella "Descripció valors" permet introduir una cadena descriptiva dels tipus de valors que s'obtindran. Aquest descriptor es mostrarà entre parèntesis quan consulteu per localització el fitxer resultant. Normalment deixeu-ho en blanc per a resultats categòrics (per exemple en mapes temàtics) i poseu-hi les unitats adequades en el cas de mapes de valors continus (per exemple "°C" per a un mapa que resulta d'un model de regressió que aproxima la temperatura en graus centígrads). En cas de resultats categòrics, el fitxer resultant pot importar les categories associades a qualsevol capa (descrites en el fitxer DOC o en la taula DBF associada per a imatges ràster ), en particular d'alguna de les imatges que formen l'expressió matemàtico-lògica. Aquest fitxer de categories, si es necessita, cal indicar-lo en la casella "Fitxer de categories". D'aquesta manera, és fàcil fer que un fitxer de sortida categòric tingui automàticament ben descrites les categories si tenim un IMG de referència.
També en el botó avançades podem definir el valor sensedades en el fitxer resultat; recomanem utilitzar sempre el paràmetre automàtic, excepte en casos especials on l'usuari necessiti assignar un valor concret al valor sensedades.
L'opció avançada "Reservar des de l'inici el valor NODATA" és útil per anticipar-nos al programa, quan coneixem que es generarà un valor sensedades en el fitxer resultat; en qualsevol cas, si no deixem activat aquest paràmetre, si el programa detectés que cal escriure un valor sensedades en el fitxer resultat faria les modificacions necessàries per afegir-lo.
Quan no hi ha cap ràster en la fórmula cal definir l'àmbit del ràster de sortida i cal indicar les coordenades de l'envolupant i el costat del píxel en les caselles corresponents.

Com totes les Aplicacions de Suport a MiraMon llançades des de la corresponent interfície Windows, la calculadora desa els paràmetres de cada execució en un fitxer de text per a poder recuperar els paràmetres de la darrera execució. Tanmateix, en el cas que vulgueu desar una expressió concreta per recuperar-la en qualsevol altre moment, independentment que hagueu executat altres càlculs entremig, podeu prémer el botó "Desar...". La fórmula quedarà enregistrada en el fitxer MMC que indiqueu (excepte el nom reservat per l'última execució, usat internament per l'aplicació, _PARCLMM.MMC). Per a recuperar una fórmula enregistrada, simplement premeu el botó "Carregar". Si en la darrera execució va definir-se explícitament un valor sensedades, el símbol '!' al costat del botó "Avançades..." ens avisarà que és molt convenient tornar a restablir l'automàtic si la nova execució no té les particularitats que van causar el canvi de la definició del valor de fons.

Per a més informació es pot consultar la següent referència:

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.


Caixa de diàleg de l'aplicació

Caixa de diàleg de la CalcImg


Exemples

Exemple 1: Volem crear una imatge ja multiplicada per una màscara: Suposem que volem seleccionar, de la imatge 'A', les zones que a la imatge 'B' tenen valors superiors a 3000.
L'operació serà: [A]*([B]>3000)
En aquest cas la imatge resultant presentarà 0 en les zones amb valors inferiors o iguals a 3000 en la imatge B, i mantindrà els valors originals de la imatge A en les altres zones (les de valors superiors a 3000).


Exemple 2: Volem reclassificar en dos grups els valors d'una imatge 'C'. Els valors inferiors a 100 els passem a 50 i els superiors o iguals a 150.
L'operació serà: ([C]<100)*50+(NOT([C]<100))*150
Alternativament, es pot usar la forma: ([C]<100)*50+([C]>=100)*150
La imatge resultant tindrà dos possibles valors: 50 o 150, segons l'original sigui inferior o no a 100.
També podem utilitzar la funció de reclassificació: RECL([MMReclas],[C]) si coneixem el rang de valors de la capa 'C'. En el cas que 'C' sigui un ràster de tipus byte o byte-RLE el contingut del fitxer de reclassificació MMReclas.MRC seria:

0 100 50
100 256 150
o, si desconeixem el rang de valors del ràster 'C', també és admissible una reclassificació basada en un fitxer MRC com aquest:
-1.0E+40 100 50
100 1.0E+40 150


Exemple 3: Volem un obtenir un ràster resultat de l'agrupació de les categories:

category1 : Arbrat dens 
category2 : Arbrat clar 
category3 : Boscos de ribera
category4 : Reforestacions
category5 : Pollancredes
category6 : Platanedes
category7 : Matollars 
category8 : Vegetació d'aiguamolls
category9 : Prats i herbassars
category 10 : Incendis CORINE
category 11 : Roquissars
category 12 : Tarteres
category 13 : Zones nues
category 14 : Platges
category 15 : Aigües continentals 
category 16 : Glaceres i neus permanents
category 17 : Conreus 
category 18 : Zones urbanitzades
category 19 : Vies de comunicació 
category 20 : Zones esportives i lúdiques 
category 21 : Zones d'extracció minera
segons la reclassificació:
1 11 1
11 17 2
17 3
18 21 4
El ràster resultat tindrà 4 categories que podrien definir-se com:
category1 : Terreny forestal 
category2 : Improductiu natural 
category3 : Conreus
category4 : Improductiu artificial


Exemple 4: Donada una imatge '256c', per a seleccionar tant els valors "3" com els valors "12", i posar-los a "1", deixant amb valor "0" els restants valors escriviu:

([256c]=3)OR([256c]=12)
Aquesta operació també pot ser efectuada des de MiraMon, a través d'una consulta per atribut i desant el resultat en un fitxer IMG.


Exemple 5: Donada una imatge '256c', per a seleccionar tant els valors "3" com els valors "12", però preservant els seus valors "3" i "12" en el resultat (i posant a "0" els restants valors) escriviu:

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


Exemple 6: Volem obtenir el model digital d'elevacions de a tres comarques a partir del model digital d'elevacions de tot Catalunya '[Mde300]' i del fitxer vectorial de comarques '[Coma800]'.

[Mde300]*([Coma800;Comarca;]="Bages" OR [Coma800;Comarca;]="Solsonès" OR [Coma800;Comarca;]="Berguedà")
Cal indicar que el fitxer resultat tindrà el mateix àmbit que [Mde300], de tot Catalunya, i caldria utilitzar l'aplicació Retalla si volguéssim reduir l'àmbit.


Exemple 7: Un exemple, menys intuïtiu, però interessant de cara a veure com es tracta la rasterització dinàmica dintre de la calculadora, és la rasterització d'una capa de línies '[Perfils]' en què volem que les línies rasteritzades quedin a 0 i l'exterior quedi a 1.

[Perfils;LONG_ARC;]=0 
on hem definit Valor exterior al vector=0
En les cel·les afectades pel vector (rasteritzades) cap arc no té longitud 0 i, per tant, l'operació lògica retorna FALS, o sigui zero. En canvi, a l'exterior com hi assignem un 0, en comparar-lo amb el valor zero, el resultat és VERITAT, o sigui 1.


Exemple 8: Desitgem generar un valor aleatori entre -1 i 1.Raster1 és un ràster constant de valor 1, és necessari per a definir l'àmbit i costat de píxel del fitxer de sortida.

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


Sintaxi

Sintaxi:

Paràmetres:

Descripció del fitxer de paràmetres (*.MMC) i de la sintaxi matemàtica i lògica:

(no cal llegir-ho si utilitzeu la interfície Windows)

Operadors i funcions implementats

+Suma o signe positiu.
-Resta o signe negatiu.
*Multiplicació.
/Divisió.
ANDI. 
OR O.
NOTNegació
XORO exclusiva.
>Més gran estricte.
>=Més gran o igual.
<Més petit estricte.
<= Més petit o igual.
=Igual.
=/=Diferent.
SQRT Arrel quadrada.
LOGLogaritme en base 10.
LN Logaritme neperià.
EXPExponencial.
INVInvers.
ENTTruncament.
ABSValor absolut.
RNDValor aleatori entre 0 i l'argument.
BOLBooleà.
POWPotenciació. 
NR Ràtio normalitzat.
MODResta de la divisió.
MAXMés gran de dos valors.
MINMés petit de dos valors.
RECL Reclassificació.
CVRTransparentar (*).
(*) La funció Transparentar (o també anomenada Cover) retorna el valor del segon argument quan el primer argument és igual al valor de fons (valor definit per a sensedades en la documentació del primer fitxer si es un ràster) i retorna el primer argument quan és diferent d'aquest valor. D'aquesta manera, els valors del segon fitxer es veuen al través de les zones "sense dades" de la primera capa. Com en els altres casos, qualsevol dels arguments de Transparentar poden ser els resultats parcials d'altres operacions entre capes i escalars.
SINSinus.
COSCosinus.
TANTangent.
ASIN Arcsinus.
ACOS Arccosinus.
ATAN Arctangent.
COSECCosecant.
SECSecant.
CTGCotangent.
SING Sinus.
COSG Cosinus.
TANG Tangent.
ASINGArcsinus.
ACOSGArccosinus.
ATANGArctangent.
COSECG Cosecant.
SECG Secant.
CTGG Cotangent.

L'ordre de precedència ve regit per sis categories d'operadors i funcions ordenades de major a menor precedència. Dins la mateixa categoria les operacions s'efectuen d'esquerra a dreta. Les categories són les següents:

No s'ha implementat la funció condicional
?(condicio, funcio_TRUE, funcio_FALSE) ja que pot reproduir-se amb una combinació d'operacions lògiques de la forma:

(condicio)*(funcio_TRUE)+(NOT condicio)*(funcio_FALSE)