Operaciones en LEGAL:
Operación en LEGAL.
Operaciones Puntuales
Las operaciones puntuales generan como salida PIs cuyos valores están en función de los valores de los PIs de entrada, para cada correspondiente localización . Pueden ser realizadas sobre sólo un PI (por ejemplo, Delimitar Intervalo, "Fatiar" un modelo numérico de terreno, clasificar una imagen) o por intersecciones entre varios PIs (por ejemplo, operaciones booleanas entre mapas temáticos).
Se pueden considerar diferentes posibilidades de operaciones:
Operaciones unitarias: la entrada es un único PI. También son llamadas operaciones de transformación, pues la operación equivale a un mapeo entre los PIs de entrada y salida.
Operaciones booleanas: son utilizadas en el análisis espacial cualitativo y generan un PI TEMÁTICO, a partir de reglas aplicadas a PIs de entrada (que pueden ser instancias de TEMÁTICO, NUMÉRICO o IMAGEN). Las reglas especifican el conjunto de condiciones a ser satisfechas para cada tema de salida.
Operaciones matemáticas: funciones aritméticas, logarítmicas y trigonométricas, aplicadas a MNTs y a IMAGEN. Pueden generar MNT, IMAGEN o TEMÁTICOS.
Otros Operadores puntuales: otros operadores como Operaciones Condicionales, Operaciones de Clasificación Continua y Reclasificación por atributos están disponibles.
">Reclasificación por atributos están disponibles.
Operaciones en LEGAL
Operadores Unitarios (de Transformación)
Los operadores de transformación (o unitarios) realizan el mapeo de un PI de varias maneras, dependiendo del operador utilizado, en donde:
Como regla, estos operadores requieren que el usuario defina el mapeo entre el PI de entrada y el que desea en la salida. Para esto, el lenguaje permite definir tablas (vea como definirlas anteriormente) que describen los mapeos deseados, bajo la forma de un operador Tabla que puede ser de diferentes tipos (Ponderación, SliceTabla (Delimitación de Intervalos, "Fatiamento"), Reclasificación).
Algunos ejemplos de operadores de transformación:
* "Reclasificar un mapa de vegetación con las clases {Bosque Ombrófilo Denso, Bosque Ombrófilo Abierto, Campos, Bosque Estacional} en un mapa con las clases {Bosque Denso, Bosque Abierto}."
* "Obtener un mapa hipsométrico a partir de un mapa de altimetría con el mapeo { (0-300m) - Planicie, (300-500m) - Planalto, (>500m) - Sierras}".
* "Cuantizar una imagen de satélite del infrarrojo termal en un mapa de temperaturas a partir de la ecuación Temp = 27*Imagen/100."
Operaciones en LEGAL
Ponderación
Un operador de ponderación transforma un PI temático en un PI numérico. La figura que sigue muestra un ejemplo del operador de ponderación (conversión de un mapa de suelos en un mapa de suelos ponderado). En este caso, el PI de entrada es un mapa de suelos con las clases { Le, Li, Ls, Aq } y el PI de salida es un MNT cuyos valores están entre 0.0 y 1.0 y la operación de ponderación consiste en la asociación {(Le-0.60), (Li-0.20), (Ls-0.35), (Aq-0.10)}.

Ejemplo de un operador de ponderación: si "SUELOpond" es una variable del modelo numérico, "SUELOS" del modelo temático y "ponderaSUELO" una tabla de ponderación, la expresión a continuación muestra la sintaxis de este operador:
SUELOpond = Pondere (SUELOS, ponderaSUELO);
Um ejemplo de programa en LEGAL para realizar tal operación es mostrado a continuación.
{
// Parte 1- Declaración
Tematico SUELOS ("Suelos");
Tabla ponderaSUELO (Ponderacion);
Numerico SUELOpond ("SueloPonderado");
// Definición de la Tabla de Pesos
ponderaSUELO = Nuevo (CategoriaIni = "Suelos",
Le : 0.60, Li : 0.2, Ls : 0.35, Aq : 0.1);
// Parte 2 - Instanciación del mapa de suelos
SUELOS = Recupere (Nombre = "SueloCE");
// Creación del nuevo mapa de suelos ponderado
SUELOpond = Nuevo (Nombre = "suelop", ResX = 30, ResY = 30,
Escala = 100000, Min = 0, Max = 1);
// Parte 3 - Operación de Ponderación
SUELOpond = Pondera (SUELOS, ponderaSUELO);
}
El programa anterior opera con los siguientes pasos:
- Inicialmente, los PIs y la tabla de ponderación son definidos (en las tres primeras líneas del programa, no considerando las líneas de comentarios). La tabla de ponderación es creada, siendo definidos los pesos atribuidos a cada clase;
- A continuación, el mapa de suelos a ser ponderado es recuperado a través de la función Recupere. El PI de salida es creado a través del operador Nuevo. El nuevo PI será creado como una retícula regular de resolución 30 x 30 metros, en escala 1:100.000 y con valores máximo y mínimo;
- La operación de ponderación es realizada, a través de la función Pondere.
Operaciones en LEGAL
Delimitación de Intervalos ("Fatiamento")
{
// Parte 1 - Declaración
// Declaración de Variables
Tematico clases_decl ("Declividad");
Numerico decliv_num ("Declividad_Numerica");
Tabla tab_interv (SliceTabla);
// Definición de la tabla de delimitación de intervalos
tab_interv:= Nuevo ( CategoriaFim = "Declividad",
[0.0, 5.0] : "Baja",
[5.0, 15.0]: "Media",
[15.0, 45.0]: "Alta");
// Parte 2 - Instanciación
// Recuperación del PI de Declividad Numérica
decliv_num = Recupere (Nombre = "Declive_SJC");
// Generación del PI de salida
clases_decl = Nuevo (Nombre = "Clases_Decl",
ResX = 50, ResY = 50, Escala = 100000);
// Parte 3 - Operación
// Operación de Delimitación de Intervalos
clases_decl = Slice (decliv_num, tab_interv);
}
El programa de arriba opera con los siguientes pasos:
- Inicialmente, los PIs y la tabla de delimitación de intervalos son definidos (en las tres primeras líneas del programa, no considerando las líneas de comentarios). La tabla de delimitación de intervalos es creada, siendo definida la clase atribuida a cada intervalo.
- Posteriormente, el mapa de declividad a ser delimitado es recuperado a través de la función Recupere.
- El PI de salida es creado, a través del operador Nuevo. Este PI será creado como una imagen temática de resolución 50 x 50 metros, en escala 1:100.000.
- La operación de delimitación de intervalos es realizada, a través de la función Delimite.
Operaciones en LEGAL
Reclasificación
La operación de reclasificación transforma un PI temático en otro temático. Como ejemplo, se tiene un mapa de cobertura del suelo en el Amazonas con diferentes clases {"Bosque Denso", "Bosque con Campos", "Regeneración", "Área Deforestada", "Sabana"}. Este mapa temático será reclasificado para un nuevo mapa apenas con las clases {"Bosque", "Deforestación", "Sabana"}.
Ejemplo de un operador de reclasificación, si: "cobertura" es una variable del modelo temático, "defor" también del modelo temático y "tab_recl" una variable que representa una tabla de reclasificación, la sintaxis de este operador sería:
desflor = Reclasifique (cobertura, tab_recl);
El ejemplo del programa en LEGAL que ejecutaría esta operación se representa a continuación.
{
// Parte 1 - Declaración
Tematico cobertura ("Bosque");
Tematico defor ("Deforestacion");
Tabla tab_recl (Reclasificacion);
tab_recl= Nuevo(CategoriaIni = "Bosque",
CategoriaFim = "Deforestacion",
"BosqueDenso" : "Bosque",
"BosqueconCampos" : "Floresta",
"Regeneracion" : "Deforestacion",
"AreaDeforestada" : "Deforestacion",
"Sabana" : "Sabana");
// Parte 2 - Instanciación
// Recuperación de la variable
cobertura = Recupere (Nombre = "Uso_JiParana");
// Creación del nuevo PI
defor = Nuevo (Nombre = "Defor_JiParana", ResX= 30,
ResY = 30, Escala = 100000);
// Parte 3 - Operación
// Reclasificación
defor= Reclasifique (cobertura, tab_recl);
}
Operaciones en LEGAL
Operadores Booleanos
Como ya fue mencionado, las expresiones booleanas utilizan operadores de análisis espacial cualitativo y generan un PI temático a partir de reglas aplicadas a PIs de entrada (del tipo TEMÁTICO, NUMÉRICO o IMAGEN).
El ejemplo a continuación muestra una atribución de expresión temática, envolviendo el operador "Atribuya". Las clases "inadecuado" y "adecuado" deben estar asociadas a la categoría "UsoSuelo". El plano resultante, "temas", deberá tener sus regiones adecuadas e inadecuadas determinadas por expresiones booleanas. Cada expresión booleana, se compone de expresiones de clase que envuelven los planos "PI1" y "PI2".
EJEMPLO:
temas = Atribuya (CategoriaFim ="UsoSuelo") {
"inadecuado":( PI1.Clase=="sueloexpuesto" &&
PI2.Clase=="litosol"),
"adecuado" :( PI1.Clase=="sueloexpuesto" ||
PI2.Clase=="podzolico") };
Como ejemplo real de una operación booleana, suponga el caso de querer determinar un mapa de aptitud agrícola a partir de los mapas de suelo, declividad, precipitación y del conjunto hipotético de reglas expresadas en la tabla que sigue.
REGLAS PARA APTITUD AGRÍCOLA
Aptitud Agrícola |
Suelos |
Declividad |
Buena |
Latosol Rojo |
0-3% |
Media |
Latosol Rojo-pardo |
3-8% |
Inapta |
Arena Cuarzosa |
>8% |
En LEGAL es necesario especificar un conjunto de condiciones que deben ser satisfechas para cada clase de salida. A través del operador Atribuya, conforme el ejemplo que sigue, en donde un mapa de Aptitud Agrícola es calculado basado en la topografía y el tipo de suelo, se tiene que;
{
// Parte 1 - Declaración
Tematico suelos ("Suelos"), aptitud ("Aptitud"),
decliv ("Declividad");
// Parte 2 - Instanciación
decliv = Recupere(Nombre = "Decliv94");
suelos = Recupere (Nombre = "Suelos94");
aptitud = Nuevo (Nombre = "apt94", ResX=50, ResY=50,
Escala = 50000);
// Parte 3 - Operación
aptitud= Atribuya (CategoriaFim = "Aptitud")
{
"Buena" : (suelo.Clase == "LatosolRojo" &&
decliv.Clase == "O-3"),
"Media" : (suelo.Clase == "LatosolRoPar" &&
decliv.Clase == "3-8"),
"Inapto" : (suelo.Clase == "ArenaCuarz" &&
decliv.Clase == ">8")};
}
El programa anterior opera con los siguientes pasos:
- Inicialmente los PIs de entrada y salida son definidos (en las dos primeras líneas del programa).
- Posteriormente el mapa de declividad y el mapa de suelos son recuperados a través de la función Recupere. El PI de salida (aptitud) es creado a través del operador Nuevo. El nuevo PI será creado como temático con resolución de 50 x 50 metros, en escala 1:50.000.
- La operación booleana es realizada a través de la función Atribuya.
Operaciones en LEGAL
Operadores Matemáticos
Las operaciones matemáticas actúan solamente sobre PIs de la categoría NUMÉRICO e IMAGEN, incluyendo:
- las operaciones aritméticas de: suma (+), substracción (-), multiplicación (*) y división (/);
- las funciones matemáticas de: seno (sen), coseno (cos), tangente (tan), arcoseno (arcsen), arco-coseno (arcos), arco-tangente (arctan), logaritmo (log), logaritmo base 10 (log10), exponencial (exp), raíz cuadrada (sqrt), entero (ent), valor absoluto (abs);
- relaciones: menor que (<), mayor que (>), menor o igual (<=), mayor o igual (>=), igual (==), diferente (!=).
Como ejemplo de operación matemática, considere la figura a continuación, se tiene que el PI de la izquierda es un mapa de suelo ponderado y el PI de la derecha es un mapa de declividad. Considere que se desea computar un indicador de adecuación de suelos, como la suma del valor atribuido al suelo con la inversa de la declividad. La operación que sigue podría ser utilizada como paso intermediario al calcular un mapa de adecuación de suelos (cuanto mayor es el valor, más adecuado).
aptitud = suelos_pond + 1/decliv
El programa en LEGAL para relizar la operación anterior es mostrado a continuación.
{
// Parte 1 - Declaración
Numerico suelo_pond ("Suelo_ponderado"),
decliv ("Declividad"),
aptitud ("AdecuacionNumerico");
// Parte 2 - Instanciación
decliv = Recupere(Nombre = "Decliv94");
suelo_pond = Recupere (Nombre = "Suelos94");
aptitud = Nuevo (Nombre = "adecuacion94", ResX=50, ResY=50,
Min=0, Max=2, Escala = 50000);
// Parte 3 - Operación
aptitud = suelo_pond + 1/decliv;
}
Otros ejemplos de operaciones matemáticas son:
LS = (0.00984*(decliv ^ 1.18)*(rampa ^ 0.63));
IR = (rojo / infrarrojo) * 128;
radAVHRR4 = 0.155 * ima + 150;
tempAVHRR4 = 1.435*845.19/log(1+1.191 *10-5/radiancia);
Operaciones en LEGAL
Operador Condicional
Como fue mencionado anteriormente, una expresión condicional es una prueba realizada por los operadores "?" (si la acción es afirmativa) y ":" (si la acción es negativa).
Ejemplo:
tmcomb = ((ta.Clas == "tema13") ? Digital(tm):128);
En la atribución anterior, el plano asociado a la variable del modelo imagen "tmcomb" será determinado por las regiones del plano de información asociado a la variable temática "ta" cuya clase sea "tema13" , o sea:
* cada pixel de la imagen resultante tendrá su valor determinado por el valor del pixel en la imagen con la variable "tm", siempre y cuando el pixel correspondiente en la imagen temática "ta", sea de la geoclase "tema13"; en caso contrario, el pixel resultante tendrá el valor "128".
Como la condición acepta solamente PIs matriciales, es necesario transformar la imagen "tm" a formato matricial a través de la transformación vector-matricial, resultando en una imagen temática - "Digital (tm)". Para que la expresión final sea del modelo imagen es preciso transformar el resultado de la expresión_condicional para ese modelo, a través del enmascaramiento para imagen de una expresión digital - "Image (expresion_digital)".
{
// Ejemplo de como Enmascarar una Imagen
Imagen tm5, tm5M ("Imagenes-TM");
Tematico enmasc ("Haciendas");
tm5 = Recupere(Nombre = "Banda-5");
enmasc = Recupere (Nombre = "Mapa_Hac94");
tm5M = Nuevo(Nombre="Banda-5Recort94", ResX=30, ResY=30, Nbits = 8);
// - Operación
tm5M = Imagen ((enmasc.Clase == "Haciendas-Ganado" ) ?
Digital(tm5) : 10);
}
El programa anterior recorta (enmascara) de la imagen de satélite "tm5" solamente las regiones en donde existe la clase "Hacienda-ganado" del PI "Haciendas".
Operaciones en LEGAL
Operaciones de Vecindad
En Legal es posible realizar muchas operaciones en base al acceso, y
envolviendo operaciones de las posiciones de vecindad en cada posición de una
representación matricial que se desea caracterizar. Son referenciadas por un par de
coordenadas relativas, que indica valores de desplazamiento em términos de número de lineas y
columnas. Por ejemplo:
variable [i, j]
Los índices i y j se refieren al desplazamiento relativo a cada posición
en una representación matricial, en términos de número de lineas y columnas. Pueden ser
aplicados a cualquier variable asociada a planos matriciales implicados en una expresión
puntual genérica.
En el ejemplo inferior una retícula numérica es generada, y a cada posición es
asignado el valor 1, siempre que alguna, entre las posiciones vecinaas (encima, abajo, a la izquierda o a la derecha), en una retícula numérica de Altitudes, fuera de mayor valor.
Ejemplo:
{
Numerico descen, altitude ("Altimetria");
altitude = Recupere (Nome = "Altitudes");
descen = Novo (Nome="Descendentes", ResX=25, ResY=25,
Escala=100000, Min=0, Max=255) ;
descen = altitude < altitude[1,1] || altitude < altitude[1,0] ||
altitude < altitude[1,-1] || altitude < altitude[0,1] ? 1 : 0 ;
}
La posición de referencia a cada paso de la generación del resultado,
corresponde a la posición de índices "[0,0]", que es normalmente expresada sin
índices, como puede ser observado en el ejemplo encima (donde la variable
"altitud" aparece sin índices).
Volver al Início
Operaciones Zonales
Atributos de dados del modelo Objeto pueden ser contenidos en expresiones
de lenguaje, gracias al mecanismo adoptado para representar su distribución, basado en el
concepto de mapa cadastral. Mapas cadastrales ofrecen soporte a la representación de
objetos en diferentes escalas, y son categorizados en el ambiente Spring a través del modelo
Cadastral. Los elementos de un mapa son dados sobre la forma de polígonos, lineas y
puntos que pueden estar asociados a objetos de interés, de una forma semejante a la que
define un plano de información cualquier.
La principal finalidad asociada a las expresiones incluyendo objetos
cadastrales, está relacionada a su uso junto a la clase de operadores Zonales, el operador
Espacialize, el operador Atualize y el FatieAtributo, que actuan sobre atributos de Objetos.
El operador FatieAtributo mapea, a través de una tabla de Fragmentamiento,
los valores asociados a algún atributo numérico de Objetos asociados a un mapa de categoría Cadastral y cuya representación en Spring es siempre vectorial. El operador Espacialize permite la generación
de mapas temáticos o de retículas numéricas a partir de atributos numéricos o textuales
de objetos cadastrales.
Los operadores Zonales efectuan resúmenes de valores
resultantes de evaluación de expresiones temáticas, numéricas, imágenes y
booleanas.incluyendo uno o más planos de información, sobre regiones delimitadas por
zonas dadas por expresiones booleanas o por mapas cadastrales. Tales resúmenes corresponden a estatísticas simples, tales como: Mayoría, Maximo, Media, Variedad etc. El operador Atualize mapea los valores resultantes de operadores zonales, en atributos de objetos cadastrales,
permitiendo la extracción de resultados sobre la forma de atributos en tablas de bancos de
datos.
En el ejemplo inferior, el atributo "DECLIVE" del objeto
"Quadras" es actualizado a partir de valores médios obtenidos a través de valores
de declividad insertados por la retícula numérica "Declividade", sobre las zonas
definidas por los polígonos de un mapa cadastral, asociadas a las instancias de objeto.
Ejemplos:
{
Objeto zonas ("Quadras");
Cadastral cad ("Cad_Urbano");
Numerico decliv ("Altimetria");
cad = Recupere (Nome = "Mapa_quadras");
decliv = Recupere (Nome = "Declividade");
zonas. "DECLIVE" = MediaZonal (decliv, zonas OnMap cad );
}
El mismo efecto del programa superior puede ser obtenido a través del operador Actualiza combinado con el de MediaZonal
{
...
zonas. "DECLIVE" = Atualize (decliv, zonas OnMap cad,
MediaZonal);
}
Volver al Início
Operaciones en LEGAL
Consulte sobre Operadores en LEGAL: