Visión general de un programa en LEGAL.
Declaración
Instanciación
Operación
Declaración
Una declaración consiste en la asociación de un nombre a una variable, que será seguidamente instanciada, pudiendo participar en expresiones y operaciones de un programa en LEGAL.
Las variables pueden ser de tres tipos: variables de campo, de tabla y reales. Una variable de campo identifica una representación en un plano de información del proyecto activo en el ambiente SPRING. Una variable de tabla representa una tabla que será usada en expresiones que envuelven transformaciones entre tipos de representaciones. Las variables reales pueden asumir valores numéricos y participar de expresiones junto a los otros tipos de variables.
La figura a continuación muestra el diagrama para las variables del tipo campo.

En una declaración de variable de campo, el primer término indica el tipo de campo a ser asociado a la variable, el nombre_variable será su identificador para todo el programa. El nombre_categoría, entre comillas y paréntesis, indica la categoría en el proyecto activo a la cual deberán pertenecer las representaciones (campos) instanciadas a la variable a lo largo de un programa. Más de un nombre de variable puede ser simultáneamente declarado para una misma categoría.
Ejemplos:
Tematico suelo("Tipo_Suelo"), geo("geologia");
Numerico alti1 ("ALTIMERIA");
Imagen banda3, banda4, ivdn ("LANDSAT");
OBS: Los nombres de categorías, clases y PIs deben ser utilizados con la misma sintaxis con que fueron definidos anteriormente en el esquema conceptual.
La variable del tipo Tabla (representada por el diagrama que sigue) permite declarar tablas que serán usadas para definir transformaciones entre campos y objetos de diferentes tipos.
En una declaración de tabla, el primer término deberá contener la palabra reservada Tabla, seguida del nombre de la variable y de una palabra llave indicando el tipo de transformación - Reclasificación, SliceTabla o Ponderación.
Las tablas permiten implementar operaciones de transformaciones entre tipos de campos. La Reclasificación permite el mapeo entre campos de hasta dos categorías temáticas diferentes, en SliceTabla (Delimitación de Intervalos, "Fatiamento") un campo de una categoría numérica es mapeado en un temático, mientras que en una Ponderación el mapeo de una representación temática es para una numérica.
La reclasificación por atributos es una operación de transformación en la cual pueden ser generados datos del modelo temático o numérico, a partir de un mapa catastral y de valores de atributos de una categoría de objetos dada. Para esto es necesario declarar una variable especial del tipo atributo (ver diagrama a continuación).
En una declaración de variables de atributos debe ser indicado el nombre de la categoría de objetos a la que el atributo pertenece, como también el nombre que lo identifica para el ambiente SPRING.
Ejemplo:
Atributo valores ("LOTES","IPTU");
Existen aún las variables reales, que son simplemente asociadas a valores numéricos enteros o puntos fluctuantes; representan números y pueden ser usadas como factores o parcelas en expresiones temáticas, numéricas o de imágenes, además de expresiones reales como en otros lenguajes de programación.
Ejemplo:
OBS: Esencialmente, la declaración de esas variables coinciden con su instanciación.
Declaración
Instanciación
Operación
Instanciación
La instanciación consiste en la asociación efectiva de un plano de información a una variable de campo previamente declarada, o a una tabla especificada por una variable de tabla, o aún, en el caso de variables reales, a la asociación con valores numéricos.
El lenguaje permite la creación de nuevos planos de informaciones para almacenar resultados de expresiones envolviendo otras representaciones, utilizando la palabra reservada Nuevo, o también, la recuperación de PIs previamente creados, a través de Recupere.
Cuando se desea recuperar un PI el único parámetro a ser dado es el nombre del mismo, pero cuando se desea crear uno nuevo, varios parámetros deben ser dados además del nombre, los cuales dependen del modelo de datos en cuestión, como ser:
- Imagen: resolución horizontal/vertical y número de bits de la imagen (8 ó 16);
- Numérico: resolución horizontal/vertical, valores máximos y mínimos aceptables;
- Temático (representación matricial): resolución horizontal/vertical y escala;
- Temático (representación vectorial): resolución horizontal y vertical, escala y representación.
Las palabras reservadas, utilizadas para definir los atributos a ser dados en una recuperación o creación de un PI, son:
Nombre: indica el plano de información a ser asociado a la variable definida. Este plano debe ser del modelo compatible con el tipo de variable cuando se está creando uno nuevo.
ResX y ResY: indican la resolución para las representaciones de todos los tipos (categorías) de PI;
Escala: indica la escala deseada para PIs temáticos y numéricos;
Min y Max: indica valores mínimo y máximo de retícula para PIs numéricos;
Repres: indica la representación cuando un PI es temático o numérico;
Nbits: indica el número de bits de la imagen a ser creada.
NOTA: En el caso del modelo temático o numérico puede ser especificado el tipo de representación a ser creada o recuperada, Vector o Raster para temáticos y Retícula o Muestra para numérico. La definición de la representación será entendida, por omisión, como Raster o retícula en cada caso.
Vea a seguir el diagrama para instanciaciones de variables de campo (PIs).
Ejemplo de recuperación de PIs:
tema = Recupere (Nombre = "cuencashidrograficas");
alti = Recupere (Nombre = "CotasAltimetricas");
ima = Recupere (Nombre = "TM4");
Ejemplo de creación de PIs:
suelo = Nuevo (Nombre = "Suelos_A", ResX=50, ResY=50,
Escala=100000, Repres = Vector);
alti = Nuevo (Nombre = "Altimetria", ResX=50, ResY=50,
Escala = 1000, Min=0, Max=100);
ima = Nuevo (Nombre = "ImagenTM_Res", ResX=30, ResY=30, Nbits = 8);
En el caso de instanciación de una variable de tabla, son utilizadas las palabras reservadas: CategoriaIni y CategoriaFim, las cuales indican las categorías temáticas involucradas en los operadores de transformación, tales como, Reclasificación, Ponderación y SliceTabla (Delimitación de Intervalos, "Fatiamento").
En la Reclasificación las dos categorías temáticas (inicial y final) deben ser dadas. En la Ponderación solamente la categoría temática de entrada, cuyas clases serán ponderadas, debe ser indicada. En SliceTabla debe ser indicada la categoría temática de salida. No se debe olvidar que los nombres de las categorías involucradas deben aparecer entre comillas.
Vea a continuación el diagrama para instanciaciones de tablas.
En la Reclasificación, un plano de información temático es generado a partir del mapeo de clases de otro plano temático de entrada, que puede ser de cualquier otra categoría temática definida en el proyecto activo.
Ejemplo de tabla de reclasificación:
grupo = Nuevo(CategoriaIni = "Vegeta", CategoriaFim = "Vegeta",
"Da" : "BosqueAluvial",
"Db", "Ds1", "Ds2", "Ds4", "Dm" : "Bosque Ombrofilo",
"sd", "sp", "sA" : "Sabanas",
"Pfm", "Pa", "Pah" : "FmPioneras",
"Ap" : "Floresfila");
En SliceTabla es generado un PI temático a partir de un PI numérico. Las clases temáticas del plano resultante son asociadas a intervalos de valores numéricos en el plano de entrada.
Ejemplo de tabla de delimitación de Intervalos:
grupo = Nuevo(CategoriaFim = "Vegetacion",
[0.0, 0.2]: "Bosque",
[0.2, 0.45], [0.8, 1.0]: "Bosque_Galeria",
[0.45, 0.8]: "Sabana");
La Ponderación es lo contrario a la delimitación de intervalos, debido a que un PI numérico es creado a partir de uno temático y cada punto de la retícula tendrá un valor numérico definido por el peso asociado a la clase a la que pertenece en el plano temático de entrada.
Ejemplo de tabla de ponderación:
ponde1 = Nuevo(CategoriaIni = "Vegetacion",
"Bosque": 0.2,
"Bosque_Galeria", "Mata": 0.43
"Cerrado"): 0.456);
Declaración
Instanciación
Operación
Operación
Después de la declaración e instanciación de variables, sigue la definición de las acciones válidas a ser realizadas sobre ellas. Los resultados de acciones en Legal son invariablemente representados por operaciones. En una operación, una variable recibe el resultado del procesamiento de expresiones, envolviendo operadores del lenguaje que actúan sobre las variables declaradas e instanciadas previamente en el programa. El diagrama a continuación muestra las posibles relaciones en las operaciones.

Las expresiones de operaciones en Legal, son clasificadas según el modelo de datos asociado a la variable a la que está siendo atribuido un resultado, la cual puede ser una expresión de imagen, numérica o temática.
Las operaciones de álgebra de mapas en LEGAL pueden ser clasificadas como: puntuales o locales (de vecindad).
Los operadores aritméticos ‘+’, ‘-’, ‘*’, ‘/’y ‘^’, como también las funciones matemáticas (seno, tangente, etc.), son entendidos como puntuales o locales, o sea, actúan sobre cada elemento de una representación matricial de imagen o retícula numérica, o sobre elementos vecinos que son localizados de manera relativa con respecto a un elemento de referencia.
Operaciones locales, como filtrajes y crecimiento de regiones, entre otras, pueden ser implementadas en LEGAL (de modo de representar en expresiones elementos vecinos a un elemento de referencia ), a través de una forma de indexación de matrices, en la cual el primer índice indica un dislocamiento, positivo o negativo, en términos del número de líneas, mientras que el segundo índice se refiere al de columnas.
Por ejemplo, considere una variable imagen ‘img’. Cuando una cierta imagen participa de una expresión se debe entender que cada pixel será procesado hasta que el resultado de la expresión sea obtenido. En este contexto, si la variable aparece de forma indexada ‘img[i,j]’, eso indica que el pixel está situado en ‘i’ línea y ‘j’ columna.
Declaración
Instanciación
Operación
Consulte sobre las Expresiones en LEGAL: