Dinamica EGO Guia Prático Português 2015
Dinamica EGO Guia Prático Português 2015
Dinamica EGO Guia Prático Português 2015
TEXT EDITING
Britaldo Silveira Soares Filho
TEXT REVISING
Silvia Weel
Peter Schlesinger
COVER PAGE
Britaldo Silveira Soares-Filho
Flávio de Castro Oliveira
FORMATTING
Flávio de Castro Oliveira
Letícia de Barros Viana Hissa
Britaldo Silveira Soares-Filho
2
Conteúdo
1. Introdução ...................................................................................................................................... 4
1.1 O que há de novo no Dinamica EGO 3 .................................................................................. 5
1.2 Interface Gráfica do Dinamica EGO .................................................................................... 13
1.3 Map Viewer .......................................................................................................................... 22
1.4 Formatos e Estrutura dos Dados........................................................................................... 25
2. Lição 1: Construindo um modelo simples.................................................................................... 28
3. Lição 2: Incorporando iterações a um modelo ............................................................................. 40
4. Lição 3: Usando o conceito de região .......................................................................................... 49
5. Lição 4: Calculando uma superfície de custo acumulado e um caminho de menor custo ........... 56
6. Lição 5: Avaliação Multicritério no Dinamica EGO ................................................................... 67
6.1 Primeiro Passo: Encontrando áreas sem impedimentos ....................................................... 68
6.2 Segundo Passo: Construindo buffers para definir áreas inapropriadas ................................ 69
6.3 Terceiro passo: Calculando tempo de deslocamento para cidades vizinhas ........................ 76
6.4 Quarto passo: Combinando os critérios booleanos .............................................................. 78
6.5 Quinto passo: Identificando as áreas adequadas. ................................................................. 84
6.6 Sexto passo: Estabelecendo a declividade média nas manchas selecionadas ...................... 86
7. Lição 6: Construindo um modelo de simulação de mudanças de uso e cobertura da terra .......... 90
7.1 Primeiro passo: Calculando matrizes de transição ................................................................ 93
7.2 Segundo passo: Calculando intervalos para categorização variáveis contínuas .................... 97
7.3 Terceiro passo: Calculando os coeficientes dos Pesos de Evidência .................................. 104
7.4 Quarto passo: Analisando a correlação de mapas ............................................................... 107
7.5 Quinto passo: Ajustando e rodando um modelo de simulação LUCC ................................ 108
7.6 Sexto passo: Validando a simulação usando uma função de decaimento exponencial ....... 112
7.7 Sétimo passo: Validando a simulação usando janelas múltiplas e função de decaimento
exponencial..................................................................................................................................... 117
7.8 Oitavo passo: Executando simulação com formação de manchas ...................................... 122
7.9 Nono passo: Executando a simulação com formação de manchas e expansão ................... 123
7.10 Décimo passo: Projetando trajetórias de desmatamento .................................................... 127
8. Linguagem de script e execução em console do Dinamica EGO ............................................... 130
3
1. Introdução
Dinamica EGO consiste numa plataforma sofisticada para modelagem ambiental com notáveis
possibilidades para a construção de modelos, desde o mais simples modelo espacial estático até
modelos dinâmicos bastante complexos, os quais podem envolver iterações aninhadas,
retroalimentações dinâmicas, abordagem multiregiões, manipulação e combinação algébrica de dados
em vários formatos, como mapas, tabelas, matrizes e constantes, processos de decisão para bifurcação
e união de fluxos de execução, além de uma série de algoritmos espaciais complexos para a análise e
simulação de fenômenos espaço‐temporais.
A última versão do Dinamica EGO apresenta uma nova interface gráfica, completamente redesenhada
para proporcionar uma melhor experiência do usuário.
O ambiente do software, escrito em C++ e Java, contém uma série de algoritmos chamados functors.
Cada functor executa uma operação. No presente documento implementamos os algoritmos de análise
espacial mais comuns disponíveis nos SIGs comerciais, além de uma série de algoritmos especialmente
desenvolvidos para simulações espaciais, incluindo funções de transição e métodos de calibração e
validação de modelos.
Esses functors são ligados em sequência para estabelecer um fluxo de dados na forma de grafos.
Através da interface gráfica do Dinamica EGO o usuário pode criar modelos simplesmente
selecionando, arrastando e conectando os functors através de seus portos, os quais representam
conexões específicas para cada tipo de dado, como mapas, tabelas, matrizes, expressões matemáticas
e constantes.
Functors podem ser agrupados em containers (recipientes), um tipo especial de functor que é usado,
por exemplo, para executar iterações ou processar dados em regiões específicas de um mapa. Assim,
os modelos podem ser construídos como se fossem diagramas e a execução segue um fluxo encadeado
de dados. Essa interface amigável permite a criação de modelos espaciais, desde os mais simples até
os mais complexos, os quais são salvos em uma linguagem de script no formato XML ou na linguagem
de programação EGO.
4
células, usando paginação em disco. Por outro lado, se há memória disponível, o Dinamica pode
carregar todos os mapas de entrada no início da execução do modelo e mantê‐los na memória apenas
enquanto eles são necessários. Dessa forma, o software acessa o disco apenas ao final de uma execução
para guardar os resultados finais, ou se o usuário especifica, ao final de uma iteração para salvar os
mapas resultantes de cada iteração.
O objetivo desse guia prático é introduzir o usuário às inúmeras possibilidades do Dinamica EGO para
a criação de modelos que podem, verdadeiramente, representar a complexidade de vários fenômenos
geográficos.
Dinamica EGO 3 apresenta uma interface gráfica completamente nova. Uma lista completa de
alterações pode ser vista abaixo:
I. Modelos
É possível abrir vários modelos ao mesmo tempo, basta arrastá-los para o script editor.
Arquivos somente leitura são identificados por um ícone especial no script editor.
Submodelos locais são apresentados com o seu modelo correspondente, permitindo que
alterações no sub-modelo sejam aplicadas imediatamente ao modelo.
O menu de arquivos recentemente abertos pergunta se um modelo que falhou ao abrir deve ser
retirado da lista.
5
II. Library
o Alguns filtros permitem procurar functors por seus nomes, descrições e informações de seus
portos.
o A busca por functors pode ser realizada utilizando os filtros especiais: container, loop,
carrier, hook, mux, junction, loader, save, submodel, systemsubmodel, usersubmodel,
localsubmodel.
o É possível digitar os termos que devem ser usados na pesquisa e depois verificar o resultado
nas outras guias do functor Library.
Ao passar o mouse sobre um functor é dado o acesso a uma barra de ação de contexto com
opções para manipular favoritos, consultar a documentação do functor etc.
Há certos functors que já apresentam algums functors acessórios, por exemplo, CalculateMap
já vem com um NumberMap, CalculateLookupTable tem um NumberTable etc.
Functors podem ser criados arrastando seus nomes para o script editor.
Ao arrastar um functor para o script editor, pressionando a tecla Shift, é feita automaticamente
a conexão da saída do functor atualmente selecionado a entrada do novo functor.
Linhas conectando functors dentro de containers minimizados são representadas por uma única
linha.
6
o Conexão entre functors não visíveis dentro de um container ou entre functors não-visível
dentro de um container: tink line.
A barra de ferramentas visível próxima ao functor selecionado (functor action bar) mostrando
as opções que podem ser aplicadas a esse functor. O sistema coloca a barra de ação
automaticamente para garantir a sua visibilidade. A representação da barra de ação muda
automaticamente para tornar claro qual functor é selecionado.
Zoom in e out pode ser reexecutado utilizando a roda do mouse. O zoom é centrado em torno
da posição atual do mouse.
Ao arrastar um functor, escondem-se todas as conexões, exceto aquelas que ligam o functor.
A remoção de uma ligação ambígua é possível pela caixa de diálogo em que o usuário pode
escolher qual conexão será removida.
Ao conectar dois functors aparecerá uma caixa de diálogo de conexão que mostra se a conexão
é ambígua.
É possível copiar, cortar e colar functors selecionados. Functors serão sempre colados na
porção visível da tela.
É possível arrastar e soltar arquivos de mapas, tabelas e pesos de evidência diretamente em seu
modelo. Os functors responsáveis por carregar cada arquivo são criados automaticamente.
Depois de selecionar uma conexão entre functors, é possível navegar pelos functors
conectados, visualizar a caixa de ligação delimitadora e / ou expandir os functors conectados.
7
É possível criar automaticamente um grupo em torno de functors selecionados. Também é
possível remover um grupo contendo outros functors.
Ícones especiais podem ser usados para selecionar automaticamente todos os functors,
desmarcar a seleção atual ou selecionar somente os functors filho de um container.
A visão geral do modelo, o issue pane e explorer são visíveis apenas quando o modelo é visível
na interface gráfica.
Duplo clique em um functor edita as entradas do functor. Se o functor não tem nenhuma entrada
editável, clicar duas vezes edita seus comentários.
É possível destacar complexos editores de portos do functor editor dialog e editá-los em uma
janela separada.
Complexos editores de Portos agora preenchem toda a área disponível na caixa do editor dialog
quando eles são o único editor.
Entradas editáveis que estão ligados a outras saídas podem ser desconectadas diretamente do
functor editor dialog.
Entradas cuja correção depende do valor de outras entradas são validadas pelo functor editor
diálogo.
É possível reverter o conteúdo de entradas opcionais de volta para seus valores padrão. Isto
também inclui a entrada de auto-ligação ligado à saída compatível interna de um container.
O editor de expressão mostra quais identificadores [iX, TX e vX] estão disponíveis para serem
usados.
Os functors hooks agora preenchem o índice automaticamente usando o valor mais adequado
para evitar repetições.
V. Help
8
VI. Model Issues
A lista está organizada como uma árvore de functor com seus problemas correspondentes.
o Questões da lista podem ser pesquisadas pelo nome do functor correspondente, apelido e
mensagens de erro.
o Problemas podem ser pesquisados usando filtros especiais: container, loop, carrier, hook,
mux, junction, loader, save, submodel, systemsubmodel, usersubmodel, localsubmodel.
Estes filtros operam sobre o functor correspondente.
É possível localizar o functor Model issues na lista de problemas e encontrar a solução para o
functor correspondente na janela do modelo.
Problemas reportados:
9
o Advertência sobre Passos cujas entradas estão conectadas a algum outro functor.
o Advertência sobre Passos cujas entradas estão sendo editadas.
o Advertência sobre Passos colocados fora do container loop.
o Advertência sobre saídas do carrier não conectadas a quaisquer outros functors.
o Validação dos parâmetros de um CreateCubeMap.
o Advertência sobre hooks usados fora de containers apropriados.
VII. Explorer
O tempo acumulado gasto por um functor durante a última execução é mostrado junto ao nome
do functor.
É possível pesquisar functors por seus nomes, alias e descrições. Os containers dos functors
encontrados durante a pesquisa são sempre visíveis para indicar claramente onde o functor está
localizado. O tempo acumulado apresentado é atualizado para referir apenas ao tempo
acumulado gasto pelos functors visíveis.
VIII. Submodelos
Submodelos locais estão contidos em uma pasta nomeada após o nome principal do arquivo do
modelo, mas substituindo pontos com "_" e seguido de "_Submodels". Por exemplo, o principal
modelo "test.egoml" deve colocar seus submodelos locais em uma pasta
"test_egoml_Submodels". A velha pasta "Submodels" é processado para ser compatível com as
versões anteriores do software.
Submodelos também podem definir submodelos locais [submodelos aninhadas não podem
ainda ser editados utilizando a interface gráfica, mas eles podem ser lidos e escritos como
qualquer outro sub-modelo. A definição também pode incluir outros submodelos locais
aninhados].
Functors cujas entradas e / ou saídas estão sendo exportados por um submodelo são pintadas
usando uma decoração especial.
Os nomes das entradas e saídas de um sub-modelo são sugeridos automaticamente com base
nos portos e functors selecionados:
o Os nomes das entradas e suas descrições correspondentes são sugeridos de acordo com o
seguinte: se o porto exportado pertence a um carrier e um alias e comentário são definidos,
10
eles serão utilizados como o nome e descrição do porto. Caso contrário, se o porto exportado
está conectado a outro functor e seu alias e comentário são definidos, eles serão utilizados
como o nome e a descrição do porto. Caso contrário, serão usados o nome de entrada e
descrição.
o O nome das saídas e suas descrições correspondentes são sugeridos de acordo com o
seguinte: se o porto exportado pertence a um carrier e um alias e comentário são definidos,
eles serão utilizados como o nome e descrição do porto. Caso contrário, se o porto exportado
está conectado a um carrier e seu alias e comentário são definidos, eles serão utilizados
como o nome e a descrição do porto. Caso contrário, serão usados o nome de saída e
descrição originais.
Os erros detectados dentro de um submodelo local são apresentados visualmente por uma
interface gráfica.
Submodelos locais podem ser importados por outros model scripts. A importação inclui todas
as dependências do submodelo.
Submodelos são constantemente validados para se certificar de seus usos não estão causando
um ciclo de definição.
IX. Wizard
X. Functor
Functors utilizados para manipular sub-regiões agora também podem ser usados para
manipular as células fora da região.
11
O nome do operador Int foi mudado para IntegerValue.
Os novos nomes são consistentes com o nome de functors como CalculateValue (calcula
qualquer valor), MuxValue (fornece feedback para qualquer valor) etc.
XI. Tipos
XII. Geral
É possível percorrer as guias de qualquer painel com guias apresentadas pelo aplicativo usando
a roda do mouse.
O título do aplicativo agora é "Dinamica EGO 32" para a versão de 32-bit e apenas "Dinamica
EGO" para a versão de 64-bit. Na versão anterior, foi o oposto.
O aplicativo agora maximiza corretamente, mesmo que várias telas estejam sendo usados.
XIII. Licença
Agora, o software também pode ser usado por instituições comerciais para fins comerciais.
12
1.2 Interface Gráfica do Dinamica EGO
No Dinamica EGO, os modelos são construídos através de uma sequência de functors conectados
através de portos de entrada e saída compatíveis. Assim, os dados fluem através desses operadores para
produzir um resultado desejável que representa a solução de uma questão a respeito de algum aspecto
do meio ambiente.
I. Functor Library
13
II. Functor Library Bar
14
O Model Presentation é o painel principal onde todos os modelos são apresentados, conforme indicado
na Fig.03. Para abrir um modelo existente, arraste o arquivo do modelo desejado diretamente para o
painel de apresentação.
A aba de seleção Model Selection Tabs auxilia o usuário a selecionar o modelo desejado quando
existem vários modelos ativos no Model Presentation conforme é apresentado na Fig.04.
O Connection Action Bar, mostrado na Fig. 05, auxilia o usuário a interagir com a ligação selecionada
entre os functors.
15
VI. Functor Action Bar
O functor Action Bar permite que o usuário interaja com o functor selecionado, adicionando
comentários, criando conexões, inspecionando e editando o functor, além de permitir a maximização e
minimização do mesmo. O functor action bar é apresentado na Fig. 06.
16
VIII. Model Overview
O Model Overview traz uma visão geral do modelo atual ou submodelo local. É especialmente útil para
grandes modelos que não se encaixam inteiramente no plano do Sketch quando mostrados no tamanho
padrão. O Model Overview é apresentado na Fig. 08.
A área sombreada na janela Model Overview corresponde à área que a janela Sketch abrange no
momento. Movendo a área sombreada, você pode centralizar o Sketch em uma parte específica do
modelo.
A janela Model Issues, apresentada na Fig. 09, apresenta a lista de functors e suas correspondentes
questões críticas e não críticas. Basta clicar duas vezes no ícone issues para ver o detalhamento do
problema apresentado pelo modelo ou submodelo.
Você também pode procurar por temas específicos, usando o campo de busca.
Os avisos são questões não críticas e por isso não impedem que o modelo seja executado.
Os erros são questões críticas que irão impedir a execução correta do modelo.
Erros de execução podem não ser os mesmo na próxima vez que você executar o script modelo.
17
Figura 09: Model Issues.
A caixa de ferramentas do Sketch permite que o usuário delete, agrupe e organize os functors que
compõem um modelo. Além disso, existe uma ferramenta de opções especiais para containers. A Caixa
de ferramentas do Sketch é apresentada pela Fig. 11.
18
XI. Library Categories
Na janela Library você irá encontrar os functors disponíveis organizados em categorias de acordo com
seu tipo e aplicação. As categorias são:
Control (Suppl.): functors auxiliares para serem utilizados em conjunto com os de Control.
Input/Output: ferramentas para ler e salvar estruturas de dados na forma de mapas, tabelas e
pesos de evidência.
Map Algebra (Suppl.): functors auxiliares para serem utilizados em conjunto com os functors
do Map Algebra.
Region: functors que permitem a divisão de um mapa em vários mapas regionais, cada um
podendo ser usado separadamente em um submodelo específico ou iteração.
Simulation (Suppl.): functors auxiliares para serem usados em conjunto com functors do
Simulation.
Stack: functors que permitem a seleção de um parâmetro específico de acordo com o passo do
modelo.
Stack (Suppl.): functors auxiliares para serem utilizados em conjunto com os de Stack.
Submodels: são etapas intermediárias do modelo, que podem ser trabalhadas individualmente
para minimizar o tempo de execução do modelo.
19
XII. Barra de menus
Os ícones da barra de menus são apresentados pela Fig. 13, e estes são atalhos para as diversas
funções:
1) Menu file: Contém as funções para criar, abrir, salvar, imprimir e cancelar um modelo;
2) Menu Edit: Apresenta as funções de copiar, colar, recortar, selecionar e deletar seleções e
também funções para criar submodelos e criar/editar um Wizard.
3) Menu Model: Contém uma única função de execução do modelo;
4) Menu Tools: Apresenta uma função de exibição de mapas, o Map Viewer (ver item 1.3) e
também opções de configuração do modelo, conforme apresentado pela Fig. 14.
20
5) Menu Window: Apresenta todas as janelas de exibição do sistema, através deste menu, além
de selecionar a janela desejada o usuário também pode restaurar o layout original do sistema.
6) Menu Help: Apresenta as opções de ajuda do sistema. Através deste menu o usuário pode
escolher acessar o website do Dinamica EGO e também os conteúdos do wiki.
A Fig. 15 apresenta os ícones de atalho das principais funções da barra de menus, estas: criar um novo
modelo, abrir um modelo existente, salvar um modelo, salvar todos os modelos, rodar um modelo e
abrir o Map Viewer.
Dica: Para ver a lista de todos os functors disponíveis no Dinamica EGO acesse o menu Window,
Documentation. Dentro desta janela selecione a opção Functor to List. Após realizar esta seleção
uma lista de functors será apresentada. Para obter descrições detalhadas de cada functor e seus
algoritmos bastas clicar sobre o functor.
21
1.3 Map Viewer
O Dinamica EGO disponibiliza uma ferramenta exclusiva para visualização de mapas. Conforme
apresentado na Fig. 16, clique no ícone do Map Viewer através do atalho da barra de menus.
A aparência do Map Viewer é apresentada na Fig. 17 e os mapas são exibidos na área delimitada.
Dentro do Map Viewer existe uma barra de ferramentas (à esquerda) com diversas opções. A barra de
ferramentas é apresentada na Fig. 18 bem como o detalhamento de suas funções.
22
Figura 18: Barra de ferramentas do Map Viewer.
23
22) Paleta de cores;
23) Permite editar a paleta de cores;
24) Permite alterar opacidade das cores do mapa;
24
1.4 Formatos e Estrutura dos Dados
Dinamica EGO suporta dados em vários formatos, incluindo mapas raster ou imagens, tabelas,
matrizes, e arquivo de coeficientes de Pesos de Evidência.
Para dados espaciais, Dinamica EGO suporta apenas conjuntos de dados raster. Assim, você precisará
preparar o seu conjunto de dados em um pacote SIG e, em seguida, exportar os mapas em um dos três
formatos especificados abaixo. Embora o georreferenciamento seja suportado e necessário, todos os
conjuntos de dados raster em um modelo devem ter o mesmo número de colunas e linhas. Além disso,
eles devem estar ancorados em um mesmo ponto de registro com as mesmas coordenadas no espaço
geográfico (fig. 20).
O Dinamica EGO lê e escreve dados raster em três formatos: formato ER Mapper, Geotiff, e ArcView
ASCII. Os sistemas de coordenadas suportados para transformação para o formato ERMapper são o
Geodético (WGS 84, SAD69, Córrego Alegre) e UTM (WGS84, SAD 69, Córrego Alegre). Quando
um sistema de coordenadas não é suportado, assume-se a projeção LOCAL e datum WGS84. Para
ASCII/ArcView, são sempre assumidos a projeção LOCAL e o datum WGS84. Todos os sistemas de
coordenadas Geotiff são suportados se uma conversão não for necessária. Quando a dimensão de célula
Geotiff não é encontrada, uma resolução de 100 metros é assumida. O formato Geotiff usando tiling
(ladrilhamento) é também suportado, assim, você não encontrará problemas ao importar e exportar seu
conjunto de dados através dos SIGs mais comuns, tais como IDRISI, SPRING ou ARCGIS.
Na álgebra de mapas, o conceito de valor nulo é muito importante para se obter um resultado coerente
da execução do modelo. Nulo significa ausência de dados. Assim, um mapa que contém uma área
irregular de interesse, a qual não cobre completamente o plano geográfico, deverá ter uma
representação para as células nulas. O valor reservado para a representação da célula nula pode variar
dependendo do tipo de dado, isto é, o tamanho utilizado, em termos de bits, para armazenar os valores
das células do mapa. Dinamica EGO, conforme apresentado na Fig. 21 suporta os seguintes tipos de
dados:
25
Figura 21: Tipos de dados suportados pelo Dinamica EGO.
DICA: Escolha sempre o tipo de dado capaz de cobrir todo o espectro de valores contidos nas
variáveis a serem representadas. Por exemplo: no caso da altitude, variando de -10 metros a
4000 metros, o tipo de dado a ser utilizado deverá ser o “Signed 16 Bit Integer” ou “IEEE 754
32 Bit Real”.
Normalmente, o menor valor negativo é usado para representar o valor nulo. Por exemplo, o valor -
32768 é usado para dados do tipo “Signed 16 Bit Integer”.
DICA: Em alguns casos, você precisará (e deverá) definir o valor nulo ao carregar um conjunto
de dados Geotiff, o qual não possui campo para essa definição (altamente recomendado). Na
lição 1, você aprenderá como fazer isso.
DICA: A primeira linha da tabela deve conter o título da coluna “Key” com o nome da variável,
tal como população, países, etc.
Key Value
1 10
2 30
3 15
Uma matriz de transição é também armazenada usando esse formato; a única diferença é que a chave
emprega um algarismo composto para representar a transição, como no exemplo abaixo:
Key Value
1.002 0.223567
1.003 0.379618
2.001 0.024841
2.003 0.030573
3.002 0.000348
26
Assim, a tabela acima é equivalente à seguinte matriz de transição: Observe que os valores na diagonal
não necessitam ser preenchidos, também não é necessário expressar transições iguais zero.
1 2 3
1 - 0.223567 0.379618
2 0.024841 - 0.030573
3 0 0 -
Outro formato suportado é o arquivo Peso de Evidências – um arquivo texto contendo os coeficientes
dos Pesos de Evidências. Este arquivo é obtido através do método dos Pesos de Evidência usado no
processo de calibração.
DICA: Você pode editar este arquivo diretamente em um editor de texto ou usando o editor
gráfico dos Pesos de Evidência ligado ao functor Load Weights.
27
2. Lição 1: Construindo um modelo simples
Functors e portos
Como conectar functors
Escrevendo expressões lgébricas e lógicas
Functores:
o Load Map
o Save Map
o Calculate Map
o Number Map
A estruturação dos elementos que compõem um modelo espacial envolve a seleção de um conjunto de
variáveis, mapas de um modelo cartográfico – que é um cubo de mapas raster registrados, no qual cada
mapa se refere a uma característica geográfica particular –, processamento através de uma sequência
ordenada, e então armazenar os resultados intermediários para processamentos subsequentes (Fig. 21).
Para melhorar o desempenho, o sistema de processamento do Dinamica EGO acessa o disco somente
uma vez para ler os mapas de entrada, se memória suficiente estiver disponível, e depois, para escrever
os resultados finais (Fig. 22). Assim, um modelo no Dinamica EGO é representado por uma sequência
de functores, cuja execução acontece da esquerda para a direita. Um modelo simples consiste em um
functor que carrega o dado, por exemplo, um mapa, outro functor que executa um cálculo, e um terceiro
que escreve o resultado em um arquivo. Note que os functores são conectados uns aos outros por seta
(Creat a connection) from this functor disponível na barra Functor Action Bar. Para fazer isso, eles
devem trocar dados compatíveis através de suas entradas e saídas. As entradas e saídas em functores
são chamadas de portos no Dinamica EGO. Consequentemente, os functores são conectados através de
portos de entradas e saídas compatíveis. Vamos começar construindo o seu primeiro modelo no
Dinamica EGO.
28
Figura 13: Sistema de processamento do Dinamica EGO, nesse caso não é necessário salvar resultados
intermediários nos arquivos em disco.
No Functor Library, pegue e arraste até o plano de sketch os functores Load Map1 e Save Map, os quais
estão localizados na aba Input/Output. Agora arraste o container Calculate Map da aba Map Algebra.
Lembre-se que um container é um tipo especial de functor que contem functores suplementares ou
mesmo uma sequência de functores.
Você verá algo semelhante à Figura 24. Agora você precisa conectar os functores para criar o modelo.
Primeiro, vamos entender o que faz Calculate Map. Esse container é uma calculadora usada para
álgebra de mapas, com o objetivo de combinar e processar mapas, tabelas e constantes. Como um
container, ele não funciona por si mesmo. É necessário functores suplementares a ele, note que o
Calculate Map apresenta um Number Map. Para cada mapa processado por esse container será
representado pelo functor Number Map, disponível na aba Map Algebra Supplementary.
1
Todos os nomes dos functores e containers são representados em itálico e negrito neste tutorial. Opções do
modelo e parâmetros internos são representados em itálico e dados a serem inseridos são representados entre
aspas.
29
Clique no Number Map com a ferramenta de edição de functores, Edit Functor. Como este container
possui apenas um Number Map, será automaticamente identificado como “1” (fig.25). Este número
identificador de mapas será representado dentro da caixa de equações como i1 (input 1). Você pode
inserir outros mapas adicionando mais functors Number Map, mas deve abrir cada um desses functores
para sejam nomeados com um único número identificador. Agora você pode conectar o functor Load
Map ao Number Map e o container Calculate Map ao Save Map. Use a ferramenta de conexão para
estabelecer as conexões. Observe que a conexão é feita automaticamente porque há apenas uma opção
para portos compatíveis nos respectivos functors e no container.
Clicando na seta você poderá visualizar as ligações entre um par de functores. Agora que os functores
estão ligados, você pode rearranjar o modelo clicando na ferramenta de layout. Note que o modelo será
centralizado (fig. 26).
30
Figura 28: Comentários exibidos nos functors.
Agora vamos entender como funciona o Calculate Map, este container possibilita a formulação de
várias equações algébricas e lógicas contendo mapas, tabelas e constantes (fig. 29). A tabela a seguir
apresenta exemplos de operadores que podem ser aplicados para processar dados neste container.
DICA: Tente usar sempre a representação mais econômica para o tipo de célula a fim de
economizar memória. Se você não está seguro a respeito da faixa numérica dos dados de
saída, use uma representação de número real.
31
Tabela 1. Operadores Lógicos
Operador Descrição Símbolo Exemplo de Uso
Boolean Or or not isNull(i1) or
isNull(i2)
(Booleano ou)
||
not isNull(i1) ||
isNull(i2)
Boolean And and not isNull(i1) and
isNull(i2)
(Booleano e)
&&
not isNull(i1) &&
isNull(i2)
Equal = i1 = 2
(Igual)
== i1 == 2
Not Equal != i1 != 2
(Não igual)
/= i1 /= 2
<> i1 <> 2
Greater Than > i1 > 2
(Maior que)
Subtract (Subtrair) – i1 – i1 / i2
Times (Multiplicar) * i1 * i2
Divide (Dividir) / i1 / i2
Power (Potência) ^ i1 ^ 3
32
Catch Error Deleta um erro ? (i1 / i2) ? (i1 – i2)
algébrico e o substitui
(Capturar erro) pelo resultado de outra
expressão
Get Image Null Value Retorna o valor nulo da null if i1 > 2 then
(Obter valor nulo da célula atual i1
imagem) else
null
null(iX)
if null(i2) > 2 then
1
else
null
(Não Booleano)
not ! isNull(i1)
Get Line Number Retorna o valor da linha line line + 1
da célula atual
(Obter número da
linha)
(Raiz quadrada)
Sin (Seno) sin() sin(i1 / i4)
33
Cos (Cosseno) cos() cos(i1 + i2)
34
Get Table Lower Retorna o valor da tX[< ] t2[< i1 + 2]
Bound Value tabela cuja chave onde X é um valor
possui o maior valor inteiro entre 1 e 100
(Obter valor do limite menor que o valor da
inferior) chave de posição X da
tabela.
nbN(iX, h, w, y, x)
onde:
N é o nome do operador;
X é um identificador de imagem;
h é o número de linhas da janela;
w é o número de colunas da janela;
y é a linha onde o centro da janela está ancorado na imagem;
x é a coluna onde o centro da janela está ancorado na imagem.
O cálculo normalmente considera o centro da janela.
Janelas com números pares de linhas e/ou colunas tem o centro deslocado em direção
ao canto superior esquerdo.
A âncora da janela (y e x) pode ser omitida quando o centro da janela está ancorado
na linha e coluna atual. A sintaxe simplificada é a seguinte:
nbN(iX, h, w)
Neighborhood Min Retorna o menor valor entre nbMin() nbMin(i4, 2, 3, line-1,
(Vizinho Menor) as células vizinhas não nulas. column)
35
Neighborhood Max Retorna o maior valor entre as nbMax() nbMax(i1, 4, 4) - 1
(Vizinho Maior) células vizinhas não nulas.
onde
X1, X2, ..., Xn são as
células vizinhas;
X' é a média das células
vizinhas.
Neighborhood Retorna o desvio padrão dos nbStdDev() nbStdDev(i2, 3, 3,
Standard Deviation valores das células não-nulas line-1, column) +
(Desvio Padrão da de acordo com a expressão: nbStdDev(i2, 3, 3) +
Vizinhança) nbStdDev(i2, 3, 3,
s = (E1,n (Xi - line+1, column)
X')2/(n-1))1/2
onde
X1, X2, ..., Xn são os
valores das células vizinhas;
X' é a média das células
vizinhas.
36
Agora que você aprendeu as vastas possibilidades desse
container, vamos escrever uma equação simples:
Abra o functor Load Map e carregue o arquivo “amazon_states.tif” da pasta lesson1 (fig. 31). Não se
preocupe com as demais opções, pois elas não serão necessárias por agora.
Abra o Map Viewer para visualizar o mapa. Pressione em “Histogram” e depois mude “Limits” para
“actual” e certifique-se de que a paleta de cores, “Current Color Palette”, ativado é o PseudoColor. O
mapa resultante deste modelo é apresentado na Fig. 32.
37
Figura 32: Mapa resultante do modelo.
DICA: “Limits to actual” espalha o histograma do mapa para abranger toda a extensão de
valores visualizáveis, i.e. de 0 a 255. Use preferencialmente PseudoColor ou GrayScale para
dados quantitativos, e Categorical para dados classificados. Agora você precisa salvar o
resultado em um mapa. Abra Save Map e escreva “Mato_Grosso_state”.
Na aba Advanced há uma opção para incluir sufixos no nome do arquivo, chamada Suffix Digits (Fig.
33). Embora o padrão seja 2, mudaremos para zero, neste caso, uma vez que só haverá uma iteração.
A opção Use Compression é aplicável apenas ao formato geotiff.
O mapa de entrada é um mapa categórico; seus valores não representam quantidades, mas sim,
identificadores de classes do mapa e, neste exemplo, as classes são as seguintes:
38
Tabela 5. Classes do Mapa Amazon States
Chave Estado
1 Rondônia
2 Acre
3 Amazonas
4 Roraima
5 Para
6 Amapá
7 Tocantins
8 Maranhão
9 Mato Grosso
Feche o container Calculate Map clicando em Collapse container. O modelo deverá se parecer com o
apresentado pela Fig. 34.
Salve o modelo como “My_model” na pasta lesson1, execute o modelo clicando no botão Run model
na barra de menus. Em seguida, abra o resultado no Map Viewer. O mapa de saída irá apresentar apenas
o estado do Mato Grosso.
Figura 35: Mapa resultante do modelo sendo exibido pelo Map Viewer.
Parabéns, você concluiu com sucesso a lição 1. Agora vamos passar para a lição 2.
39
3. Lição 2: Incorporando iterações a um modelo
• Interações
• Usando Register Viewer
• Functors:
o Repeat
o Step
o Extract Map Attributes
o Load Categorical Map
o Calculate Value
o Mux Lookup Table
o Set Lookup Table Values
1) Desmatado (amarelo);
2) Floresta (verde escuro) e
3) Cerrado (verde claro).
Neste exercício você aprenderá calcular a área de floresta remanescente em cada estado.
Arraste para o Sketch um Load Map e um Load Categorical Map. Este último functor irá categorizar
um mapa, caso este já não esteja categorizado. O Load Categorical Map fará com que os valores das
células sejam tratados como identificadores de classes do mapa, de forma que quando um mapa é
40
carregado, é feita uma varredura no mapa para identificar todos os valores de células que representam
diferentes categorias ou classes de mapas. Como resultado, temos uma lista de classes, a qual se
torna encapsulada no cabeçalho do mapa. Adicionalmente, arraste para o Sketch um Calculate
Map com dois “Number map”. Sua área de trabalho aparecerá como na Fig.37:
Figura 37: Adição dos functors Load Categorical Map, Load Map, Calculate Map e Number Map.
Agora conecte desde os functors Load Map e Load Categorical Map até os functors “Number
Map”, a cada mapa dentro do Calculate Map deve ser atribuído um número, basta um clique em
Edit Funtor do Number Map e o Dinamica EGO irá ajustá-los automaticamente (Fig 38).
41
DICA: Você pode copiar uma equação de um editor de texto usando (Ctrl+C) e colá‐la (Crtl+V)
na caixa de equação.
Um valor é representado por v# (v1, v2, ...vn). Feche o functor Calculate Map. Não se esqueça de
alterar Data cell type para “Unsigned 8 Bit Integer” e o valor nulo para “0”.
Arraste o container Repeat da categoria Control para o sketch. Arraste o Calculate Map para dentro
dele. O Repeat irá automaticamente ajustar seu tamanho para aninhar o Calculate Map. Conecte o
functor Step dentro do Repeat ao porto Value do Number Value (Fig.39).
Abra o Repeat com a ferramenta Edit Functor e insira “9” como mostrado na Fig. 40. Isto implica que
o modelo irá iterar 9 vezes. O functor Step se associa automaticamente ao container envolvente e
passa para o Calculate Map o valor da iteração corrente. Assim, para cada iteração, o f u n c t o r
Calculate Map produz um mapa contendo a floresta remanescente (valor 2) para cada estado.
42
Agora você precisa somar todas as células que representam floresta. Observe que o resultado é um
mapa binário apenas com valores um e nulo, este último representado por zero. Em seguida, use
Extract Map Attribute (categoria Map Algebra) para extrair a soma de células não‐nulas. Este functor
produz como resultado uma tabela com os 18 atributos do mapa:
A extensão total em área é a soma das células não nulas (campo 9) multiplicada pela área da célula em
hectares (campo 7). Você precisará adicionar um Calculate Value, localizado na categoria Table para
realizar este cálculo. Dentro dele insira um Number Table. O Number Table recebea tabela de
atributos resultado do Extract Map Attributes. Você precisará inserir “1” como identificador para esta
tabela (Fig. 41).
43
Figura 41: Adição dos functors Extract Map Attributes e Calculate Value ao modelo.
t1[7] * t1[12]
Agora você precisa preencher a tabela para que ela registre a área calculada para cada estado. O functor
Set Lookup Table Value atualiza a tabela inserindo um valor em uma posição definida por uma chave.
Para preencher a tabela inteira, você precisa desenvolver um loop (ciclo fechado) que permite que este
functor faça uma varredura em toda a tabela. Para fechar este loop, você precisará de um functor que é
fundamental para o desenvolvimento de modelos dinâmicos. Assim, aqui introduzimos o conceito do
functor Mux.
44
Um functor Mux pode ser um mapa, um mapa categórico, uma tabela ou um valor. Localize a categoria
Control para encontrar o functor Mux Lookup Table e arraste‐o para dentro do Repeat. Também arraste
um Set Lookup Table Value a partir da categoria Table como mostrado na Fig.43.
Figura 43: Adição dos functors Mux Lookup Table e Set Lookup Table Value.
Agora, clique no Mux Lookup Table com o Edit Functor. Cada functors Mux tem dois portos de
entrada. Na primeira iteração, ele lê o arquivo de entrada do porto Initial; em seguida, ele recebe os
dados da rodada do modelo através do porto Feedback. Este processo permite que os dados sejam
atualizados pelo modelo, tornando‐o dinâmico. Por isso, este functor é fundamental para incorporar
retroalimentação em um modelo dinâmico.
Abra o functor Set Lookup Table Value com o Edit Functor. Este functor recebe uma tabela que será
atualizada com um valor inserido em uma posição definida por uma chave. Assim, você precisa
conectar a tabela de saída do functor Mux LookupTable ao porto de entrada do Set Lookup Table
(Fig.44).
Figura 44: Porto de saída do functor Mux Lookup Table e porto de entrada do functor Set Lookup Table.
Conectar a saída do Set Lookup Table Value ao Mux Lookup Table. Quando uma conexão tem duas
ou mais opções, a janela Connect Ports abre automaticamente. Você deve escolher o porto Feedback
como mostrado na Fig 45:
45
Figura 45: Conexão entre os functors Set Lookup Table Value e Mux Lookup Table.
Agora clique no ícone (edit functor) do Mux Lookup Table. Você irá abrir um editor de tabela (Fig.
46). Neste caso, você só precisa inserir “0, 0” como Key e Value para o primeiro registro da tabela e
Figura 47 a) Conexão dos functors Calculate Value e Set Lookup Table Value.
46
Figura 47 b) Conexão dos functors Step e Set Lookup Table Value.
Clique na ferramenta de layout (execute layout) e seu modelo irá se parecer como o que está logo
abaixo (Fig. 49). Observe que a conexão de retroalimentação acontece entre o Mux Lookup Table e Set
Lookup Table Value.
Como um último passo, você precisa salvar a tabela em um arquivo. Arraste o functor Save Lookup
Table da categoria Input/Output. Conecte Set Lookup Table a ele e edite o nome que será dado ao
arquivo CSV. Embora Suffix Digits seja “2” por padrão, o nome do arquivo não terá um sufixo porque
ele será salvo apenas ao final da execução do Repeat.
DICA: Se Save Map for inserido dentro de um Repeat, um arquivo será salvo a cada iteração
e um dígito representando o passo de tempo será adicionado ao final do nome do arquivo.
Verifique a integridade do modelo, salve-o e, se tudo estiver correto, clique no botão de execução
. Isto poderá levar certo tempo.
47
Para ver o resultado, abra Set Lookup Table Value clicando no ícone (Inspect Functor). Você
também pode pré-visualizar os resultados no functor Save Lookup Table e fazer um gráfico clicando
na aba de gráficos na parte superior esquerda da janela (Fig. 50).
DICA: Você pode também abrir o arquivo CSV com um programa de planilhas.
Você completou com sucesso as duas lições introdutórias. Outro modo de resolver o problema da lição
2 é através do uso de um subconjunto de functores Region. Este será o assunto da próxima lição. Você
também pode resolver o problema por meio do functor Calc Areas da categoria Map Algebra.
48
4. Lição 3: Usando o conceito de região
Um modo alternativo para resolver o exercício da Lição 2 é através do uso do conceito de Região.
Este subconjunto de functors permite a divisão de um mapa em vários mapas regionais, os quais
podem se tornar uma entrada para modelos separados ou submodelos, cujos parâmetros são
personalizados para cada região do mapa. Vamos adaptar o modelo anterior para utilizar o conceito
de regiões. Primeiro, na Library abra a categoria Region da aba All (Fig. 49).
Estes functors podem ser combinados para produzir mapas de regiões e submodelos, assim como
para unir mapas de regiões em um único mapa depois que um processamento é executado. Nesta lição
você irá aprender como obter a área de floresta remanescente para cada estado. Como resultado,
cada mapa regional irá corresponder a uma área estadual. Abra o modelo construído na pasta lesson
2. Selecione os functors dentro do container Repeat (Fig. 50.a) pressionando o botão esquerdo do
mouse e arraste-os para fora do Repeat, este terá seu tamanho reajustado conforme a Figura 50.b.
49
Figura 50. a) Functors a serem selecionados e retirados do container Repeat.
50
Os functors Region Manager e For Each Category aparecerão marcados de vermelho, informando
que há um erro no modelo conforme verificado na Figura anterior. Na aba Model Issues localizada no
canto inferior da tela está indicado aparecerá um erro para cada um destes functors. Clicando no ícone
vermelho de exclamação é possível visualizar a mensagem de erro (Fig.52).
O Region Manager conduz o processo de regionalização, enquanto For Each Category substitui
Repeat fazendo com que o modelo itere para cada categoria presente no mapa categórico usado
para definir as regiões, neste caso, o mapa dos estados amazônicos brasileiros.
DICA: Enquanto Repeat itera sequencialmente, For Each Category itera de acordo com
as categorias do mapa, o que não necessariamente é sequencial.
Agora selecione todos os functors, exceto os mapas de entrada e a tabela de saída, e coloque‐os dentro
de For Each Category.
DICA: É mais fácil selecionar tudo a ser inserido dentro do For Each Category e depois
retirar apenas Load Map, Load Categorical Map e Save Lookup Table.
Agora quebre a conexão entre o Categorical Map e Calculate Map (clique na conexão e use a
ferramenta Delete Selection)). Em seguida, conecte o primeiro ao Region Manager e também o
51
For Each Category. Este mapa irá controlar o processo de regionalização dividindo os outros
mapas em várias regiões de acordo com suas classes de células ou categorias através do functor
Regionalize Map localizado na categoria Region. Arraste este functor e insira‐o dentro do For Each
Category, quebre a conexão entre Map “brazilian_amazon_lanscape.tif” e Calculate Map e, por fim,
conecte o primeiro a Regionalize Map.
Observe que há dois functors Number Map desconectados dentro do Calculate Map. Você não irá
precisar mais do Map # 2 e do Value # 1, portanto, apague‐os. Agora conecte o Regionalize
Map ao Map # 1. Abra o functor Save Table e mude o nome do arquivo para
“remaining_forest_extent_per_state” (Fig. 55). Certifique‐se de que ele será salvo dentro da pasta
lesson3. Você precisará conectar o porto Step do functor Step ao porto Region Id do functor
Regionalize Map (Fig. 56) permitindo que ele passe ao primeiro a identificação da região atual
proveniente de For Each Category.
52
Figura 56: Conexão de portos
Por último, você precisará modificar o Calculate Map. Abra‐o com o Edit Functor.
Verifique a integridade do modelo clicando no ícone Window e em seguida em Model Issues, clique
no botão de execução. Compare o resultado deste modelo com o resultado do modelo da lição anterior.
Os resultados são equivalentes? Você é capaz de explicar como este modelo funciona? Observe que
você não precisou separar a informação por estado no Calculate Map porque o functor Regionalize
Map já tinha feito isso.
53
DICA: A abordagem de regiões é uma forma útil de se quebrar o mapa em vários
subconjuntos seja para personalizar um submodelo, por exemplo, para rodar com
diferentes parâmetros por país, estado ou município, ou para otimizar a memória em uso,
uma vez que o modelo não precisa lidar com todas as células do mapa para um cálculo
específico ou processamento, mas apenas as células selecionadas de uma região por vez.
Agora, vamos prosseguir em direção a uma análise espacial mais avançada.
Como resultado do modelo é obtida uma tabela com as áreas de floresta remanescente para cada região.
Para visualizar a tabela clique com o botão esquerdo do mouse sobre o functor Save Lookup Table,
então será habilitado o Functor Action Bar, clique sobre o ícone de engrenagem (Edit Functor)
observe a Figura 58:
Figura 58. Habilitando a visualização dos resultados no fuctor Save Lookup Table
54
Você também pode visualizar os resultados na forma de gráficos (Fig. 60) na aba “Graph/Chart” da
janela Lookup Table:
Figura 60: Gráfico da área de floresta remanescente para cada região em métros.
Note que o estado do Amazonas (3) é o que possui maior valor de floresta remanescente.
55
5. Lição 4: Calculando uma superfície de custo acumulado e um
caminho de menor custo
Este exercício requer o cálculo de uma superfície de fricção, representando o custo relativo de
atravessar uma unidade de célula dependendo do uso da terra. Podemos expressar esta superfície
em termos de distância – em que não há custo diferencial entre tipos de usos da terra de forma que
o caminho de menor custo será a rota mais curta, o u s e j a , a distância Euclidiana – tempo, custo
financeiro ou algum tipo de esforço. Assim, este valor é calculado em relação a alguma unidade
(tempo, custo de transporte, etc).
Neste exercício, nós exploraremos o uso dos functors Calc Cost Map e Calc Pathway Map. Para
encontrar a solução ótima para a superfície de custo acumulado, o functor Calc Cost Map utiliza um
algoritmo heurístico que varre repetidas vezes um mapa até que a melhor superfície de custo é obtida.
Ao aumentar o número de passos, também aumenta-se a proximidade de uma solução ótima. Use “0”
como número máximo de passos para uma solução ótima, mas, em geral, apenas dois passos são
suficientes para obter uma superfície bem próxima da solução ótima.
Questão: Queremos definir o caminho de menor custo para a construção de uma estrada de ferro que
irá conectar uma ferrovia a uma cidade localizada na região (Fig. 61). Do ponto de vista dos
engenheiros, o caminho deverá ser o mais barato, isto é, mais curto. Porém, alguns tipos de uso da
terra não podem ser convertidos de espaços abertos para estradas, representando barreiras, e outros
tem um custo muito elevado para serem atravessados. Nossa tarefa é determinar o caminho de menor
custo entre a cidade e a ferrovia existente.
Study Region
MATO GROSSO
Pontes de CUIABÁ
Lacerda
Cáceres
Rondonópolis
56
O conjunto de dados empregados neste exercício compreende:
Inicialize o Dinamica EGO e carregue os mapas mencionados acima no Map Viewer a partir da pasta
lesson4\originals usando a paleta de cores “mt”. Abra o mapa de declividade usando “Pseudocolor”
como a paleta de cores e, no Histograma clique em Limits to Actual e em Histogram Equalize.
De início, você precisará reclassificar o mapa de uso da terra para representar o custo de atravessar
cada um dos tipos de uso da terra. Você também precisará reclassificar o mapa de declividade e então
combiná‐lo com o mapa de uso da terra. Para a reclassificação do mapa de uso da terra, use os valores
de fricção apresentados na Tab.9:
57
Vamos começar o modelo carregando os mapas “landuse.tif” e “slope.tif”, usando o functor Load Map.
Em seguida, vamos incorporar as duas tabelas anteriores. Adicione um Lookup Table da aba Lookup
Table.
Agora insira três functors Calculate Map através da categoria Map Algebra no modelo. Observe que
dentro de cada Calculate Map já existe um functor Number Map. Dentro do primeiro Calculate Map
adicione mais um functor, o Number Table através da aba Map Algebra (Suppl.). Dentro do segundo
Calculate Map adicione também mais um functor Number Map através da categoria Map Algebra
(Suppl.). Por fim, adicione ao modelo o functor Save Map da aba Input/output.
Para realizar a conexão entre os functors utilize o ícone create a connection from this function que
aparece no Functor Action Bar. Conecte o functor Load Map “landuse.tif” ao Number Map do primeiro
Calculate Map e o functor Load Map “slope.tif” ao Number Map do segundo Calculate Map. Note
que ao clicar no ícone Edit Functor sobre os functors Number Map e Number Table os mesmos já irão
criar um número de identificação para os mapas e tabelas utilizados no modelo. Por fim, conecte os
dois primeiros Calculate Map ao terceiro e este ao Save Map. Abra o functor Save Map usando
o ícone Edit Functor e dê ao mapa o nome “friction.tif”. Selecione o formato “GeoTIFF
/TIFF/BigTIFF” para o mapa. Este é o modelo que você terá (Fig 63):
58
Figura 63: Conexão entre functors e adição do functor Save Map.
Agora, você precisa inserir a tabela de usos da terra no functor Lookup Table. Clique no functor
Lookup Table e selecione o ícone Edit Functor que aparecerá acima do functor. Adicione as chaves
e valores (preencha as linhas da tabela através do botão de adição) como mostrado na Fig. 64:
Abra o primeiro Calculate Map que contém o Number Table e escreva a seguinte expressão (Fig.65):
t1[i1]
59
Figura 65: Expressão para classificar o mapa de usos do solo em custos.
Esta expressão irá obter o valor do mapa e usá‐lo como chave para acessar a tabela, classificando
assim, o mapa de acordo com os valores de custo.
Insira a seguinte equação (Fig.65) dentro do segundo Calculate Map. Esta expressão corresponde à
tabela de fricção por declividade.
60
Salve o modelo como “My_friction”, verifique sua integridade através da aba Model Issue localizada
no Issue Panel e, se o modelo estiver correto, execute‐o.
Abra o arquivo “friction.tif” no Map Viewer usando o “Pseudocolor” como Palette e no Histogram
clique em Limits to Actual e Equalize.
O que você vê? Observe que a cor vermelha (Fig 67) representa as áreas com alto custo de travessia.
DICA: Sinta‐se livre para usar outro software para visualizar os mapas. O formato GeoTIFF
é automaticamente aberto nos pacotes do ARC GIS, ER MAPPER, ERDAS, dentre outros.
Vamos para a segunda parte desse exercício. Carregue “town1.tif” da pasta \originals usando o functor
Load Map e “railroad.tif” usando o functor Load Categorical Map. Lembre‐se que este functor
categoriza o mapa.
Arraste também para o modelo os functors Calc Cost Map e Calc Pathway Map da categoria Map
Algebra e também um save map da categoria Input/output.
61
Algumas observações a respeito deste algoritmo:
O algoritmo que calcula o mapa de custo é um tipo geral de "Pushbroom". Entretanto sua performance
espacial se aproxima do conhecido algoritmo "Pushgrow", especialmente quando sãousado dois ou mais
passos.
Por padrão, as dimensões das células (largura e altura) não são consideradas no cálculo de custo. Para levar
isso em consideração, habilite a opção Friction is relative em Advanced Options.
Penalização por movimentos diagonais é efetiva apenas quando os valores de fricção são altos ou o mapa
de custo é representado usando números reais.
Mapas de fricção com células representadas em números reais requerem mapas de custo com células
representadas também em números reais. Caso contrário um erro será reportado.
Cada passo usado para calcular o mapa de custo corresponde a quatro passadas no mapa originadas a partir
de direções opostas.
Lugares inalcançáveis no mapa de fricção são excluídos no mapa de curso e, assim, são representados como
células com valores nulos. O custo não é acumulado através das células de valores nulos, assim, regiões
rodeadas por células de valores nulos não terão seus custos calculados, a menos que haja uma feição dentro
desta região.
Na conexão entre os functors Load Map “town1.tif” e o Calc Pathway Map, escolha o porto Source
DICA: Source, neste caso, também representa o destino, uma vez que o mapa de custo
foi construído a partir da estrada existente. Assim, este algoritmo irá procurar pelo
caminho de menor custo a partir da fonte até a feição já existente, isto é, a estrada de ferro.
Conecte também o functor Calc Cost Map ao functor Calc Pathway Map (o mapa gerado
pelo mesmo será ligado automaticamente ao porto Cost).
62
Por fim, conecte o Load Categorical Map “railroad.tif” ao Calc Pathway Map.
O functor Calc Pathway Map ignora células com valores iguais ou inferiores a 0 ou células nulas. Por
sua vez, o functor Calc Cost Map necessita de um mapa de rede com células nulas representando locais
sem feições.
No functor Load Categorical Map através do Edit Functor habilite a caixa Define Null Value e
certifique‐se de que Null Value está representado pelo valor “0” (Fig.70).
Para salvar o mapa gerado pelo Calc Pathway Map conecte-o a um novo Save Map, com auxílio do
Edit Functor preencha as opções de salvamento, dê o nome de“railway.tif” ao mapa e selecione o
formato “GeoTIFF /TIFF/BigTIFF” e nas opções avançadas insira “0” para o Suffix to Digits .
63
Figura 71:Modelo final.
64
Você pode também tentar maximizar a solução para o algoritmo Calc Cost Map ajustando o
Maximum Number of Passes para “0”. Compare o tempo gasto por esta execução e o caminho resultante
do modelo anterior. Houve alguma grande diferença?
Este tipo de modelo também pode ser modificado para desenvolver múltiplos caminhos
simultaneamente (Fig.73). Abra o modelo “join_towns.xml” na pasta lesson 4.
Este modelo mostra como você pode usar o functor Calculate Map para combinar informações
de diferentes mapas em um único mapa. O resultado será um mapa representando as células centrais
para quatro cidades.
DICA: utilize sempre uma única célula para representar uma localização a ser alcançada pelo
Calc Pathway Map.
Agora substitua a entrada em Load Map “town1.tif” pelo arquivo “multiple_towns.tif” e mude o
arquivo em Load Map “railway.tif” para “xrailways.tif”.
65
Figura 74: Raster da estrada de ferro com múltiplos caminhos.
66
6. Lição 5: Avaliação Multicritério no Dinamica EGO
Neste exercício, nós temos dois tipos de critérios, aqueles que restringem nossa análise apenas a áreas
específicas, sendo assim booleanos com valor 1 ou 0, e aqueles que admitem um certo grau de
adequabilidade para um local dependendo de seus atributos biofísicos e de infraestrutura.
67
6.1 Primeiro Passo: Encontrando áreas sem impedimentos
Comecemos montando o modelo. Insira um Load Categorical Map no plano de Sketch e abra o arquivo
“\lesson4\original\landuse.tif”. Agora insira um Calculate Map e, em seguida abra o Number Map,
observe que será acrescentado automaticamente o número “1". Agora insira um Save Map e nomeie
como “unconstrained_areas.tif”, certifique-se de que você mudou a pasta para lesson5. Altere o formato
de arquivo para Geotiff e insira “0” em Suffix Digits.
DICA: Você pode melhorar o desempenho do modelo evitando salvar mapas intermediários.
Nesta etapa, você irá salvar o mapa apenas para verificar o resultado desta operação. Não se esqueça
de conectar todos os functors.
68
Agora abra o Calculate Map com o Edit Functor e digite a seguinte expressão (Fig.76):
if i1 = 0 then null else if i1 = 1 then null else if i1 = 4 then null else if i1 = 5 then null else 1
O valor nulo irá esconder planícies de inundação (0), rios (1), áreas urbanas (5) e estradas (6) em
operações subsequentes. Não se esqueça de mudar Data Cell Type para “Unsigned 8 Bit Integer” e Null
Value para “0”.
Nesta etapa você precisará construir buffers (zonas de amortecimento) para considerar o critério de
distância de cidades e áreas inundadas. Carregue um Calculate Categorical Map.
69
DICA: A única diferença entre o Calculate Map e o Calculate Categorical Map é que o último
gera como resultado um mapa categórico.
Você irá precisar de um Calculate Categorical Map para usar o functor Calc Distance to Feature Map
(Fig. 78); você também poderá acessá-lo através da categoria Map Algebra. Embora não seja
necessário, você pode salvar seu mapa utilizando um Save Map. Salve-o como “distance_to_towns.tif”.
Agora conecte o mapa categórico “landuse.tif” ao Number Map, não se esqueça de abrir o Number
Map para que seja inserido o número “1”.
Figura 78: Portos de conexão entre os functors Calculate Categorical Map e Calc Distance To Feature
Map.
O porto Source é um mapa contendo as feições para as quais as distâncias serão calculadas, sendo estas
feições representadas por valores não nulos. O porto Mask é um mapa usado para mascarar o cálculo
de distância nas células nulas. Vamos conectar a saída do Calculate Categorical Map em Source e o
mapa categórico “landuse.tif” em Mask.
Lembre-se de que 5 é o número de identificação para a classe área urbana. Você não precisa mudar
Data cell type nem o Null Value nos dois functors, embora, para economizar memória, você poderá
mudar Data cell type para “Signed 8 Bit Integer” e Null Value para “0” no Calculate Categorical Map.
Você também pode habilitar a opção Truncate Distance em Calc Distance to Feature Map. Isto irá
evitar que se extrapole a representação numérica máxima para Data cell type.
Agora conecte o porto Distance em Calc Distance to Feature Map ao Save Map. O modelo deverá
estar pronto para ser executado (Fig. 79). Sempre salve o modelo antes de colocá-lo para executar.
Salve-o como “My_MCE_part1&2.egoml”. Examine o resultado com o Map Viewer.
70
Figura 79: Modelo para calcular a distância às cidades.
Como um último procedimento, adicione um Calculate Map, conecte a saída de Calc Distance to
Feature Map ao seu Number Map e salve o resultado usando um Save Map com o nome
“away_from_towns.tif”. Observe que neste estágio, nós estamos pulando alguns passos, supondo que
eles já foram bem compreendidos até agora. Escreva a seguinte expressão na caixa de equação do
Calculate Map:
71
Figura 80: Modelo de distância mínima de 10 km até as cidades.
Salve-o e execute-o. Abra o mapa “away_from_towns.tif”. É isto (Fig.81) o que você obteve?
Você precisará carregar outro Load Categorical Map e inserir o arquivo “mainroads.tif” da pasta
lesson5. Você precisará mudar Null Value para “0”. Você pode conectar este functor diretamente em
outro Calc Distance to Feature Map (Fig. 82) que você precisará inserir no plano de Sketch. Use o
mapa categórico “landuse.tif” novamente como Mask.
72
Figura 82: Portos de conexão entre os functors Load Categorical Map e Calc Distance To Feature Map.
Agora iremos inserir uma série de Calculate Map. Use as seguintes equações nos respectivos Calculate
Map (você precisará de um para cada critério):
Figura 83: Modelo considerando o critério “Distância até estradas principais < 15 quilômetros”.
73
Você obteve um mapa “not_too_far_from_mainroads.tif” como este (Fig. 84)?
Para o critério de planícies de inundação, você precisará adicionar outro Calculate Categorical Map
para apontar as áreas de inundação antes de passar o mapa resultante para o Calc Distance to Feature
Map.
Conecte o mapa categórico “landuse.tif” a ele e escreva a seguinte equação na caixa de equação do
Calculate Categorical Map.
Agora conecte a saída em Calc Distance to Feature Map como o porto Source, use novamente o mapa
categórico “landuse.tif” como o porto Mask, em seguida conecte sua saída em outro Calculate Map e
escreva a seguinte equação:
O modelo para os três critérios combinados deverá se parecer com o modelo abaixo (Fig.85):
74
Figura 85: Modelo com os três critérios combinados.
Figura 86: Mapa de áreas distantes no mínimo 1000 metros das áreas inundadas.
75
6.3 Terceiro passo: Calculando tempo de deslocamento para cidades vizinhas
O tempo de deslocamento para células vizinhas não deverá exceder a 30 minutos de viagem. Este quarto
critério requer o uso do Calc Cost Map assim como uma superfície de fricção para o transporte.
Para inserir este critério, estabeleceremos duas velocidades de viagem: uma para a malha rodoviária e
outra para todos os tipos de usos da terra. Viajar pelas rodovias permite em média uma velocidade de
60 km/h. Assim, o tempo necessário para atravessar uma célula de 100 metros de resolução será de
0.1célula/ minuto. Em contrapartida, viajar através de áreas vicinais permite uma velocidade média de
20 km/h, que é equivalente a 0.3 célula/minuto.
Vamos agora reclassificar o mapa “landuse.tif” para produzir a superfície de fricção. Para fazer isso
você precisará inserir outro Calculate Map e escrever em sua caixa de equação a seguinte expressão:
Agora conecte o porto result do Calculate Map a um functor Calculate Cost Map (em seu porto
Friction) como mostra a Fig.87:
Figura 87: Portos de conexão entre os functors Calculate Map e Calc Cost Map.
Você precisará de outro Calculate Map para apontar as cidades vizinhas no mapa de uso da terra usando
a equação abaixo:
76
Importante: Não se esqueça de mudar Data Cell Type no Calculate Map que gera o mapa de fricção
e também no Calc Cost Map para “IEEE 754 Bit Real”. Lembre-se de que o custo celular é expresso
em números fracionários.
Agora passe a saída do Calc Cost Map para outro Calculate Map para produzir um mapa booleano de
acordo com o tempo máximo de deslocamento, como a seguir:
Por fim, salve o mapa resultante como “near_town_region.tif”. Note que você adicionou ao mapa três
functors Calculate Map adicionais, três functos Number Map, um Calc Cost Map e outro Save Map.
O modelo deverá se parecer com a Fig.88, na qual os functors adicionados nesta etapa aparecem na
parte superior.
77
Figura 89: Mapa de tempo de deslocamento para cidades vizinhas inferior a 30 minutos.
Somado a isso, temos que considerar que nem todos os terrenos estão disponíveis. Nós não queremos
encorajar mais desmatamento na região, portanto, precisamos usar apenas áreas já desmatadas ou
abandonadas. Também devemos excluir áreas urbanas já existentes, rios e planícies de inundação.
Os dois critérios restantes (áreas iguais ou maiores que 1000 hectares e declividade média < 0.5 graus)
devem ser implementados usando uma abordagem de zonas como aquela fornecida pelos functors da
categoria Region. Antes de iniciar esta etapa, você precisa combinar todos os critérios já implementados
anteriormente em um único mapa.
Como você já percebeu este modelo atingiu certo nível de complexidade e está começando a ficar
difícil compreender sua estrutura através da interface gráfica. Dinamica EGO oferece alguns recursos
para reduzir a complexidade visual de modelos.
Primeiramente, você pode deletar os functors Save Map, uma vez que você já verificou seus resultados.
Em seguida, você pode adicionar comentários a alguns functors destacando seus produtos. Façamos
isso.
78
Selecione a ferramenta Add comment to functor da barra de ferramentas do functor. Descreva o produto
de cada functor que precede os functors Save Map, assim você pode traçar cada fluxo de dados até seu
ponto inicial (que é o mapa “landuse.tif”). O comentário que você adicionou será o primeiro a aparecer
em uma caixa na parte superior do container Calculate Map . Faça isso clicando em seu ícone
Escreva o seguinte nos respectivos functors: “Near town regions”, “Malaria free zone”, “Away from
towns”, “Unconstrained land uses”, “Not to far from main roads” como mostra o exemplo na Fig 90:
Neste ponto, você pode deletar os functors Save Map, uma vez que você já verificou seus resultados.
Depois disso, organize o layout do modelo (Fig. 91).
DICA: Ajuste o tamanho da janela Sketch para obter uma visão mais detalhada do modelo.
79
Figura 91: Modelo após a remoção dos functors Save Map.
Os cinco functors Calculate Map produzem os cinco critérios resolvidos anteriormente. Agora você
precisa combiná-los com um Calculate Map.
Agora adicione mais quatro functors Number Map dentro do Calculate Map. Abra-o e escreva a
seguinte equação:
i1*i2*i3*i4*i5
Mude o Data Cell Type para “Unsigned 8 Bit Integer” e Null Value para “0”; escreva o comentário
“Combine five criteria” e adicione um Save Map para ver o resultado (Fig.92), nomeando o arquivo
como “five_criteria_combined.tif”. Por fim, organize o layout.
80
Figura 92: Modelo com os 5 critérios combinados.
Feche o primeiro container à esquerda para mostrar os comentários, salve o modelo como
“My_MCE_part1&2&3&4.egoml”, verifique o modelo e execute-o. Este é o mapa (Fig.93) que você
obteve?
Para simplificar mais ainda o visual do modelo, outro recurso disponível no Dinamica EGO é o
functor Group. Arraste cinco functors Group da categoria Control e coloque-os no plano de Sketch.
81
Agora selecione cada functor do fluxo de dados que termina no Calculate Map “Combine five
criteria” (Pressione Crt + botão direito para selecionar mais de um functor), deixe fora os functors
Load Categorical Map, e então arraste os functors selecionados para um Group. Repita este
procedimento para os cinco critérios (Fig. 94).
Feche cada Group e escreva os seguintes comentários em seus respectivos functors Group. Talvez
você precise ampliar a visualização do modelo.
Veja o modelo na próxima página (Fig. 95). O modelo não se tornou mais fácil de ser visualizado? É
claro, você precisará abrir o functor Group para entender como os dados são produzidos. Você pode
fazer isso um por um. Veja que a função do functor Group é ajudar a organizar o diagrama do modelo.
DICA: Group é também usado para assegurar a ordem certa de execução dado que ele sempre
executa os functors agrupados antes dos functors subsequentes.
82
Salve este modelo como “My_MCE_part1&2&3&4group.egoml” e vamos agora para o próximo
passo.
83
6.5 Quinto passo: Identificando as áreas adequadas.
Nesta etapa, você irá identificar as áreas adequadas iguais ou maiores que 1000 hectares. Primeiro,
apague o mapa “five_criteria_combined.tif”. Lembre-se que quanto menos o programa acessa o disco,
mais rápido o modelo é executado. Agora vá até a categoria Map Algebra e arraste o functor Calc
Patch Label Map. Este functor rotula manchas de células usando números sequenciais. Uma mancha
consiste em um grupo de células vizinhas de mesma categoria (veja também lição 10: Métricas de
paisagem no Dinamica EGO). Você precisará disso para implementar o critério relativo à área. Conecte
a saída de “Combine Five Criteria” a esse functor. Alguns desses parâmetros são:
Initial Patch Label: Insira “1”. Importante: Ajuste Null Value para “0” e Data Cell Type para Signed
32 Bit Integer.
Isso será o suficiente para armazenar todos os identificadores de manchas. Deixe os demais parâmetros
sem alteração. Para maiores detalhes acesse o Help localizado na barra de menu do Dinamica EGO.
Agora conecte a saída de Calc Patch Label Map a Calc Areas, disponível na categoria Map Algebra
(Fig. 97). Como saída este functor dispões de 3 opções: Nós precisamos da área em hectares, então
usaremos o porto Areas in Hectares para a próxima conexão.
Agora, coloque no plano de Sketch um Calculate Map, e um Number Table dentro dele. Conecte Calc
Areas a Table 1 (isto implica que a saída de Calc Areas é uma tabela), e a saída Map de Calc Patch
Label Map a Map #1. Agora abra Calculate Map e escreva:
Usando essa fórmula, o functor irá analisar o tamanho de cada mancha e depois eliminar as manchas
menores que 1000 hectares. Agora insira um Save Map e nomeie o arquivo como “big_areas.tif”.
Figura 97: Modelo para identificação de áreas adequadas iguais ou maiores que 1000 hectares.
84
Figura 98: Mapa de áreas adequadas iguais ou maiores que 1000 hectares.
Ótimo! Isso foi custoso! Mas antes de seguirmos para o próximo passo, ainda há uma última coisa a
fazer. Para manter os identificadores das manchas, você precisa multiplicar o resultado do último
Calculate Map no qual você adicionou o comentário “Identify big patches” pela saída do Calc Patch
Label. Assim, você manterá os identificadores apenas para as manchas grandes.
Insira um Calculate Categorical Map e dois functors Number Map dentro dele. Ajuste os Number
Map para “1” e “2” respectivamente e remova o functor Save Map. Agora conecte os functors da
seguinte forma (Fig. 99):
Figura 99: Modelo com os functors que mantém os identificadores de manchas grandes.
DICA: Você precisará de um Calculate Categorical Map ao invés do Calculate Map porque os rótulos
das manchas serão usados em seguida para regionalizar o mapa de declividade. Ajuste Null Value para
“0” e Cell Type para Signed 32 Bit Integer.
Digite: i1*i2, feche o functor e insira o comentário “keep labels only for big patches”. Agora você está
pronto para ir para o último passo.
85
6.6 Sexto passo: Estabelecendo a declividade média nas manchas selecionadas
O último critério estabelece que a declividade média nas manchas selecionadas deve ser menor que 0.5
grau. Insira um Load Map e carregue o arquivo “\lesson4\originals\slope.tif”. Agora revise a Lição 3,
pois você precisará aplicar novamente o conceito de região.
Arraste para o plano de sketch um Region Manager, For Each Category, Regionalize Map, e um Step
e insira os últimos dois functors dentro do primeiro e For Each Category dentro do Region Manager
e conecte-os da seguinte maneira (Fig.100):
Figura 100: Adição dos functors Region Manager, For Each Category, Regionalize Map, e Step.
O mapa a ser regionalizado é o “slope.tif”. O mapa de saída do último Calculate Categorical Map irá
controlar ambos os functors Region Manager e For Each Category. Lembre-se que este functor
permite que o modelo itere de acordo com as categorias de mapas passados a ele. Agora insira um Mux
Lookup Table, um Extract Map Attributes, um Calculate Value, um Number Table e um Set Lookup
Table value, todos dentro de For Each Category e conecte-os como mostrado na Fig.101:
Figura 101: Adição dos functors Mux Lookup Table, Extract Map Attributes, Calculate Value, Number
Table e Set Lookup Table value.
Escreva a equação: t1[13] no Calculate Value. Lembre-se que 13 é a chave para a média dos valores
de todas as células não nulas na tabela de atributos. Este submodelo é muito parecido com aquele
introduzido na Lição 3. Abra o functor Extract Map Attributes e habilite a opção (Fig. 102):
86
Fig 102: habilitação de opções do functor Extract Map Attributes.
Lembre-se de conectar o porto Step do functor Step ao porto Key do Set Lookup Table (Fig. 103),
Figura 103: Conexões entre os functors Step e Set Lookup Table Value.
assim como o porto Updated Table do functor Set Lookup Table Value ao porto Feedback do Mux
Lookup Table (Fig. 104).
Figura 104: Conexões entre os functors Set Lookup Table Value e Mux Lookup Table.
Abra um Mux Lookup Table com o Edit Functor Ports e clique no Initial, insira uma tabela em branco.
Para isso, apenas insira um “0” e “0”, como Key e Value. Selecione a opção Register viewer no porto
de saída Table. Assim, você poderá ver os resultados.
Por fim, insira um Calculate Categorical Map depois do Region Manager e coloque um Number
Table dentro dele (Fig. 105). Numere-os e digite a seguinte equação:
87
if t1[i1] > 0.5 then null else i1
Figura 105: Adição dos functors Calculate Categorical Map e Number Table.
Figura 106: Mapa de manchas com declividade média menor que 0.5 grau.
Por fim, você só precisa organizar o modelo em um layout mais legível. Insira um Group e arraste os
seguintes functors para dentro dele: Calc Patch Label Map, Calc Areas, Calculate Map “Identify big
areas” e Calculate Map “Keep labels only for big patches” como mostra a Fig.107.
88
Figura 107: Modelo com layout mais legível.
Feche o functor Group e adicione o comentário: “Label and select big patches”, feche o Region
Manager e digite o comentário: “Calculate average slope for each big patch”, feche o último functor
Calculate Categorical Map e digite “Eliminate patches with average slope > 0.5” como comentário e
por último, digite “Save final map” ao Save Map “suitable_for_a_new_town.tif”.
DEVER DE CASA
Ao examinar o mapa “suitable_for_a_new_town.tif”, você irá notar uma grande mancha na sua porção
sudoeste, a qual será o melhor alvo para uma nova cidade.Considerando a área de superfície como um
critério adicional, você seria capaz de adicionar um submodelo ao modelo atual para identificar esta
mancha?
DICA: Você precisará recalcular as áreas para as manchas restantes e passar essa tabela ao For
Each Category, que permite uma varredura pela tabela. Adicione dois Mux Value dentro de
For EachCategory, um que irá armazenar o valor máximo de área e outro que irá armazenar
sua chave.
89
7. Lição 6: Construindo um modelo de simulação de mudanças
de uso e cobertura da terra
Nesse contexto, este exercício explora o uso do Dinamica EGO como uma plataforma de
simulação para modelos de mudanças no uso e cobertura da terra (LUCC). O objetivo é calibrar,
executar e validar um modelo LUCC e, neste caso, trataremos de um modelo de simulação do
desmatamento. Você precisará passar por 10 passos para completar o modelo, como representado na
Fig.109 a. Para facilitar este processo, cada um desses passos será representado como um modelo
separado. Embora todos os passos possam ser unidos em um único modelo, por razões de simplicidade
nós os manteremos como modelos separados.
O conjunto de dados de entrada representa uma região do estado de Rondônia, nos arredores da cidade
de Ariquenes, na Amazônia Brasileira Fig. 109b.
Neste modelo LUCC, Dinamica EGO irá usar o mapa de 1997 como paisagem inicial e o mapa de
2000 como paisagem final, considerando a paisagem como uma matriz bi-dimensional de tipos de
usos da terra. Observe as classes de paisagem dos mapas na Tabela 12.
90
Tabela 92. Clases de paisagem
Chave Classe de Uso da Terra
0 Valor Nulo
1 Desmatado
2 Floresta
3 Cerrado
DICA: O Dinamica EGO não armazena nomes de classes explicitamente, tenha em mente os
números que identificam as classes dos mapas.
91
1. Calcular matrizes
de transição
2. Calcular faixas
para categorização
variáveis contínuas
de cinza
3. Calcular os esos
de Evidência
4. Analisar a
correlação de mapas
5. Montar e rodar
um modelo de
simulação LUCC
8. Rodar a
simulação com
formação de
Figura 109 a) Dez passos do modelo de simulação de mudanças no uso e cobertura da terra.
92
Figura 109 b) Área de estudo em relação ao estado de Rondônia e ao Brasil (verde escuro é floresta,
verde claro é área cerrado, e sem cor é área desmatada).
Primeiro, você precisará calcular as matrizes de transições históricas. A matriz de transição descreve
um sistema que muda em intervalos discretos de tempo, nos quais o valor de qualquer variável
em um dado período de tempo é a soma das porcentagens fixas dos valores de todas as variáveis do
passo de tempo precedente. A soma das frações ao longo da coluna da matriz de transição é igual a 1
(Equação 1). A linha diagonal da matriz de transição não precisa ser especificada uma vez que
Dinamica EGO não modela a porcentagem de células inalteráveis, nem as transições iguais a zero. A
taxa de transição pode ser passada ao modelo LUCC como um parâmetro fixo ou ser atualizada pela
retroalimentação do modelo.
1 1
2 2
3 = … ∗ 3 [1]
… . . . . …
A matriz de passo único corresponde a um período de tempo representado como um único passo de
tempo, por sua vez, a matriz de passos múltiplos corresponde a uma unidade de passo de tempo (ano,
mês, dia, etc.) especificado pela divisão do período de tempo por um número de passos de tempo. Para
Dinamica EGO, o passo de tempo pode compreender qualquer extensão de tempo, uma vez que as
unidades de tempo são apenas uma referência externa. Uma matriz de transição de múltiplos‐passos
pode apenas ser derivada de uma matriz ergódica, isto é, uma matriz que possui auto‐valores e auto‐
vetores reais.
93
As taxas de transição determinam a quantidade líquida de mudanças, isto é, a porcentagem de terra que
irá alterar para outro estado (atributo dos usos e cobertura da terra), e são, portanto, conhecidas como
taxas líquidas, sendo adimensionais. Em contrapartida, as taxas brutas são especificadas como uma
unidade de área, tais como hectares ou km2 por unidade de tempo. No caso de não haver solução para
a matriz de transição de múltiplos passos, você pode rodar o modelo em vários passos de tempo,
como definido acima, calculando uma taxa bruta fixa para cada passo de tempo (ano) dividindo a
mudança acumulada no período pelo número de passos que compõem o período (isto não deve ser
usado em modelos de transição complexos). Dinamica EGO converte taxas brutas em taxas
líquidas, dividindo a extensão da mudança pela fração de cada classe de uso e cobertura anterior à
mudança, antes de passá-las para os functores de transição: Patcher e Expander.
94
Figura 111: Portos de conecção dos mapas de entrada e do functor Determine Transition Matrix.
Verifique o número de passos de tempo, neste caso, insira “3”, uma vez que você quer determinar
a matriz de múltiplos passos por passos anuais (2000_1997 = 3 anos). Agora ligue o Determine
Transition Matrix ao Save Table e escolha a opção Single Step Matrix.
Figura 112: Portos de conecção do functor Determine Transition Matrix e Save Table.
Execute o modelo e abra as matrizes resultantes clicando n a opção Register Viewer nos portos de
saída (Fig. 113). É isto o que você obteve?
95
Figura 113: Taxas líquidas de mudança de floresta para não floresta em porcentagem
Você também pode ver os resultados das taxas calculadas para o modelo na janela de log. Você
precisa apenas rolar a barra de volta.
DICA: É possível copiar os resultados da janela de Log e colá-los como na Fig. 114.
A única transição que está acontecendo é de floresta (2) para área desmatada (1). As taxas indicam
que uma porcentagem da floresta está se alterando para área desmatada por unidade de passo de tempo,
que é 3 anos para a primeira matriz e 1 ano para a última. Portanto, neste período de tempo, o
desmatamento está acontecendo a uma taxa líquida de 2.8 % por ano, o que significa que a floresta
remanescente está diminuindo em 2.8% por ano. Tenha em mente que assim como taxas de juros, as
taxas de transição são reaplicadas novamente a cada passo de tempo sobre a variável estoque, que
neste caso é representada pela extensão de floresta remanescente.
A matriz de transição líquida é passada ao modelo de simulação e Dinamica EGO percorre o mapa
de paisagem (uso e cobertura) para contar o número de células para calcular a taxa bruta em
termos de quantidade de células a serem alteradas. Para atribuir uma taxa bruta constante você
96
precisará passar uma taxa líquida variável ao modelo, o que também é possível devido à habilidade do
Dinamica EGO de incorporar retroalimentação à simulação. Vamos para o próximo passo.
| = [2]
[4]
Onde B, C, D, e N são os valores das variáveis espaciais k que são medidas na localização x,y e
representadas por seus pesos WN+
Figura 115:Cálculo e aplicação dos Pesos de Evidência para produzir um mapa de probabilidades de
transição.
97
Uma vez que os Pesos de Evidência são aplicados somente a dados categóricos, é necessário categorizar
os mapas de variáveis contínuas (dados quantitativos, como mapas de distância, altitude e declividade).
Uma questão fundamental para qualquer processo de classificação consiste na preservação da estrutura
dos dados. O presente método, adaptado de Agterberg & Bonham-Carter (1990), calcula as faixas de
acordo com a estrutura dos dados estabelecendo, primeiro, um delta mínimo – especificado como o
incremento na interface gráfica – (Dx) para uma variável x de grandeza contínua que é usada para
construir n buffers incrementais (Nx) compreendendo intervalos de xminimum para xminimum + nDx. Cada n
define um limiar que divide o mapa em duas classes: (Nx) e ( ). An é o número de células para um
buffer (Nx) múltiplo de n e dn é o número de ocorrências para o evento modelado (D) dentro do buffer.
As quantidades An e dn são obtidas para uma sequência ordenada de buffers N (xminimum + nDx).
Logo após, os valores de W+ para cada buffer são calculados usando as equações 2 a 4.
Para dx (uma distância entre dois pontos ao longo de x) entre mindx e maxdx, uma nova subdivisão
é colocada sempre que dx >= maxdx (um ângulo entre v e v’‐ vetores que ligam o ponto atual ao último
ponto e o último ao seu antecessor, respectivamente) excede o ângulo de tolerância ft. Portanto, o
número de faixas decresce em função de ft. As faixas são, por fim, definidas ligando os pontos
das subdivisões com linhas retas. Observe que An é praticamente livre de erro, enquanto dn está
sujeito a uma considerável incerteza porque é tido como a realização de uma variável randômica.
Uma vez que um pequeno valor de An pode gerar valores ruidosos para W+, (Geodacre, et al. 1993)
sugere que, em vez de calculá‐lo empregando as equações [2] [4], e se deveria estimar W+ para cada
faixa definida através da seguinte expressão:
(5)
98
Figura 116: Gráfico de An pela variável "distância até as estradas".
A curva de melhor ajuste pode ser aproximada por uma série de segmentos de retas usando um
algoritmo de generalização de linhas como explicado no texto. Esta abordagem é usada para definir
os pontos de inflexão para esta curva e, em seguida, intervalos de categorias para uma variável
contínua.
Este modelo calcula faixas para classificar variáveis expressas em escalas contínuas de cinza para
a derivação dos Pesos de Evidência. Ele seleciona o número de intervalos e o tamanho de seus buffers
tendo como objetivo preservar a estrutura dos dados. Vá ao Help para uma descrição adicional a
respeito deste método. Como resultado, sua saída é usada como entrada para o cálculo dos coeficientes
dos Pesos de Evidência.
Figura 116: Modelo para o Cálculo dos coeficientes dos Pesos de Evidência.
Em adição aos mapas de paisagem final e inicial, este modelo recebe um cubo de dados raster composto
por uma série de mapas estáticos, como por exemplo vegetação, solo, altitude (eles são nomeados desta
99
forma porque eles não se alteram durante a iteração do modelo. Um cubo raster inclui um conjunto
de camadas de mapas co-registrados.
DICA: Você pode construir um cubo raster reunindo um conjunto de mapas raster co-
registrados através do functor Create Cube Map e extrair uma camada de um cubo raster
usando o functor Extract Map Layer. Dados em cubo raster são suportados apenas no
formato ER.
Além disso, o Dinamica EGO pode incorporar camadas dinâmicas na simulação, as quais são assim
conhecidas por poderem ser atualizadas durante a iteração do modelo. Para este modelo você irá
incluir a variável “distância até áreas previamente desmatadas” como um mapa dinâmico. Para esta
finalidade, o modelo emprega o functor Calc to Distance Map (Fig. 118). Abra- o com o Functor Editor.
100
Fugura 118: Entradas e saídas do functor Calc Distance Map
O Cacl Distance Map recebe como entrada (input) um mapa categórico que, neste caso, é um mapa
de paisagem. Clique agora no porto Categories. Este functor gera um mapa de distância de
fronteira (distância mais próxima) entre células de cada classe de mapa definida pelo usuário. Lembre-
se que a classe “1” representa área desmatada. Assim, o modelo leva em consideração a proximidade
de áreas previamente desmatadas em relação à probabilidade de novo desmatamento. Agora, abra
o container Determine Weights Of Evidence Ranges clicando em seu ícone na parte superior esquerda.
No lugar de Number Map, agora você encontrará um Name Map dentro deste container. Esse functor
é aplicado a containers que necessitam de um nome para o mapa ou um alias para identificar os
mapas passados a eles. Name Map é encontrado na categoria Map Algebra Supplementary. Pode
ser qualquer nome, mas os mesmos nomes serão usados durante o ajuste de parâmetros internos
do container, como é mostrado abaixo na Figura 119. Exemplos de containers que precisam de um
Name Map são: Determine Weights Of Evidence Ranges, Determine Weights Of Evidence
Coefficients, e Calc WOfE Probability Map.
Há dois functores Name Map dentro desse container, um para o mapa “23267statitcs.ers” e outro
para o mapa de distância resultante do Calc Distance Map.
Agora abra o Determine Weights Of Evidence Ranges com o Functor Editor. Ajuste o tamanho da
janela como a seguir:
101
Figura 119: Determinação dos pesos de evidência
Observe que Name Map distância tem uma camada nomeada “distance_to_1” e static_var tem uma
série de camadas, cada uma representando uma variável cartográfica.
DICA: Dos três formatos de arquivo suportados, somente o formato ER Mapper suporta nomes
para camadas. Este é um formato BIL (Band Interleaved) com um arquivo ASCII separado
para cabeçalho.
Protected areas (áreas protegidas), vegetation (vegetação) e soil (solo) já são dados categóricos,
portanto, marque‐os como tais. Os outros precisarão ser ainda classificados. Os parâmetros para o
processo de classificação são o increment (incremento) – o incremento mínimo de buffer em
unidades do mapa, por exemplo, em metros ou graus, os deltas máximos e mínimos que representam
intervalos no eixo Y dos gráficos na fig. 11, e o ângulo de tolerância, o qual mede o ângulo de desvio
a partir de uma linha reta (Fig. 120a). Alguns valores convencionais são sugeridos. O resultado deste
functor será um arquivo esqueleto dos Pesos de Evidência (Fig. 120b), mostrando os intervalos de
categorização, porém, com todos os pesos iguais a zero. Execute o modelo.
102
Os resultados podem ser visualizados e editados no editor de texto, ou no Weights of Evidence
Editor.
DICA: Se o modelo tem mais de uma transição (Ex: 1->2; 2-3), você pode copiar e colar
os parâmetros dos intervalos nas outras janelas de transições.O Dinamica EGO permite a
definição de diferentes faixas para cada transição.
2,1 0 0 0 0 0
2,1 0 0 0
A primeira linha contém as faixas e a segunda a transição e seus respectivos coeficientes de Pesos
de Evidência, os quais ainda são iguais a zero.
103
7.3 Terceiro passo: Calculando os coeficientes dos Pesos de Evidência
O mesmo conjunto de dados da etapa anterior será empregado novamente, também o esqueleto da
WEOFE, o qual é carregado através do functor Load Weights localizado na categoria Input/Output.
Não há parâmetro a ajustar no functor Calculate the Weights of Evidence coefficients, você precisa
apenas ajustar as conexões apropriadas, como é mostrado na Figura 122.
104
Figura 123: Mapas de entradas do modelo.
DICA: Na configuração do functor Determine the Weights of Evidence Coefficients Sempre use os
mesmos nomes no Name Map.
Maximize a janela log e execute o modelo. Vamos analisar os resultados para a variável
“distance_to_1” (Fig. 124).
A primeira coluna mostra as faixas, a segunda o tamanho do buffer em células, a terceira o número de
transições ocorridas dentro de cada buffer, a quarta os coeficientes obtidos, a quinta a medida do
Contraste e a última o resultado para o teste de significância estatística. Para mais detalhes, vá ao Help.
105
DICA: O Help do Dinamica EGO traz uma descrição detalhada de algoritmos mais complexos,
tais como aqueles empregados nos functors de calibração e validação.
Os resultados poderão ser visualizados e editados no Weights of Evidence Editor, observe que as
primeiras faixas mostram uma associação positiva, favorecendo o desmatamento, especialmente a
primeira. Em contrapartida, as faixas finais mostram valores negativos, portanto, repelindo o
desmatamento. As faixas centrais mostram valores próximos de zero, significando que estas faixas
de distâncias não exercem um efeito sobre o desmatamento.
O Contraste mede o efeito de associação/repulsão. Próximo de zero, não há efeito nenhum, enquanto
que quanto maior e positivo o valor se torna, maior é a atração; por outro lado, quanto maior e
negativo é o valor, maior é o efeito de repulsão.
Agora abra o Editor Gráfico dos Pesos de Evidência (Fig. 125) dentro do functor Save Weights (ícone
do olho).
Você pode editar graficamente os coeficientes dos Pesos de Evidência e também pode obter uma
visão de uma função contínua dos coeficientes dos Pesos de Evidência. Observe agora como o
desmatamento provável varia em função da distância até uma área previamente desmatada.
106
7.4 Quarto passo: Analisando a correlação de mapas
A única suposição necessária ao método dos Pesos de Evidência é que os mapas de entrada devem ser
espacialmente independentes. Um grupo de medidas pode ser aplicado para estimar esta suposição,
como o teste de Cramer e o Joint Information Uncertainty (Incerteza de Informação Conjunta)
(Bonham-Carter 1994).
Como resultado, variáveis correlacionadas devem ser desprezadas ou combinadas em uma terceira que
substituirá o par correlacionado no modelo.
Este modelo executa testes em pares de mapas categóricos para testar a suposição de independência.
Os métodos empregados são o Chi^2, Crammers, Contingência, a Entropia e o Joint Information
Uncertainty (Incerteza de Informação Conjunta) (Bonham-Carter 1994). Além das conexões a serem
107
feitas, o único parâmetro a ser ajustado no functor Determine Weights of Evidence Correlation é
a transição, como na Figura 128.
Antes de executar o modelo, maximize a janela Message Log. Abaixo está uma parte do log reportado.
DICA: Seria interessante copiar o log, colar em um editor de texto e depois exportar para uma
planilha. Na planilha, você poderá ajustar uma tabela de cruzamento mostrando todos os
pares de variáveis.
Vamos checar os pares correlacionados de mapas. O seguinte par chama a nossa atenção:
static_var/ static_var/
Embora não haja concordância a respeito de qual limiar deve ser usado para excluir uma variável,
todos os testes destacam uma alta correlação neste par de variáveis. Dessa forma, você deve excluir
um dos dois. Vamos remover o d_major river. Apague a variável do arquivo dos Pesos de Evidências
usando o editor gráfico. Abra-o no Load Weights usando o ícone Toggle map visibility.
\setup_run_and_validate_a_lucc_model\4_weights_of_evidence_correlation
Ótimo, você concluiu o processo de calibração, agora você pode começar a montar o modelo de
simulação. Vamos adiante.
Vamos começar a ajustar o modelo de simulação do desmatamento carregando seus dados de entrada.
Você precisará de um Load Categorical Map para carregar a paisagem inicial:
108
“/original/23267_1997.ers”, um Load Map para “/originals/23267statics.ers”, um Load Weights
para “new_weights.dcf”, e um Load Lookup Table para a matriz de transição de múltiplos passos:
“multiple_steps.csv” porque você irá rodar o modelo em passos de tempo anuais. Adicione os
seguintes comentários a cada functor (Fig.129):
Agora, insira um Repeat, e coloque dentro dele um Calc Distance Map, um Mux Categorical
Map da categoria Control, um Calc Weights of Evidence Probability Map da categoria Map
Algebra e um Save Map. Coloque também dois functores Name Map dentro do Calc Weights
of Evidence Probability Map. Renomeie‐os com o nome utilizado no segundo e no terceiro
passo. Abra o Save Map e escreva “probabilities.ers” na pasta \5_run_lucc. Deixe a opção Suffix =
“2” (Fig. 130).
Figura 130: Modelo com os functors Repeat, Calc Weights of Evidence Probability Map, Calc Distance
Map e Mux Categorical Map.
Vamos conectar os functors: primeiro, o mapa categórico “23267_1997.ers” ao porto initial do Mux
Categorical Map, a saída deste ao Calc Distance Map, Calc Change Matrix e Calc W. Of E.
Probability Map. Conecte a tabela “multiple_steps.csv” a Calc Change Matrix, o mapa
“23267statics.ers” a nome “static_var”, a saída do Calc Distance Map ao nome “distance”, os pesos
109
“new_weigths.dcf” ao Calc W. Of E. Probability Map e sua saída ao mapa “probabities##.ers”
(Observe que o sufixo ## irá receber o passo da iteração do modelo).
Agora insira dois functors adicionais, Patcher da categoria Simulation e outro Save Map. Escreva
“Landscape.ers” e deixe “2” como Suffix. Conecte a saída do Mux Categorical Map ao porto do
Patcher chamada Landscape, a saída do Calc W. Of E. Probability Map ao porto Probabilities do
Patcher, e a saída do Calc Changes ao porto Changes do Patcher.
Para completar o loop você precisará conectar o porto de saída Changed Landscape do Patcher ao
porto Feedback do Mux Categorical Map e ao mapa “Landscape##.ers” para salvar os mapas da
execução do modelo. O modelo deverá, agora, se parecer com o apresentado pela Fig.130:
O functor Mux Categorical Map permite uma atualização dinâmica do mapa de paisagem de entrada.
Ele recebe o mapa categórico “23267_1997.ers” em seu porto Initial no começo da simulação e, em
seguida, o mapa de saída do Patcher através do porto Feedback.
O functor Calc W. OF. E. Probability Map calcula um mapa de probabilidade de transição para cada
transição especificada somando os Pesos de Evidência, utilizando a equação 4.
Por sua vez, o Calc Change Matrix recebe a matriz de transição, composta por taxas líquidas, e a
utiliza para calcular taxas brutas em termos de quantidade de células a serem alteradas
multiplicando as taxas de transição pelo número de células disponíveis para uma mudança
específica.
O Dinamica EGO usa como regra local de autômato celular um mecanismo de transição composto
por dois functors complementares de transição, Expander e Patcher, especialmente desenvolvidos
para reproduzir os padrões espaciais de mudança (ambos são encontrados na categoria Simulation).
O primeiro processo é dedicado apenas à expansão ou contração de manchas já existentes de certa
classe, enquanto o segundo processo foi feito para gerar ou formar novas manchas através de um
110
mecanismo de semeadura. O Patcher procura por células ao redor de uma localização escolhida
para uma transição conjunta. O processo é iniciado selecionando a célula núcleo da nova mancha
e então selecionando um número específico de células ao redor da célula núcleo, de acordo com suas
probabilidades de transição Pij.
Variando seus parâmetros de entrada, estas funções possibilitam a formação de uma variedade de
tamanhos e formas de manchas de mudanças. Patch Isometry varia de 0 a 2. As manchas assumem
uma forma mais isométrica à medida que este número aumenta. Os tamanhos das manchas de alteração
são ajustados de acordo com uma distribuição de probabilidade lognormal. Portanto, é necessário
especificar os parâmetros desta distribuição representados pela média e a variância dos tamanhos das
manchas a serem formadas. Abra este functor com Edit Functor e insira seus parâmetros conforme
o que se segue (deixe os demais inalterados):
DICA: Quando Save Map é colocado dentro de Repeat, ele salva um mapa como resultado a
cada passo de tempo (Se você quiser somente a paisagem simulada final, arraste o Save Map
para fora do Repeat).
111
Verifique o Log reportado, e abra no Map
Viewer os mapas “probabilities3.ers” usando
“PseudoColor” como Color Palette e
“landscape3.ers” usando “Amazon” como Color
Palette no Map Viewer (Fig.132).
Modelos espaciais requerem uma comparação em um contexto de vizinhança, porque até mesmo mapas
que não se assemelham exatamente célula-a-célula podem ainda apresentar padrões similares e,
igualmente, concordância espacial nas proximidades de uma célula. Para lidar com essa questão,
muitos métodos de comparação baseados em proximidade têm sido desenvolvidos. Por exemplo,
Costanza (1989) introduziu procedimento de ajuste de resoluções múltiplas que compara o ajuste de
um mapa em tamanhos crescentes de janelas. Pontius (2002) apresentou um método similar ao de
Costanza (1989) que diferencia erros devidos à localização e à quantidade. Power et al. (2001) forneceu
um método de comparação baseado em casamento de padrão fuzzy hierárquico. Por sua vez, Hagen
(2003) desenvolveu novas métricas, incluindo o Kfuzzy, considerado como equivalente à estatística
Kappa, e a similaridade fuzzy que leva em consideração a incerteza da localização de uma categoria
dentro da vizinhança de uma célula.
O método que aplicamos aqui é uma modificação deste último e é nomeado no Dinamica EGO como
Calc Reciprocal Similarity. Este método emprega uma função de decaimento exponencial com a
distância para ponderar a distribuição do estado da célula ao redor de uma célula central.
112
Abra o modelo “determine-similarity-of-differences.xml” da pasta \6_validate_using_exponential_
decay_function (Fig. 133). Neste modelo ele apresenta a função de “Calc Reciprocal Similarity Map”
como submodelo na aba “Validation”, neste metodo basta conectar os arquivos de entrada ao Calc
Multi window similarity of Differences e a um Save Table. O modelo deverá, agora, se parecer com o
seguinte:
Uma construção alternativa do modelo pode-se desenvolver através do functor Calc Repreciprocal
Similatity Map que recebe as paisagens inicial e final (simulada). Os dois functors Calculate
Categorical Map antes do Calc Reciprocal Similarity Map. Atribuem aos mapas simulados padrões
espaciais do mapa inicial de paisagem. Para remover esta herança, este modelo avalia o ajuste espacial
entre mapas de mudanças.
Dessa maneira, o mapa resultante representará apenas as células que não mudaram.
O Calc Reciprocal Similarity Map calcula uma similaridade de duas vias, do primeiro mapa para o
segundo e do segundo para o primeiro. É aconselhável sempre escolher o menor valor de similaridade,
uma vez que mapas randômicos tendem a produzir um alto ajuste artificial quando comparados
univocamente, porque eles dispersam as mudanças sobre mapa. Este todo o teste emprega uma função
de decaimento exponencial em uma janela de tamanho 11x11, sendo os valores truncados fora da
janela.
Simulated land use map Initial land use Final land use map
2 3 1 3 1 3 1 3 1 1 1 3
3 3 1 2 2 3 2 2 2 2 3 1
2 2 2 3 2 1 1 2 3 2 1 2
2 2 2 1 3 2 2 1 3 2 3 2
≠ ≠
2 X X X X 1 X X
0.3 0.5 0.3
3 X 1 X X 2 3 1
0.5 1 0.5
X 2 2 3 3 2 X X
0.3 0.5 0.3
2 X X X X X 3 2
= 3.4/7 = 3.9/8
= 0.4857 = 0.4875
Figura 135. Método de comparação Fuzzy usando mapa de diferenças e uma função de decaimento
exponencial. O mesmo processo se aplica a função de decaimento constante, na qual todos os pesos da
janela são ajustados para 1.
114
Abra Calc Reciprocal Similarity Map com o Functor Action
Bar. Os parâmetros a serem ajustados são o Window Size e o Use
Exponential Decay e Cell Type.
Este conjunto de functors permite a escolha do mapa de similaridade mínima a ser salvo. Para fazer
isso, nós introduzimos três novos functores: If Then, If Not Then e Join Map – disponível na categoria
Control. Os dois primeiros são containers que recebem uma chave booleana como entrada (0 nega a
condição e qualquer número maior que 0 toma a condição como verdadeira). Antes deles, o Calculate
Value examina os dois valores de saída do Calc Reciprocal Similarity Map, o First Mean e o Second
Mean, passando 0 ou 1 dependendo de qual dos dois é maior. If Then contém um Calculate Map que
recebe o mapa First Similarity e o If Not Then que recebe o mapa Second Similarity. Dependendo do
115
resultado booleano do Calculate Value, um dos dois containers irá passar a Map Junction o seu
resultado, permitindo, assim, que o mapa com menor valor de similaridade seja salvo.
DICA: Estes três novos functors permitem o desenvolvimento de modelos que possuem
bifurcações para dois ou mais fluxos de execução.
116
Figura 139: Resultados da similaridade mínima
As áreas em vermelho e amarelo mostram altos a moderados ajustes espaciais, enquanto as áreas
em azul indicam pouco ajuste.
Outro forma de medir o ajuste espacial entre dois mapas é por meio da análise de similaridade
por múltiplas janelas. Este método emprega uma função de decaimento constante dentro de um
tamanho variável de janela. Se o mesmo número de células de mudança é encontrado dentro da
janela, o ajuste terá valor 1, não importando suas localizações. Isso representa um modo
conveniente de avaliar o ajuste do modelo através de uma resolução espacial decrescente.
Modelos que não se combinam bem em alta resolução talvez consigam um ajuste apropriado a
uma resolução mais baixa. Vamos desenvolver uma comparação de ajuste em resoluções
múltiplas no próximo passo.
Abra o modelo:
Determine-muti-window-similarity-of-differences_complete.egoml
da pasta \7_validate_using_multiple_windows_constant_decay_function.
(Fig. 140)
117
Figura 140: Modelo de similaridade usando multiplas janelas
A primeira parte deste modelo é similar ao anterior. Dois functors Calculate Map são empregados
para obtenção dos mapas de mudanças. Agora abra o functor For (Fig.141). Vamos examinar seu
conteúdo em detalhe.
Ao centro temos um Calc Reciprocal Similarity Map. Abra-o com o Edit Functor. Observe que
a opção Use Exponential Decay está inativa, o que significa que uma função de decaimento
constante está sendo usada.
118
A ligação entre Calc reciprocal Similarity Map e o Step define o tamanho da janela (Window
Size) como mostra a Figura 142.
O Step vindo do For está controlando o Window Size. O For é um caso particular de Repeat, no
qual o passo inicial e o final, assim como o incremento de cada passo, podem ser definidos como
se segue:
Da mesma maneira que na lição 2, nesse modelo o Mux Lookup Table é empregado para atualizar
a tabela que contem as médias da mínima de similaridade no functor Set Lookup Table por
tamanho de janela. Abra Group contendo os functors que atualizam estas tabelas.
119
Figura 144: Modelo de Similariade Minima usando múltiplas janelas
O Calculate Value seleciona o menor valor de ajuste (a fórmula aplicada é min (v1, v2)) e o envia
ao Set Lookup Table, o qual também recebe como entrada o passo atual como a chave da tabela.
À medida que For itera, Calc Reciprocal Map calcula os valores de similaridade para um
tamanho de janela e envia-os para Calculate Value, que seleciona o valor mínimo e o envia para
Set Lookup Table que, por sua vez, atualiza o valor para a chave da tabela correspondente ao
passo atual do modelo e retorna a tabela atualizada ao Mux Lookup Table. Quando For é
completado, a tabela é repassada ao Save Table, visualize os resultados da tabela mínima de
similiralidade com múltiplas tabelas (Fig.145).
Clique no Register Viewer do de Set Lookup Table Value, execute o modelo e analise a tabela
resultante clicando no porto Updated Table ou no Save Lookup Table (Fig.146).
120
Figura 146: Tabela de similaridade mínima com múltiplas janelas
O ajuste vai de 21% na resolução de 1x1 célula até 90% na resolução de 11x11 células. Observe
que, o fato da simulação receber como entrada uma matriz de transição fixa para o ajuste da
quantidade de mudanças, nós precisamos apenas avaliar o ajuste do modelo em relação à
localização das mudanças. Levando em consideração que a resolução é de 250 metros e o raio de
procura da janela tem a metade desta resolução, você pode desenhar um gráfico representando o
ajuste do modelo por resolução especial Erro! Fonte de referência não encontrada..
A partir do gráfico podemos afirmar que a simulação atingiu um valor de ajuste de similaridade
de até 50% em uma resolução espacial de ≈ 800 metros.
Agora que a fase de validação for concluída, você pode começar e alterar os parâmetros do modelo
de simulação para explorar possíveis resultados. Vamos fazê-lo no próximo passo.
121
7.8 Oitavo passo: Executando simulação com formação de manchas
Esta etapa tem por objetivo analisar os parâmetros da função de transição do Patcher na estrutura
da paisagem simulada. Abra o modelo “simulate_deforestation_from_1997_2000_
with_patch_formation” da pasta \Examples\setup_run_and_validate_a_lucc_model\8_run_lucc_
with_patch_formation (Fig. 148). Este é o mesmo modelo usado no quinto passo.
122
Agora abra o functor Patcher com a barra Functor Action Bar.
Execute o modelo, abra ambos os arquivos “landscape3.ers” deste modelo e do quinto passo,
assim como o arquivo “23267_2000.ers” para comparação visual (Fig. 150).
Observe que a paisagem simulada neste passo apresenta uma estrutura de paisagem próxima
àquela da paisagem final observada. Vamos agora adicionar o functor Expander ao modelo de
simulação.
123
O functor Expander se dedica exclusivamente à expansão ou à contração de manchas existentes
de certa classe. Portanto, no Expander, uma nova probabilidade espacial de transição Pij depende
da quantidade de células do tipo j ao redor de uma célula do tipo I, como representado na fig. 14.
124
Figura 153: Modelo de alocação de transição
O Modulate Change Matrix (Fig.154 a e b) divide o número de células a serem alteradas por
transição em duas matrizes: a matriz Modulated Changes e a Complementary Changes. A
primeira vai para Expander e a segunda para Add Change Matrix. Neste caso, 20% das mudanças
2 para 1 vão para Expander.
125
Assim, o Patcher (Fig.155) receberá o mapa de paisagem do Expander e o mapa de pobabilidade,
(ajuste para 0) onde as transições acontecem. No caso do Expander não conseguir fazer todas as
mudanças especificadas, uma matriz de mudanças restantes para cada transição será passada para
Add Change Matrix, que combinará as matrizes recebidas de Modulate Change Matrix e do
porto Remaining Changes do Expander. Seus demais parâmetros são ajustados como aqueles do
Patcher.
Figura 157: Conecção de portos do Modulate Change Matrix e Add Change Matrix
Agora execute o modelo, acesse o log para o relatório, e compare os resultados com os resultados
anteriores (Fig.158).
126
8th Step 9th Step 23367_2000
Tente mudar os parâmetros de Modulate Change Matrix, Expander e Patcher para ver o que
você obtém.
DICA: Mude apenas um parâmetro por vez. Agora que o modelo está calibrado tanto em relação
à localização das mudanças quanto à estrutura da paisagem, você pode aplicá-lo para fins de
projeção futura. Vamos avançar para o último passo.
Modelos de simulação podem ser entendidos como um dispositivo heurístico útil para avaliar, em
curto e longo prazo, os resultados de uma variedade de cenários, traduzidos como diferentes
conjunturas socioeconômicas, políticas e ambientais. Entre eles, uma classe especial de modelos,
os modelos espacialmente explícitos, simula a dinâmica de um sistema ambiental, reproduzindo
a maneira como seus padrões espaciais evoluem, para projetar as consequências ecológicas e
socioeconômicas prováveis decorrentes da dinâmica do sistema.
Assim, como é mostrado através do presente exemplo, podemos aplicar o modelo de simulação
para estimar os impactos de trajetórias futuras de desmatamento sob vários cenários
socioeconômicos e de políticas públicas, relativos às emissões de gases do efeito estufa (Soares-
Filho et al., 2006), mudanças climáticas regionais (Schneider et al., 2006; Sampaio et al, 2007),
regime hídrico (Costa et al, 2003, Coe et al, 2009), perda de habitat e fragmentação de
127
ecossistemas (Soares-Filho et al., 2006, Texeira et al., 2009), assim como a perda de serviços
ambientais florestais e bens econômicos (Fearnside, 1997).
As únicas diferenças entre este modelo e o modelo anterior consistem na sua paisagem inicial,
que é agora um mapa do ano 2000, o número de iterações ajustado para “30”,
Como este modelo usa taxas fixas de transição, nós podemos considerar que ele projeta a
tendência histórica para o futuro, por isso, ele foi nomeado como cenário de tendência histórica.
DICA: Você precisa mover o mapa “Landscape####.ers” para fora do Repeat para quebrar a
ligação do Step.
Verifique as diferenças entre este modelo e o anterior abrindo os functors e suas conexões e, em
seguida, execute o modelo e abra o mapa “landscape2030.ers” (Fig. 160).
DICA: Talvez você queira salvar apenas o mapa de paisagem final. Para fazer isso, você
precisa apenas arrastar Save Map para fora do Repeat.
128
Figura 160: Mapa de paisagem com 30 iterações
Observe que a floresta desaparece virtualmente fora das áreas protegidas, as quais começam a
serem invadidas. Isto é o que irá acontecer se a tendência histórica recente de desmatamento
continuar pelo futuro.
Mapas animados são poderosas ferramentas para conscientizar a população em geral sobre as
possíveis consequências de alterações na dinâmica do sistema, tal como o desmatamento na
Amazônia.
DICA: Salve os mapas resultantes a cada passo de tempo no formato Geotiff. Em seguida,
você pode importá-los para um SIG ou para um software de processamento de imagens
para construir animações.
Você pode querer melhorar este modelo incorporando taxas dinâmicas, outras variáveis
dinâmicas, submodelos, tais como o construtor de rodovias, e retroalimentações a partir dos
atributos da paisagem para o cálculo da taxa de transição. Tudo isso é possível no Dinamica EGO.
Um exemplo de módulo de construtor de rodovias é encontrado no modelo
mato_grosso_road.xml em
\Examples\run_lucc_northern_mato_grosso\run_roads_with_comments. Além disso, o Dinamica
EGO permite a incorporação de cenários econômicos, sociais e políticos em um modelo que
integra o efeito dessas causas subjacentes (Geist, & Lambin, 2001) na trajetória do desmatamento
(normalmente estas variáveis são entradas no modelo na forma de tabelas com chaves
especificadas para uma unidade geográfica, tal como um município, estado ou país).
129
8. Linguagem de script e execução em console do Dinamica
EGO
À medida que um modelo se torna cada vez mais complexo, você provavelmente achará útil
salvá‐lo no formato EGO para continuar desenvolvendo o modelo usando a linguagem de
programação EGO em um editor de texto (e.g. NotePad++, Context ou compilador C++). Por
exemplo, o modelo da Extração de Madeira na Amazônia (Merry et al., 2009), desenvolvido no
Dinamica EGO, envolve mais de mil linhas de código de programação.
Ambos os formatos script (XML, EGO) são 100% compatíveis, de forma que os usuários podem
trazer o modelo e retornar com ele da interface gráfica para o editor de texto sem perder nenhuma
informação. Os modeladores avançados irão se beneficiar bastante desta linguagem de
programação bem estruturada e de fácil utilização.
Vamos fazer isso. Selecione o ícone ( Add Comment to Functor) e clique no mapa
categórico “23267_1997.ers”. Digite no campo alias “initial_landscape” (Fig 161), clique no
Calc Distance Map e digite no alias “distance_to_deforested”.
130
Figura 161: Adição de comentário ao functor Load Categorical Map.
Faça o mesmo para os functors: Map “23267statics.ers”, Calc W. Of. E. Probability Map,
Calculate Value, Expander, Patcher, e Mux Categorical Map, escrevendo os respectivos
alias:
“statics”,
“probability”,
“year”,
“landscape_with_patches_expanded”,
“landscape_with_new_patches”, e
“feed_back_landscape”.
131
/**
metadata.description = This script corresponds to a deforestation model. Only one transition is modeled: 2 to 1, time-period comprises
2000 to 2030, divided in annual time steps. The land cover classes are non-forest (3), forest (2), and deforested (1). The model is set
to form patches and to expand previous patches of deforested land.
metadata.showproperties = yes
*/
Script {{
Aqui começa o
defineNullValue = .no,
nullValue = 0,
Alias substitui nomes internos
suffixDigits = 0,
filename = "../originals/23267statics.ers",
loadAsSparse = .no,
defineNullValue = .no,
nullValue = 0,
suffixDigits = 0,
step = .none
};
// Transition Matrix.
132
loadLookupTable852 := LoadLookupTable "../1_transition_matrix_calculation/multiple_steps.csv" 0 .none;
// Simulation model.
step = step;
2->1 0.2
];
distance_to_deforested := CalcDistanceMap {
categoricalMap = feed_back_landscape,
categories = [ 1 ],
cellType = .int32,
nullValue = -2147483648,
truncateDistance = .yes
};
@collapsed = yes
probability := CalcWOfEProbabilityMap {
landscape = feed_back_landscape,
weights = loadWeights851,
transitions = [ 2->1 ],
cellType = .uint8,
nullValue = 0
} {{
}};
133
@alias = landscape_with_patches_expanded
changes = modulatedChanges,
transitionParameters = [
2->1 20 50 1.5
],
neighborWindowLines = 3,
neighborWindowColumns = 3,
pruneFactor = 10
};
probabilities = corrodedProbabilities,
transitionParameters = [
2->1 25 50 1.5
],
neighborWindowLines = 3,
neighborWindowColumns = 3,
pruneFactor = 10
};
year := CalculateValue [
2000 + v1
] .no 0 {{
NumberValue step861 1;
}};
map = landscape_with_new_patches,
134
filename = "landscape.ers",
suffixDigits = 4,
step = year,
}};
Fecha-se o modelo
}};
A janela Models apresenta o modelo a ser executado (Fig.164). Ao clicar no ícone (add
models to execution list) é possível adicionar os modelos a serem executados em console.
135
Figura 164: Adição de modelo para ser executado no console.
Após selecionar o modelo desejado, clique no ícone (change model options) para configurar
as opções de execução em console (Fig 165).
136
DICA: Outro jeito de acoplar livremente outros programas de computador com
Dinamica EGO é através do functor Run External Process, disponível na categoria
Control. Usando este functor, você será capaz de chamar um programa externo a
partir do Dinamica, passar a este programa resultados intermediários e, alimentar
novamente o modelo do Dinamica EGO com os resultados obtidos.
137
9. Referências
Agterberg, F.P. and Bonham-Carter, G.F. Deriving weights of evidence from geoscience contour
maps for the prediction of discrete events. XXII Int. Symposium AP-COM, 381-395. (1990).
Anselin, L. Spatial Externalities, Spatial Multipliers and Spatial Econometrics. (University of
Illinois, Urbana-Champaign, 2002).
Bonham-Carter, G. Geographic information systems for geoscientists: modeling with GIS.
(Pergamon, New York, 1994) 398 pp.
Burrough, P. A. Principles of Geographical Information Systems for Land Resources Assessment.
(Clarendon Press, Oxford, 1986).
Cattaneo, A. How to Distribute REDD Funds Across Countries? A Stock-Flow Mechanism.
Submission to the United Nations Framework Convention on Climate Change regarding
AWG-LCA (FCCC/AWGLCA/2008/L.7) (2008).
Costa, M. H., Botta, A. and Cardille, J. A. Effects of large-scale changes in land cover on the
discharge of the Tocantins river, Southeastern Amazonia. Journal of Hydrology 283, 206-
217 (2003).
Costanza, R. Model goodness of fit: a multiple resolution procedure. Ecological Modelling, 47,
199-215 (1989).
FAS (Fundação Amazônia Sustentável). The Juma Sustainable Development Reserve Project:
Reducing Greenhouse Gas Emissions from Deforestation in the State of Amazonas, Brazil.
For validation at Climate Community and Biodiversity alliance (CCBA). [online]
<http://www.climate-standards.org/pdf/release_juma_english_v_1_0_3.pdf> (2008).
Fearnside, P. M. Environmental Services as a Strategy for Sustainable Development in Rural
Amazonia. Ecological Economics 20 53-70 (1997).
Geist, H. J. and Lambin, E. F. What Drives Tropical Deforestation? A Meta-Analysis of Proximate
and Underlying Causes of Deforestation Based on Subnational Case Study Evidence.
Belgium, LUCC International Project Office, LUCC Repo6rt Series, 4. 136pp. [online]
<http://www.geo.ucl.ac.be/LUCC/lucc.htm> (2001).
Goodacre C. M., Bonham-Carter G. F., Agterberg, F. P. and Wright D. F. A statistical analysis of
spatial association of seismicity with drainage patterns and magnetic anomalies in western
Quebec. Tectonophysics 217, 205-305 (1993).
Hagen, A. Fuzzy Set Approach to Assessing Similarity of Categorical Maps. International
Journal of Geographical Information Science, 17, 235-249 (2003).
Houghton, R.A. et al. Annual fluxes of carbon from deforestation and regrowth in the Brazilian
Amazon. Nature 403, 301-304 (2000).
Houghton, R. A., Lawrence, K. T., Hackler, J. and Brown, L. S. The spatial distribution of forest
biomass in the Brazilian Amazon: a comparison of estimates. Global Change Biology 7,
731-746 (2001).
Houghton, R.A. in Tropical Deforestation and Climate Change. (eds Moutinho and S.
Schwartzman) (IPAM and ED, Belém, 2005).
Hirsch, A. I., Little, W. S., Houghton, R. A., Scott, N. A. and White, J. D. The net carbon flux
due to deforestation and forest re-growth in the Brazilian Amazon: analysis using a process-
based model. Global Change Biology 10, 908-924 (2004).
INPE (Instituto Nacional de Pesquisas Espaciais). Monitoramento da Floresta Amazônica
Brasileira por Satélite - Projeto PRODES. [online] <http://www.obt.inpe.br/prodes>
(2007)
McGarigal, K. and Marks, B.J. FRAGSTATS: Spatial pattern analysis program for quantifying
landscape structure. PNW-GTR-351. U.S. Department of Agriculture, Forest Service,
Pacific Northwest Research Station, Portland. (1995).
Metzger, J.P. How to deal with non-obvious rules for biodiversity conservation in fragmented
landscapes? The Brazilian Journal of Nature Conservation 4, 125-139 (2006).
Moutinho, P. and S. Schwartzman. Tropical Deforestation and Climate Change. (IPAM and ED,
Belém, 2005).
138
Merry, F., Soares-Filho, B.S., Nepstad, D., Amacher, G. and Rodrigues, H. Balancing
Conservation and Economic Sustainability: The future of the Amazon timber industry.
Environmental Management (2009). doi: 10.1007/s00267-009-9337-1
Pontius, R.G. Jr., Statistical Methods to Partition Effects of Quantity and Location During
Comparison of Categorical Maps at Multiple Resolutions. Photogrammetric Engineering
and Remote Sensing 68, 1041-1049 (2002).
Power, C., Simms, A. and White, R. Hierarchical fuzzy pattern matching for the regional
comparison of Land Use Maps. International Journal of Geographical Information Science
15, 77-100 (2001).
Saatchi, S. S., Houghton, R. A., Dos Santos Alvala, R. C., Soares, Z. J. V. and Yu, Y. Distribution
of aboveground live biomass in the Amazon basin. Global Change Biology 13, 816–837
(2007).
Schlamadinger, B., Johns, T., Ciccarese, L., Braun, M., Sato, A., Senyaz, A., Stephens, P.,
Takahashi, M. and Zhan, X. Options for including land use in a climate agreement post-
2012: improving the Kyoto Protocol approach. Environmental Science and Policy 10, 295-
305 (2007).
Sampaio, G., Nobre, C., Costa, M. H., Satyamurty, P., Soares-Filho, B. S., Cardoso, M. Regional
climate change over eastern Amazonia caused by pasture and soybean cropland expansion.
Geophysical Research Letters 34, 1-7 (2007). doi: 10.102
Santilli, M., Moutinho, P., Schwartzman, S., Nepstad, D. C., Curran, L., and Nobre, C. Tropical
deforestation and the Kyoto Protocol: an editorial essay. Climatic Change 71, 267-276
(2005).
Schneider, E. K., Fan, M; Kirtman, B. P. and Dirmeyer, P. Potential effects of Amazon
deforestation on tropical climate. Cola Technical Report 226, 1-41 (2006).
Sedjo, R.A., B. Sohngen. Carbon credits for avoided deforestation. Washington, D.C, Resources
for the Future (2007)
Silva-Chavez, G. and Petsonk, A. Rainforest credits. Carbon Finance 6, 18 (2006).
Skutsch, M., Bird, N., Trines, E., Dutschke, M., Frumhoff, P., de Jong, B. H. J., van Laake, P.,
Masera, O., and Murdiyarso, D. Clearing the way for reducing emissions from tropical
deforestation. Environmental Science and Policy 10, 322-334 (2007).
Soares-Filho, B. S., Pennachin, C. L., Cerqueira, G. DINAMICA – a stochastic cellular automata
model designed to simulate the landscape dynamics in an Amazonian colonization frontier.
Ecological Modelling 154, 217-235 (2002).
Soares-Filho, B. S., Corradi, L., Cerqueira, Araújo, W. Simulating the spatial patterns of change
through the use of the dinamica model. In Simpósio Brasileiro de Sensoriamento Remoto,
11, 2003, BH, INPE, 721-728 (2003).
Soares-Filho, B. S., Alencar, A., Nepstad, D., Cerqueira, G., Vera-Diaz, M., Rivero, S.,
Solórzano, L. and Voll, E. Simulating the response of land-cover changes to road paving
and governance along a major Amazon highway: the Santarém-Cuiabá corridor. Global
Change Biology 10, 745-764 (2004).
Soares-Filho, B. S., Nepstad, D, Curran, L.,Voll, E., Cerqueira, G., Garcia, R. A., Ramos, C. A.,
Mcdonald, A, Lefebvre, P. and Schlesinger, P. Modeling Conservation in the Amazon
Basin. Nature 440, 520-523 (2006).
Soares-Filho, B.S., Garcia, R. A., Rodrigues, H., Moro, S. and Nepstad, D. Nexos entre as
dimensões socioeconômicas e o desmatamento: A caminho de um modelo integrado. In
Amazônia. Natureza e Sociedade em Transformação. (eds Batistella, M., Alves, D. and
Moran, E.) (Edusp, São Paulo, 2008).
Teixeira, A. M., Soares-Filho, B.S., Freitas, S. and Metzger, J.P.W. Modeling Landscape
dynamics in the Atlantic Rainforest domain: Implications for conservation. Forest Ecology
and Management 257, 1219–1230 (2009).
139