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;
|