Spring > Português > Manuais > Tutorial de Geoprocessamento > O que é o LEGAL?
O que é o LEGAL?

O que é um bancos de dados relacional?

  • Ferramenta que possibilita a realização de análises espaciais através de álgebra de mapas. A análise espacial utiliza os atributos espaciais e não espaciais das entidades gráficas armazenadas na base de dados espaciais para fazer simulações sobre os fenômenos do mundo real.
  • A álgebra de mapas é implementada através do LEGAL (Linguagem Espacial para Geoprocessamento Algébrico), uma linguagem de consulta e manipulação espacial que realiza operações sobre dados dos tipos MAPA TEMÁTICO, MODELO NUMÉRICO DE TERRENO e IMAGEM.
Quais as operações disponíveis?

  • São de: transformação, booleana, condicional, matemática, classificação contínua, vizinhança, reclassificação por atributos.
Qual é a estrutura de um programa em LEGAL?

  • Composta de três partes: declarações, instanciações e operações.
    • Declaração: Nesta parte definem-se os dados. Cada plano de informação (PI) a ser manipulado é declarado explicitamente, dando-lhe um nome e associando-o à sua categoria no esquema conceitual.
    • Instanciação: Nesta parte recuperam-se os dados existentes do banco de dados ou criam-se os novos PI. Um novo PI pode então ser associado ao resultado de operações em LEGAL.
    • Operação: Nesta parte, realizam-se as operações da álgebra de mapas. As seguintes operações estão disponíveis: transformação, booleana, matemática, classificação contínua, vizinhança, reclassificação por atributos.
Como se efetua a declaração?

  • Toda variável em LEGAL deve ser declarada antes de ser utilizada, com a sintaxe: Tematico <var> (<categoria>);

    Numerico <var> (<categoria>);

    Imagem <var> (<categoria>);

  • O campo <var> deve ser substituído pelo nome da variável associada ao PI.
  • O campo <categoria> identifica a categoria do dado.
Como se efetua a instanciação?

  • Através dos operadores Recupere e Novo. Recupere associa uma variável a um PI existente no banco de dados geográfico. Novo cria um novo PI no banco de dados e requer parâmetros que dependem da representação geométrica associada. Para:
    • Imagem em tons de cinza: resolução horizontal e vertical.
    • Grade regular: resolução horizontal e vertical, valores máximos e mínimos aceitáveis.
    • Imagem temática (geo-campo temático em representação matricial): resolução horizontal e vertical e escala.
    • Representação vetorial: escala.
Como se classificam as operações?

  • Em pontuais e de vizinhança. As pontuais geram como saída um PI cujos valores são função apenas dos valores dos PIs de entrada em cada localização correspondente. Nas de vizinhança computa-se o PI de saída com base na dimensão e na forma de uma vizinhança L(p) em torno de cada localização p.
Quais são os tipos de operações pontuais existentes?

  • Operações unárias: a entrada é um único PI, sendo também chamados de operações de transformação, por equivaler a um mapeamento entre os PIs de entrada e saída.
  • Operações booleanas: utilizados em análise espacial qualitativa, geram um PI TEMÁTICO a partir de regras aplicadas a PIs de entrada (que podem ser instâncias de TEMÁTICO, NUMÉRICO ou IMAGEM). As regras especificam o conjunto de condições a ser satisfeitas para cada tema de saída.
  • Operações condicionais: Modificam o PI de entrada se a expressão condicional é satisfeita.
  • Operações matemáticas: funções aritméticas, logarítmicas e trigonométricas, aplicadas a MNTs e a IMAGEM. Podem gerar MNT, IMAGEM ou TEMÁTICOS.
Quais são as operações de transformação (unárias) existentes?

  • Pondere: transforma um TEMÁTICO em um MNT;
  • Fatie: transforma um MNT ou uma IMAGEM em um TEMÁTICO;
  • Reclassifique: transforma um TEMÁTICO em outro TEMÁTICO.
  • Estes operadores requerem que o usuário defina um mapeamento entre os PIs de entrada e de saída, definindo tabelas que descrevem os mapeamentos desejados, por meio do operador Tabela, que pode ser de diferentes tipos (Ponderação, Fatiamento, Reclassificação).
Como se efetua a operação de ponderação?

  • Pode-se verificar com o exemplo do uso do operador na conversão de um mapa de solos em um mapa de solos ponderado, no qual os valores estão entre 0.0 e 1.0. O PI de entrada pode ser um mapa de solos com as classes {Le, Li, Ls, Aq} e a operação de ponderação consistir na associação {(Le®0.60), (Li®0.20), (Ls®0.35), (Aq®0.10)}.


  • O programa em LEGAL para realizar esta operação é dado por:

    {

    // Parte 1- Declaracao

    // Definição de Variaveis
    Tematico solo_CE ("Solos");
    Tabela tab_peso (Ponderacao);
    Numerico solo_peso_CE ("SoloPond");
    // Definicao da Tabela de Pesos
    tab_peso = Novo (CategoriaIni = "Solos", CategoriaFim = "SoloPond", Le : 0.60, Li : 0.2, Ls : 0.35, Aq : 0.1);
    // Parte 2 - Instanciacao
    // Recuperacao do mapa de solos
    solo_CE = Recupere (Nome = "Solo_CE");
    // Criacao do novo mapa de solos ponderado

    solo_peso_CE = Novo (Nome = "solo_p", ResX = 30, ResY = 30, Escala = 100000);

    // Parte 3 - Operacao de Ponderacao

    solo_pond_CE = Pondera (solo_CE, tab_peso);

    }
Como se efetua a operação de fatiamento?

  • Pode-se verificar com o uso do operador de fatiamento onde um mapa de declividade em graus é convertido para um mapa de classes de declividade a partir da transformação:
    {(0-5%) ®"baixa"; (5-15%)® "média"; (acima de 15%) ®"alta"}.


  • O programa em LEGAL que executa esta operação é:

    {
    // Parte 1 - Declaracao

    // Declaracao de Variaveis
    Tematico classes_decl ("Declividade");
    Numerico decliv_num ("Declividade_Numerica");
    Tabela tab_fatia (Fatiamento);
    // Definicao da tabela de fatiamento
    tab_fatia:= Novo (
        CategoriaIni = "Declividade_Numerica",

        CategoriaFim = "Declividade",

    [0.0, 5.0] : "Baixa",
    [5.0, 15.0]: "Media",
    [15.0, 45.0]: "Alta");
    // Parte 2 - Instanciacao
    // Recuperacao do PI de Declividade Numerica
    decliv_num = Recupere (Nome = "Declive_SJC");
    // Geracao do PI de saida
    classes_decl = Novo (Nome = "Classes_Decl",
        ResX = 50, ResY = 50, Escala = 100000);
    // Parte 3 - Operacao
    // Operacao de Fatiamento
    classes_decl = Fatie (decliv_num, tab_fatia);

    }
Como se efetua uma operação de reclassificação?

  • Pode-se verificar com o exemplo onde um mapa de cobertura do solo na Amazônia com diferentes classes {"Floresta Densa", "Floresta Várzea", "Rebrota", "Área Desmatada", "Cerrado"} é reclassificado para um novo mapa apenas com as classes {"Floresta", "Desmatamento", "Cerrado"}.

    {

    // Parte 1 - Declaracao

    Tematico cobertura ("Floresta");
    Tematico desmat ("Desmatamento");
    Tabela tab_recl(Reclassificacao);
    tab_recl= Novo (CategoriaIni = "Floresta",
        CategoriaFim= "Desmatamento",
      "Floresta Densa" : "Floresta",
      "Floresta Varzea" : "Floresta",
      "Rebrota" : "Desmatamento",
      "Area Desmatada" : "Desmatamento",
      "Cerrado" : "Cerrado");
    // Parte 2 - Instanciacao
    // Recuperacao da variavel
    cobertura = Recupere (Nome = "Uso_JiParana");
    // Criacao do novo PI

    desmat = Novo (Nome = "Desmat_JiParana", ResX= 30, ResY = 30, Escala = 100000);

    // Parte 3 - Operacao

    // Reclassificacao
    desmat= Reclassifique (cobertura, tab_recl);

    }
O que são as operações booleanas?

  • Utilizadas em análise espacial qualitativa, geram um PI TEM&AACUTE;TICO a partir de regras booleanas aplicadas a PIs de entrada que podem ser instâncias de TEM&AACUTE;TICO, NUM&EACUTE;RICO ou IMAGEM. As regras especificam o conjunto de condições a ser satisfeitas para cada tema de saída.
  • Por exemplo, o programa para a determinação do mapa de aptidão agrícola, a partir dos mapas de solo, declividade, precipitação e do conjunto de regras expresso na tabela abaixo é dado por:

    Aptidão Agrícola
    Solos
    Declividade
    Boa
    Latossolo Roxo
    0-3%
    Média
    Latossolo Vermelho-Amarelo
    3-8%
    Inapto
    Areia Quartzosa
    >8%


    {

    // Parte 1 - Declaracao

    Tematico solos ("Solos"), aptidao ("Aptidao"),
    decliv ("Declividade");

    // Parte 2 - Instanciacao

    decliv = Recupere(Nome = "Decliv94");
    solos = Recupere (Nome = "Solos94");
    aptidao = Novo (Nome = "apt94", ResX=50, ResY=50, Escala = 50000);
    // Parte 3 - Operacao
    aptidao= Atribua
    { "Boa" : (solo.Classe == "LatossoloRoxo" && decliv.Classe == "O-3"),
    "Media" : (solo.Classe == "LatossoloVermAm" && decliv.Classe == "3-8"),
    "Inapto" : (solo.Classe == "AreiaQuart" && decliv.Classe == ">8");

    }
O que são as operações condicionais?

  • Uma expressão condicional é um teste no qual, se a condição estabelecida pela expressã booleana que aparece antes do sinal ? for afirmativa, a ação indicada pela expresão digital antes do sinal : será o resultado, caso contrário a expressão digital que se segue ao : será o resultado.
  • Por exemplo, na expressão:

    tmcomb=Image((ta.Class==tema13?Digital(tm):128));

  • O plano associado a variável do modelo imagem tmcomb a ser determinado pelas regiões do plano de informação associado a variável temática ta cuja classe seja tema13 da seguinte maneira:
    • O pixel da imagem de saída tmcomb terá o mesmo valor do pixel na imagem da variável tm, se o pixel correspondente na imagem temática ta é da geoclasse tema13.
    • Caso contrário, o pixel resultante terá o valor 128.
  • A condição deve envolver apenas expressões digitais de modo que a imagem tm deve ser do modelo numérico. Esta transformação é obtida pelo uso do "mascaramento digital" ("cast") da imagem por meio de Digital(tm).
  • Para que a expressão final seja do modelo imagem é preciso transformar o resultado da expressão condicional para esse modelo, através do "cast" para imagem através de Image(expressão_digital).
  • O programa seguinte recorta (mascara) da imagem de satélite tm5 apenas as regiões onde existe a classe Fazenda-gado do PI Fazendas.

    {

    // Exemplo de como Mascarar uma Imagem

    Imagem tm5, tm5M (Imagens-TM);
    Tematico masc (Fazendas);
    tm5 = Recupere(Nome = BANDA-5);
    masc = Recupere(Nome = Mapa_Faz94);
    tm5M = Novo(Nome = Banda-5Recort94, ResX=30, ResY=30);

    tm5M = Imagem(((masc.Class == Fazendas-Gado) ? Digital(tm5) : 10));

    }
Quais são as operações matemáticas existentes?

  • Operações aritméticas: soma (+), subtração (-), multiplicação () e divisão ();
  • Funções matemáticas: seno (sin), cosseno (cos), tangente (tan), arco tangente (atan), logaritmo (log), exponencial (exp), raiz quadrada (sqrt);
  • Relações: menor que (<), maior que (>), menor ou igual (<=), maior ou igual (>=), igual (==), diferente (!=).
  • Por exemplo, tome-se a figura seguinte, onde o PI da esquerda é um mapa de solos ponderado e PI da direita é um mapa de declividade. Considerando que se deseja computar o indicador de adequação de solos como a soma do valor atribuído ao solo com o inverso da declividade através da operação (onde) quanto maior o valor, mais adequado): aptidao = solos_pond + 1/decliv


  • O programa em LEGAL é dado por:

    {

    // Parte 1 - Declaracao

    Numerico solo_pond ("Solo_ponderado"),
    decliv ("Declividade"), aptidao ("AdequacaoNumerico");
    // Parte 2 - Instanciacao
    decliv = Recupere(Nome = "Decliv94");
    solo_pond = Recupere (Nome = "Solos94");

    aptidao = Novo (Nome = "adequcao94", ResX=50, ResY=50, Min=0, Max=2, Escala = 50000);

    // Parte 3 - Operacao

    aptidao = solo_pond + 1/decliv;

    }
Quais são as operações de vizinhança existentes?

  • Cálculos de valores mínimo, máximo, médio, modal para uma vizinhança em torno de um ponto.
  • Filtros espaciais para processamento de Dado_Sensor_Remoto.
  • Métodos de interpolação espacial para MNT.
  • Mapas de declividade e exposição para MNT.
  • Índices de diversidade para temático, onde o valor de saída está associado ao número de vizinhos de um ponto de entrada de uma classe que pertencem a classes distintas.
  • Como exemplo de operação de vizinhança, tem-se o caso da estimação da diversidade de vegetação de uma região, computado a partir de uma vizinhança 3 x 3 em torno de cada ponto.


  • O programa para gerar uma imagem final utiliza um filtro de Sobel (filtro de realce de bordas) e é dado por:

    {

    //Declaração

    Imagem img, img2, ("imagens");

    Img = Recupere (Nome = "binar");

    Img2 = Novo (Nome = "sobel", Resx = 30, Resy = 30);

    // Instanciação

    img2 = sqrt ((img [-1, 1} + 2 * img [0, 1] + img [1, 1] -img[-1, -1] -2 * img [0, -1]-img{1,-1) ^2 + (img[-1, -1] +2 * img[-1, 0] + img[-1,1] -img[1, -1] -2 * img [1, 0]-img[1, 1]) ^2);

    }
O que são operações de classificação contínua?

  • Técnicas de classificação contínua que buscam substituir processos tradicionais de geração de mapas por métodos que permitem uma melhor análise de sensibilidade no resultado final. A divisão de mapas em classes temáticas fixas não captura a variação gradativa da natureza e, ao combinar dois ou mais mapas numa análise boolena, pode-se perder informações das áreas de interesse, uma vez que há interrupções artificiais e abruptas no limite das classes.
  • Trabalha-se então sempre com dados em representação contínua, utilizando análises quantitativas sobre mapas geográficos, equivalendo a trabalhar sempre com modelos numéricos de terreno para representar variáveis espaciais como solo, geomorfologia, vegetação, com uma graduação contínua de variação do tema em estudo. A graduação pode ser obtida com a classificação contínua onde a variação da grandeza é expressa por uma função que varia entre 0 e 1, quadrática, com duas alternativas:
    • Função crescente, 0 (zero) sendo o valor mínimo do PI de entrada, crescendo até o valor máximo de entrada correspondente a 1(um). Esta equação é chamada FUZZYL, e é obtida por:

      FUZZYL = 1 se x ,

      FUZZYL= 1/[1+ (x )2] se x < .
  • Função decrescente, 1 (um) sendo o valor mínimo do PI de entrada, decrescendo até o valor máximo de entrada correspondente a 0 (zero). Esta equação é chamada FUZZYU, e é obtida por:

    FUZZYU= 1 se x ,

    FUZZYU = 1/[1+ (x )2] se x .
  • Na equação FUZZYL, o parâmetro indica o valor máximo, acima do qual a pertinência "fuzzy" é considerada total. Abaixo deste valor, a função tem uma forma quadrática que depende da variação do parâmetro.


    Função FUZZYL para o caso = 1 e = 3.

  • Na equação FUZZYU, o parâmetro indica o valor mínimo, abaixo do qual a pertinência "fuzzy" é considerada total. Acima deste valor, a função tem uma forma quadrática que depende da variação do parâmetro .
  • Por exemplo, a fertilidade de solos pode ser associada aos níveis de propriedades químicas de cálcio e magnésio, fósforo e alumínio, sendo classificada em terras de baixa exigência na utilização de insumos (classe 1), de média exigência, alta exigência e muito alta exigência (classe 4).

    Propriedade
    1
    Classes
    2
    Fertilidade
    3
    Classes
    4
    Ca+++Mg++
    Ca+Mg>3
    2<Ca+Mg<=3
    Ca+Mg<=2
    Ca+Mg<2
    P
    P >= 30
    10 < P < 30
    P < 10
    P < 10
    Al++
    Al > 0,3
    0,3 < Al < 1,5
    1,5 < Al < 4
    Al > 4

  • Para determinar as funções de classificação contínua correspondentes, é escolhido o parâmetro tal que a primeira classe de níveis de fertilidade de solo tenha o valor nebuloso 1; o parâmetro é tal que o valor da função FUZZYL (crescente) seja igual a 0,5 quando a grandeza estudada tiver o valor inferior da segunda classe de fertilidade. Por exemplo, no caso do mapa de teores de Cálcio e Magnésio, a função contínua associada terá valor 1, se a concentração for maior que 3 e terá valor 0,5 (meio), se a concentração for igual a 2 (dois).

    Propriedades
     
     
    Função
    Ca+++Mg++
    1
    3
    FUZZYU (crescente)
    P
    0,0025
    30
    FUZZYL (crescente)
    Al++
    0,3
    0,694
    FUZZYU (descrescente)

  • O programa em LEGAL que aplica uma função de classificação contínua sobre um PI numérico (com o teor de fósforo) é dado por:

    {

    // Parte 1 - Declaracao

    Numerico fosforo ("Fosforo"),

    fosf_cont ("Fosforo");

    // Parte 2 - Instanciacao

    fosforo = Recupere (Nome = "Fosforo95");

    fosf_cont = Novo (Nome= "Fosforo_cont", ResX = 50, ResY = 50, Max =1, Min = 0, Escala = 100000);

    //Parte 3 - Operacao

    fosf_cont = Fuzzyl(fosforo, 0.0025, 30);

    }

O que é reclassificação por atributos?

  • Operação que gera, a partir dos valores de um atributo específico dos geo-objetos de um mapa, um geo-campo com a distribuição espacial deste atributo.
  • Por exemplo, a operação: "Para todos os países da América do Sul, gere um geo-campo temático com o crescimento demográfico de cada país, dividido em classes: { (de 0 a 2% ao ano), (de 2 a 3% a.a.), (mais de 3% a.a.)}."


  • O programa em LEGAL é dado por:

    {

    // Parte 1 - Declaracao

    Objeto pais ("Paises_America_Sul");
    Atributo popul("Paises_America_Sul", "popul");
    Cadastral map_AS ("Mapa_Paises");
    Tematico mapa_pop ("Densidade_Populacao");
    Tabela fatia (Fatiamento);
    // Parte 2 - Instanciacao
    mapa_AS = Recupere (Nome = "Mapa_America_Sul");
    mapa_pop = Novo (Nome = "Pop_America_Sul",
    ResX=100, ResY=100, Escala=10000000,Repres= Vetor);
    fatia = Novo ( CategoriaFim = "Densidade_Populacao",
    [0.0, 2.0] : "0-2%",
    [2.0, 3.0] : "2-3%",
    [3.0, 10.0]: ">3%" );
    // Parte 3 - Operação

    mapa_pop= ReclAtrib (pais,popul,fatia) OnMap mapa_AS;

Copyright © 1991-2006 SPRING - DPI/INPE