-
Aspectes generals de sintaxi a les Aplicacions de Suport al MiraMon
Introducció
En aquest document es recullen aspectes de sintaxi que afecten a algunes Aplicacions de Suport al MiraMon.

Selecció d'un camp de la base de dades associada
- REL v.1:
- /TAULA= és l'índex, numerat des de 0, que indica quina és la taula de la base de dades que conté el camp atributiu d'interès: indiqueu -1 si és la taula principal o bé l'índex del camp de la taula principal sobre el qual és vinculada la taula associada (normalment un tesaurus).
- /CAMP= és l'índex del camp dins la taula escollida (també numerat des de 0). Aquests criteris d'indexació es poden conèixer amb InfoTop o utilitzant la pròpia interfície Windows del programa wCombiCa i prement el botó ">>BAT...".
- REL v.4:

Selecció d'un registre quan hi ha registre múltiple per a un objecte gràfic
- /REPE= indica quin registre es pren en cas que existeixin múltiples registres sobre el mateix identificador gràfic (1 per la 1a, 2 per la 2a...). Si s'indica amb signe menys es comença a comptar per l'última; si indiqueu, per exemple, 2a ocurrència i aquesta NO existeix, l'objecte gràfic és totalment ignorat. El valor per defecte és 1.

Selecció d'objectes gràfics per atributs de la base de dades, o de cel·les de ràsters per consulta sobre els seus valors
- /COND#_TAULA= i /COND#_CAMP= taula i camp escollits per a la condició #. # és un índex que comença des de 1. Per saber més sobre els valors d'aquests paràmetres seguiu les consideracions de l'apartat Selecció d'un camp de la base de dades associada en aquest mateix document.
- /COND#_OP= és l'operador lògic de la condició #. # és un índex que comença des de 1. Pot ser:
- "EQ" igual (=)
- "NO_EQ" diferent (=/=)
- "LT" més petit que... (<)
- "GT" més gran que... (>)
- "LT_EQ" més petit o igual que... (<=)
- "GT_EQ" més gran o igual que... (>=)
- "INTERVAL" interval tancat, que inclou els extrems ([a,b])
- "EQ_SUBCADENA" cadena amb... (amb)
- "NO_EQ_SUBCADENA" cadena sense... (sense)
- /COND#_VALOR= és el valor del camp. Calen cometes si porta espais.
- /COND#_NEXE= nexe entre les condicions # i #+1. Pot ser AND (i) o OR (o).
- /COND#_PRIOR= prioritat del nexe #, indexada des de 1. És un paràmetre optatiu, on de no indicar-se, la prioritat és simplement l'ordre. Les caixes de diàleg mostren una traducció de les prioritats de cada condició expressada en notació de parèntesis.

Selecció d'una coordenada Z per cada vèrtex en fitxer vectorial 3D amb múltiples alcades per vèrtex
- /ALCADA= Determina quina de les possibles alçades es escollida: 0 per la primera que es trobi, 1 per la superior i 2 per la inferior.

Format intern de la data i l'hora
- DATA: La data es desa en el format AAAAMMDD és a dir 20030103 per a 1 de març de 2003. Aquest format té l'avantatge que és directament ordenable.
- HORA: L'hora es pot emmagatzemar fins a centèsimes de segon seguint el format HHmmsscc és a dir 23595999 per a les 23:59:59.99 hores (en hora local oficial). Noteu que s'usa un format de 24h i no se suporta la notació en 12h i am/pm. Segons el tipus d'hora es pot afegir a darrera d'aquesta cadena alguna altra codificació:
- Hora UTC: S'afegeix una Z al final de l'hora, per exemple: 23595999Z per a les 23:59:59.99 hora UTC.
- Hora local oficial amb corrector: S'afegeix el corrector horari al final de l'hora. Aquest està format per un signe (+ o -), dos dígits indicant el nombre d'hores i dos dígits indicant el nombre de minuts (sense separadors). Per exemple: 23595999+0130 per a les 23:59:59.99 hora local oficial amb un corrector de pas de UTC a local d'una hora i mitja.
- Hora solar: S'afegeix una S al final de l'hora, per exemple: 23595999S per a les 23:59:59.99 hora solar local.
- DATA i HORA ÚNICA: La data i l'hora s'escriuen seguides i separades per un espai, per exemple "20030103 2359599" per a 1 de març de 2003 a les 23:59:59.99 hora local oficial (sense corrector).
- INTERVAL DE DATA i HORA: La data i hora final de l'interval s'escriuen darrera la data i hora inicial de l'interval i separades per una coma (sense espais). Per exemple "20030103 2359599,20040103 2359599" per al període entre l'1 de març de 2003 a les 23:59:59.99 i l'1 de març de 2004 a les 23:59:59.99 amb hores locals oficials (sense corrector). Les dues hores d'un interval han de ser del mateix tipus. No és possible barrejar, per exemple, una hora local oficial amb corrector amb una hora local oficial sense corrector, encara que sí que és possible emmagatzemar un corrector horari diferent per la data inicial i final.
- DATA I HORA INCOMPLETA: En cas de voler documentar una hora de forma incompleta utilitzeu el 9 com a marca de desconegut. Si tota l'hora és desconeguda no cal escriure-la. Per exemple "20030103 23999999,20040103" correspondria al període entre l'1 de març de 2003 a les 23 hores (minuts, segons i centèsims desconeguts) i l'1 de març de 2004 (hora desconeguda).
Per a més informació consulteu les consideracions generals sobre la data i l'hora.

Algorismes disponibles per a l'estructuració topològica (/ALGORISME)
El MiraMon permet estructurar topològicament els conjunts d'informació vectorials. Aquesta estructuració topològica implica analitzar i, conseqüentment organitzar, les entitats vectorials de manera que les seves relacions espacials estiguin explícitament descrites. Els beneficis d'aquesta estructuració topològica són múltiples: garantir la consistència espacial, evitar superposicions indesitjades (totals o parcials) d'entitats, evitar errors com ara "escletxes" entre polígons, estalviar espai d'emmagatzematge i augmentar la velocitat de transmissió de les dades, permetre anàlisis de xarxes, etc. Aquests beneficis permeten incrementar el ventall possible d'anàlisis geogràfiques (algunes de les quals no són possibles sense estructuració topològica) i efectuar-les de manera robusta i fiable.
En el cas d'elements lineals (e.g., rius), o en el cas de les vores dels elements poligonals (e.g., parcel·les cadastrals), l'anàlisi a efectuar comporta la detecció d'interseccions entre els segments que formen les línies i les vores de polígons; aquestes interseccions poden ser al llarg dels segments o per contacte dels seus extrems i generen vèrtexs especials que s'anomenen nodes (com també són nodes els vèrtexs dels segments que no intersequen amb cap altre segment). En capes amb moltes línies o polígons, aquest procediment pot requerir un temps de càlcul considerable, que pot augmentar exponencialment segons com estiguin disposades les entitats originals (grans línies que presenten moltes interseccions amb la resta, superposició explícita per parelles de segments [com passa en les capes de polígons explícits de la majoria de formats de SIG], etc). Per a realitzar aquesta detecció de manera el més eficaç possible, es pot escollir entre dos algorismes (procediments): "algorisme directe" i "algorisme d'escombratge". Aquests algorismes estan disponibles en les diferents aplicacions del MiraMon que realitzen estructuració topològica (LinArc, BufDist, CombiCap, Retalla, SHPTop, etc) i s'indiquen, en la línia de comanda, amb el modificador /ALGORISME=. A continuació es consignen els diferents algorismes disponibles.
- /ALGORISME=DIRECTE: L'algorisme determina la intersecció de cadascun dels segments amb la resta de segments, analitzant-los dos a dos. Cada intersecció trobada implica, excepte quan és per l'extrem dels dos segments, la partició d'un segment o dels dos, i l'augment de la complexitat de la tasca d'anàlisi pendent fins a concloure l'estructuració topològica.
- /ALGORISME=ESCOMBRATGE: Utilitza l'algorisme de Bentley-Ottmann, el qual ordena els elements vectorials d'una determinada manera en el pla i fa un escombratge d'esquerra a dreta que va calculant les interseccions entre elements propers. Amb això s'evita comparar elements que se sap que mai no es tallaran, evitant així molt de temps de càlcul en un gran nombre de situacions.
- /ALGORISME=AUTOMATIC: Es deixa al programa l'elecció entre els mètodes descrits anteriorment.
Llavors,
- /ALGORISME=DIRECTE és més ràpid per a capes on ja s'hagi realitzat una estructuració prèvia, o bé se sàpiga que no hi ha interseccions més enllà dels vèrtexs ja existents (l'estructuració topològica és implícita o és una capa de polígons explícits [vores repetides 2 cops]).
- /ALGORISME=ESCOMBRATGE és més ràpid justament en el cas contrari: capes on els elements tallen altres elements provocant interseccions en punts que no eren prèviament vèrtexs al final de línies i que, per tant, són nous nodes de la capa de sortida.
Si en el moment d'estructurar una capa se sap que l'estructuració generarà nous vèrtexs (és a dir, es detectaran interseccions) és millor escollir "escombratge". En cas contrari, es pot escollir "directe". En cas de dubte, podeu indicar "automàtic", però aquest mode pot requerir més temps que el més ràpid dels dos anteriors (però menys que el més lent), ja que si quan ha fet un percentatge dels procediments detecta que el mode inicial no és òptim torna a començar amb l'altre mode.

Desempat per als quantils (modificador opcional /MEDIANA_EMPAT=)
Si una aplicació efectua el càlcul d'algun quantil (com ara la mediana, un quartil o un percentil), es pot indicar el tipus de desempat a usar per al seu càlcul quan la posició del quantil sigui entre dos valors de la sèrie. El criteri també s'aplicarà quan s'ha de calcular la mitjana de les desviacions absolutes respecte de la mediana (ja que requereix calcular la mediana). Les opcions de càlcul són:
- /MEDIANA_EMPAT=1 per a escollir valor alternat.
- /MEDIANA_EMPAT=2 per a escollir valor inferior.
- /MEDIANA_EMPAT=3 per a escollir valor superior.
- /MEDIANA_EMPAT=4 per a escollir mitjana dels dos valors entre els quals els troba.
L'opció per defecte és la 1.
