Title: Modelagem din
1Modelagem dinâmica espacialmente-explicíta em
TerraME
- Dr. Tiago Garcia de Senna Carneiro
- TerraLAB - Laboratório INPE/UFOP para Simulação
e Modelagem dos Sistemas Terrestres - Fevereiro de 2010
2Introdução ao TerraME
- modelos dinâmicos espacialmente-explicito
3Ambiente de Modelagem TerraME
4TerraME Arquitetura de Software
RondôniaModel
dynamicaModel
RICKSModel
CLUEModel
TerraML Language
TerraMLCompiler
TerraML Virtual Machine
TerraLib
5Integração com SIG
6Plugin FillCell para TerraView 3.2.0
7Motivação homogenização de dados em formatos
distintos
8Instale o plugin FillCelle crie Espaços
Celulares Regulares
- Instalação do plugin FillCell copie o arquivo
celulas.dll para o diretorio c\Arquivos de
Programas\TerraView3.2.0\plugins. - Crie a grade de células na resolução desejada
9Preencha os atributos das células
- Escolha os dados de entrada
- Escolha o dado de saída
10Estratégias de preenchimento disponiveis no
plugin FillCell
11PRATICA Criando Espaço Celulares Regulares em
TerraView 3.2.0
- Parque Nacional das Emas, GO, Brasil
12Aquisição dados emTerraView 3.2.0
- Crie o banco de dados bdEmas
- Importe os dados contidos no diretório Dados
Geograficos, usando o sistema de coordenadas UTM
para a zona 22 e datum SAD69 - Shape files Limite_pol.shp, Aceiros_lin.shp,
Drenagem_lin.shp - Imagens GeoTIFF Nov94-Mai00.tif
- Crie uma vista chamada dados entrada
- Nesta vista crie um tema para cada plano de
informação importado.
drenagem
acumulo
limite
aceiro
13Crie Espaço Celulares Regulares em TerraView 3.2.0
- Crie um espaço celular regular de resolução igual
a 1000 x 1000. - Crie um tema para o espaço celular recém criado.
- Preencha os atributos das células usando o
plugin fillCell. - rio a partir de drenagem ? estratégia presença
- aceiro a partir de aceiros ? estratégia presença
- acumlo a partir de imagem classificada ?
estratégia classe majoritária, default 0 - Crie o atributo foco 0 ?inerte, 1? queimando
- Gere uma legenda usando o atributo acumulo e o
operador valor único
14O Espaço Geográfico em TerraME
15Espaços Celulares Irregulares
Espaços Celulares Irregulares (1) células
quadradas de 25 X 25 km2 (2) Cada polígono
representando um estado brasileiro é uma célula
(3) Cada rodovia é uma célula
16Motivação Modelagem Multi-escala
- Desvantagens dos Espaços Celulares Regulares
- Escolha de uma resolução
- Efeitos de borda
- Agregação de atributos as células, dependendo da
resolução - Falta de abstração para representar objetos em
movimento ou redes geográficas.
17Multi-escala um estudo de caso
- O uso de múltiplas representações computacionais
do espaço para o desenvolvimento de um modelo de
desflorestamento da Amazônia Brasileira em
multiplas escalas. - Banco de dados amazônia.mdb contém
- Plano de informação 1 Estados brasileiros que
compõem a Amazônia Legal (polígonos)? - Plano de informação 2 Rodovias brasileiras
(linhas)? - Plano de informação 3 uma grade esparsa de
células (células quadradas de 25x25m2)?
18Multi-escala um estudo de caso
- 2 Submodelos (2 escalas diferentes)
- Modelo de demanda ? controla a quantidade de
mudanças (questão Quanto?). Utiliza 2 espaços
celulares - Estados brasileiros que compõem a Amazônia Legal
- Rodovias brasileiras que estão localizadas nos
estados da Amazônia Legal - Modelo de alocação ? determina onde ocorrerão as
mudanças (questão Onde?). - Utiliza o espaço celular composto por uma grade
esparsa de células.
19Multi-escala um estudo de caso
- Resultados do modelo de desflorestamento.
20Multi-escala um estudo de caso
- Resultados do modelo de pavimentação
21Carregamento de dados em TerraME
- -- Loads the TerraLib cellular space
- csAmazonia CellularSpace
-
- database "Amazonia",
- theme "cells",
-
- csAmazoniaload()
- csAmazonialoadNeighbourhood(GPM_Amazônia")
22Como declarar espaços celulares persistentes
- myCellSpace CellularSpace
- dbType "MySQL",
- host "localhost",
- database "CabecaDeBoi ",
- user "",
- password "",
- layer "cells90x90",
- theme "cells",
- select height", capInf" ,
- where "mask ltgt noData
-
23Como criar espaços celulares voláteis
- myCellSpace CellularSpace database "", theme
" - for i 1, 2, 1 do
- for j 1, 2, 1 do
- c Cell soilType latosolo
- c.x i
- c.y j
- myCellSpace add( c )
- end
- end
24Gerenciamento do Banco de Dados Geográfico
- -- Load cellular space from TerraLib database
- myCellSpaceload()
- -- Save cellular spaces to TerraLib database
- myCellSpacesave( time, themeName", cover,
soilType) - -- or
- myCellSpacesave( time, themeName", )
25Referenciando células
- -- c is the seventh cell in the cellular space
- c myCellSpace.cells 7
- -- updating the attribute infcap from the
seventh - -- cell
- c.infcap 0
- myCellSpace.cells7.infCap 0
26Acessando os atributos das células
- -- regra para regenerar a floresta
- if( cell.cover "abandoned" and cell.latency gt
10 ) then - cell.cover "secFor"
- end
- -- regra para simular a chuva
- -- LEIA NO PASSADO e ESCREVA NO PRESENTE
- cell.water cell.past.water 2
- A cell value has two special attributes latency
and past. - The latency attribute registers the period of
time since the last change in a cell attribute
value. - The past attribute is a copy of all cell
attribute values in the instant of the last
change.
27Como percorrer um espaço celular
- -- regra para simular a chuva em uma região
- ForEachCell(
- myCellSpace,
- function(i,cell)
- cell.soilWater cell.past.soilWater 2
- return true
- end
- )
- ForEachCell(cs, function(i, cell)...end)
28Trajetórias das mudanças imprimindo padrões
espaciais
- Iteradores Espaciais são funções definidas pelo
modelador que mapeiam indices (atributos) dos
objetos geográficos em referências a eles.
it Trajectory myCellSpace, function(cell)
return cell.cover "forest" end, function(
c1, c2 ) return c1.dist_roads lt
c2.dist_roads end
it Trajectory myCellSpace, function(cell)
return cell.cover "forest" end, function(
c1, c2 ) return c1.dist_urban lt
c2.dist_urban end
29Como percorrer um espaço celular
- -- regra para simular a chuva em uma subregião
- ForEachCell(
- myTrajectory,
- function(i,cell)
- cell.soilWater cell.past.soilWater 2
- return true
- end
- )
- ForEachCell( myTrajectory, function(i,
cell)...end)
myTrajectory Trajectory myCellSpace, functi
on(cell) return cell.estado
Pará end, function( c1, c2 ) return
(c1.altimetria) lt (c2.altimetria) end
30Demo 3 Desflorestamento na Amazônia
- Banco de dados c\\TerraME\\Database\\amazonia.md
b - Modelo c\\TerraME\\Modelos\\demo3_desflorestamen
to_save.lua
31Vizinhança em Espaços Celulares
Von Neumann Neighborhood
Moore Neighborhood
32Distâncias no Espaço Próximo
Which objects are NEAR each other?
33Quais objetos são mais proximos?
Which objects are NEAR each other?
34Using Generalized Proximity Matrices (GPM)
Consolidated area
Emergent area
35Vizinanças TerraME são redes (grafos ponderados)
Euclidean space
Open network
Closed network
Aguiar et al., 2003
36Crie ou carregue vizinhaças
- -- Create a Moore neighborhood
- CreateMooreNeighborhood( myCellSpace, neighName
) - -- Create a 3x3 neighborhood
- Create3x3Neighborhood(myCellSpace, filterF() ,
weightF(), name ) - -- Create a MxN neighborhood
- CreateMxNNeighborhood( M, N, myCellSpace,filterF()
, weightF(), name ) - -- Load neighborhood from TerraLib database
- myCellSpace loadTerraLibGPM(myGPM")
- -- Load neighborhood from TerraLib GAL files
- myCellSpaceloadGALNeighborhood("c\\myNeigh.gal")
37Crie vizinhaças entre espaços celulares
- SpatialCouppling( M, N, cs1,cs2, filterF,
weightF, name ) - filterF(cell, neigh) ? Boolean
- wheighF(cell, neigh) ? Real
38Exemplo vizinhança para simular drenagem da água
da chuva
- -- Creates a 3x3 Neighborhood based on the cell
"slope" - -- only lower neighbors are considered
- -- Creates a 3x3 Neighborhood based on the cell
"slope" - Create3x3Neighborhood(
- csQ,
- function(cell,neigh)
- return neigh.altimetria lt cell.altimetria
- end,
- function(cell, neigh)
- return (cell.altimetria - neigh.altimetria)/
- (cell.altimetria neigh.altimetria)
- end,
- "slope"
- )
39Como percorrer uma vizinhança
- ForEachNeighbor(
- myCell,
- function( cell, neigh, weight)
- print( weight )
- return true
- end,
- myNeigh
- )
- ForEachNeighbor(cell, function(), index)
40Como percorrer vizinhanças do espaço
- ForEachCell(
- myCellSpace,
- function(i, cell)
- ForEachNeighbor(
- cell,
- function( cell, neigh, weight )
- -- insert the code
- end,
- índex
- )
- end
- )
41Gravando espaços celulares regulares de TerraLib
como imagens
- -- atributo utilizado para gerar a figura
- attr_name "estado"
- -- valores que o atributo pode assumir
- attr_value 0,1,2
- -- paleta de cores
- attr_color 0,255,0,255,0,0,0,0,0
- -- diretorio onde as imagens serao salvas
- path "c\\TerraME\\Results
- -- tamanho da celula na imagem (em pixels)
- cellSize 2
- .........................
- -- carrega o espaco celular do banco de dados
TerraLib - myCellSpace LoadCellularSpace("ADO","localhost",
"c\\db_teoria.mdb, layerName",themeName","Co
l","Lin","estado") - .........................
- for t 1, 100 do
- .............
- CStoPNG(myCellSpace ,attr_name,t,path,cellSize,at
tr_value,attr_color) - end
42Demo 5 Propagação de Fogo
- Banco de dados c\\TerraME\\Database\\db_teoria.m
db - Modelo c\\TerraME\\Modelos\\demo5_SimpleFireSpre
adModel.lua.lua
CA 1 CA 2 CA 3 CA 4 CA 5
CA 1 0.100 0.250 0.261 0.273 0.285
CA 2 0.113 0.253 0.264 0.276 0.288
CA 3 0.116 0.256 0.267 0.279 0.291
CA 4 0.119 0.259 0.270 0.282 0.294
CA 5 0.122 0.262 0.273 0.285 0.297
-- estado do celula inerte 0 queimando
1 queimado 2
43Demo 6 Propagação de Fogo
- Banco de dados c\\TerraME\\Database\\db_emas.mdb
- Modelo c\\TerraME\\Modelos\\demo6_FireSpreadMode
l.lua
CA 1 CA 2 CA 3 CA 4 CA 5
CA 1 0.100 0.250 0.261 0.273 0.285
CA 2 0.113 0.253 0.264 0.276 0.288
CA 3 0.116 0.256 0.267 0.279 0.291
CA 4 0.119 0.259 0.270 0.282 0.294
CA 5 0.122 0.262 0.273 0.285 0.297
44Neighborhood based rules Time
Ver demo18 antes e seus resultados
Rule if ( all neighbors 1 ) then 0
General rule form cell.soilWater cell.
soilWater 2
cell.soilWater cell.past.soilWater 2
one copy of the cellular space
OK
OK
past
2º step
1º step
present
45Runtime Rule Activity
Ver demo18 antes
rule
count 0
ForEachCell(myCellSpace, function(cell) end)
if ( cell.past.cover forest ) then
cell.cover deforested count count 1
end
?
myCellSpacesynchronize( )
print(Number of deforested cells .. count)
46Time Synchronization Schemes
Ver demo 20 antes
Sequential Processes rules1() synchronise() rul
es2() synchronise()
Parallel Processes rules1() rules2() synchronis
e()
47Nested-CA Model of Computation
Agent or Automaton
Space function is non-homogeneous
48TerraME automata
49TerraME Synchronization Schemes
50Demo 4 e 7 Rain Drenage Model
- Banco de dados c\\TerraME\\Database\\CabecadeBoi
.mdb - Modelo c\\TerraME\\Modelos\\demo4_chuva_geoBD.lu
a - Modelo c\\TerraME\\Modelos\\demo7_chuva_geoBD.lu
a
51O tempo em TerraME
- escalonadores de evento discreto
52Relógios são escalonadores de eventos discretos
(DEVS)
53Timers, Events and Messages
Event time 1985, period 1, priority -1
clock Timer Pair Event ... , Message
... , Pair Event ... , Message ...
, ... Pair Event ... , Message ...
- Message
- function( event )
- print( eventgetTime() )
- rainexecute( event )
- print("Rained")
- return false
- end
54Demo 8 Multiplas Resoluções Temporais
- clock Timer
- Pair
- Event time 0, period 1 ,
- Message function(event) print(eventgetTime(),
"SOL") end - ,
- Pair
- Event time 2, period 0.5 ,
- Message function(event) print(eventgetTime(),
"CHUVA") end - ,
- Pair
- Event time 0, period 2 ,
- Message function(event) print(eventgetTime(),
"DESMATAMENTO") end -
-
- clockexecute(10)
55Demos em TerraME
- Explicit space representation demos 14 to 16
- Geographic database integration demos 17 to 20
56Obrigado
- Perguntas?
- Mais informações em
- www.terralab.ufop.br
- www.terrame.org