Enviromental Modelling
Introduction to TerraME
Tiago Garcia de Senna Carneiro
(UFOP)
Gilberto Câmara (INPE)
Dynamic Spatial Models
f (It)
f (It+1)
F
f (It+2)
f ( It+n )
F
..
“A dynamical spatial model is a computational
representation of a real-world process where a location
on the earth’s surface changes in response to variations
on external and internal dynamics on the landscape”
(Peter Burrough)
Dynamic Spatial Models
Forecast
tp - 20
tp - 10
tp
Calibration
Source: Cláudia Almeida
Calibration
tp + 10
Spatial dynamical models have a common
structure
1980
1990
How much?
2000
t+1
load
When?
Where?
t ≥ tf
GIS
CLUE
Model
play
idle
How?
What is a spatial dynamical model?

A closed microworld with
 Spatial and temporal structure
 Entities
 Rules of behaviour
What is
changing?
When?
Where?
Why?
Computational Modelling with Cell
Spaces
Cell Spaces
Hybrid automata
Event
Control
Mode A
Control
Jump
Mode B
Flow
Flow
Condition
Condition
Generalized Proximity Matrix
Database support
Cell Spaces
Cellular Data Base Resolution
2500 m
2.500 m e 500 m
Software: Open source GIS
Visualization (TerraView)
Modelling (TerraME)
Spatio-temporal
Database (TerraLib)
Statistics (R interface)
Data Mining(GeoDMA)
TerraME architecture
RondôniaModel
DinamicaModel
TROLLModel
CLUEModel
TerraME Language
TerraME Compiler
TerraME Virtual Machine
TerraLib Enviromental
Modeling Framework
C++ Signal
Processing
librarys
TerraLib
C++
Mathematical
librarys
C++
Statistical
librarys
TerraME functionality
TerraME INTERPRETER
• model syntax semantic checking
• model execution
TerraView
• data acquisition
• data visualization
• data management
• data analysis
LUA interpreter
TerraME framework
data
model
model
TerraME/LUA interface
MODEL DATA
Model
source code
TerraLib
database
data
Eclipse & LUA plugin
• model description
• model highlight syntax
Enviromental Modelling
Introduction to LUA
Tiago Garcia de Senna Carneiro
(UFOP)
Gilberto Câmara (INPE)
Por que Lua?





Pequena
Portátil
Eficiente
Fácil integração com C/C++
Simples e flexível
 Sintaxe simples
 Facilidades para descrição de dados
 Mecanismos de extensão
 “Simple things simple, complex things possible”
Como é Lua?
Sintaxe convencional
function fat (n)
if n == 0 then
return 1
else
return n*fat(n-1)
end
end
Unidade básica de execução: chunk
 Chunk = lista de comandos
 Arquivo ou string do programa hospedeiro
Tipos

Tipos associados a valores
 Variáveis armazenam qualquer tipo
 Polimorfismo natural

Tipos existentes
 nil
 boolean
 number
 string
 table
 function
 userdata
 thread
Tipo nil

Propósito maior: ser diferente dos demais

Tipo do valor default das variáveis

Também significa o falso booleano
 Qualquer valor de outro tipo significa verdadeiro

Com exceção de false
Tipo boolean

Valor booleano
 Falso (false) ou verdadeiro (true)
 if
(choveu == true) then ....
Tipo number

Único tipo nativo para valores numéricos
 double (por default)
local a = 3
local b = 3.5
local c = 4.5e-8
Tipo userdata

Armazena um ponteiro void* de C

Tipo opaco para a linguagem
 Somente atribuição e teste de igualdade

Linguagem extensível em C
 “Esqueleto” para construção de linguagens de domínio
específico
Tipo string


Valores imutáveis
Sem limite de tamanho
 É comum ler arquivo completo em uma string

Strings não usam ‘\0’ para terminação
 Podem armazenar dados binários quaisquer

Pattern-matching poderoso
 Implementado via biblioteca padrão
 meunome
= “Silvana Amaral”;
Tipo table

Resultado da expressão {}

Arrays associativos
 Qualquer valor como chave
 Com

exceção de nil
Único mecanismo de estruturação de dados
 São para Lua o que listas são para Lisp
Tables

The only structured data type is table.
 implements associative arrays, that is, arrays that can be
indexed not only with integers, but with string, double,
table, or function values.
 For table indexing, both table.name and table[''name''] are
acceptable. Tables can be used to implement records,
arrays, and recursive data types.
Tipo Table
loc = {
cover = "forest",
distUrban = 2 };
Campo
cover
distRoad
distUrban
distRoad
=
Valor
“forest”
0.3
2
0.3,
Tipo Table
loc = {
cover = "forest",
distRoad = 0.3,
distUrban = 2 };
loc.cover = “cerrado”;
loc[“cover”] = “soja”;
if (loc.distUrban > 1.5) then
loc.desfPot
=
loc.distRoad
loc.distUrban;
+
Tables and functions in Lua
loc = { cover = "forest", distRoad =
0.3, distUrban = 2 };
...
loc.reset = function( self )
self.cover = "";
self.distRoad = 0.0;
self.distUrban = 0.0;
end
loc = { cover = "forest", distRoad =
0.3, distUrban = 2, reset };
Data structures with tables


Simple and efficient implementation
Records

Syntactic sugar t.x for t["x"]:
t = {}
t.x = 10
t.y = 20
print(t.x, t.y)
print(t["x"], t["y"])
Data structures with tables (2)

Arrays
for i=1,n do print(a[i]) end
 Use integers as indexes

Sets
 Use elements as indexes
t = {}
t[x] = 1
-- t = t  {x}
if t[x] then... -- x  t?

“Bags"
 Elements as indexes, counters as values
Data structures with tables (3)

Listas
 Tables in Lua are “objects”, that is, dynamically allocated
“things” manipulated through pointers to them.
 Tables in Lua can directly represent dynamic structures
such as trees and graphs, even cyclic structures.
list = {value=v, next=list}
list
old list
...
value - v
next -
Library functions for tables



table.insert
 Inserts a new element
table.remove
 Removes an element
table.sort
 Orders the elements
My first Lua program
C = 2; -- rain/t
-- defines a location with an absortion
capacity and makes it rain
solo = { acum = 0, k = 0.4; }
for time = 0, 20, 1 do
solo.acum = solo.acum + C –
solo.k*solo.acum;
end
Type function
Funções are first-class values
function inc (x)
return x+1
end
sugar
inc = function (x)
return x+1
end
Functions can be assigned to table fields
w = {
redraw = function () ... end,
pick = function (x,y) ... end,
}
if w.pick(x,y) then
w.redraw()
end
Type function (2)
Passagem por valor e retorno múltiplo
Suporte a atribuições múltiplas (x,y = y,x)
a, b = f()
print(f())
function f()
return 1,2
end
Suporte a número variável de argumentos
 Argumentos
"empacotados" em uma tabela
function f(...)
print(arg[1], arg[2])
end
Lexical scope


Acesso a variáveis em escopos externos
Expressão cujo valor é calculado quando a função
que a contém é criada
 Quando o fecho é feito
function add (x)
return function (y)
return y+x
end
end
add1 = add(1)
print(add1(10)) --> 11
upvalue
Constructors
Data description + imperative semantics
article{
author="F.P.Brooks",
title="The Mythical Man-Month",
year=1975
}
temp = {}
temp["author"] = "F.P.Brooks"
temp["title"] = "The Mythical Man-Month"
temp["year"] = 1975
article(temp)
Objects

Funções 1a classe + tabelas = quase OO
 Tabelas podem ter funções como campos

Sugar para definição e chamada de métodos
 Trata parâmetro implícito self
 Ainda falta herança...
function a:foo (x)
...
end
sugar
a.foo = function (self,x)
...
end
a:foo(x)
sugar
a.foo(a,x)
Exemplo: tipo Point
-- Metatable de Point
local Point_metatable = {
__add = function (p1,p2)
return Point(p1.x+p2.x,p1.y+p2.y,p1.z+p2.z}
end
}
-- Construtor
function Point (self)
self.x = tonumber(self.x) or 0.0
self.y = tonumber(self.y) or 0.0
self.z = tonumber(self.z) or 0.0
setmetatable(self,Point_metatable)
return self
end
----------------------------------------------local p = Point{x=3.0,y=1.3,z=3.2}
local q = Point{x=4.2,y=1.0}
local r = p+q
-- {7.2, 2.3, 3.2}
Herança Simples: mecanismo de delegação
-- Métodos
local Point_methods = {
Print = function (self)
print(self.x, self.y, self.z)
end,
...
}
-- Metatable
local Point_metatable = {
__index = Point_methods,
__add = function (p1,p2)
return Point(p1.x+p2.x,p1.y+p2.y,p1.z+p2.z}
end
}
-----------------------------------------------local p = Point{x=3.0,y=1.3,z=3.2}
local q = Point{x=4.2,y=1.0}
local r = p+q
r:Print()
Bibliotecas padrão








Basic
String
Table
Math
IO
OS
Debug
Coroutine
Basic

Oferecem funções básicas
 print
 type
 setmetatable
 pairs
String

Funções para manipulação de strings
 Casamento de padrões (pattern matching)

string.find


Permite buscar a ocorrência de um padrão numa string
string.gsub

Permite substituir ocorrâncias de um padrão por uma sequência de caracteres
dentro de uma string
Meu segundo programa em Lua
C = 2; -- rain/t
K = 0.4; -- flow coefficient
q = 0; -function chuva (t)
if (t < 10) then
return 4 – 4*math.cos(math.pi*t/10);
else
return 4 – 4*math.cos(math.pi*(t-10)/10);
end
end
-for time = 0, 20, 1 do
-- soil water
q = q + chuva(time) - K*q;
end
-- report
print(“q = "..q);
Defining a model in TerraME
Part 1: The cell space
Computational Modelling with Cell
Spaces
Cell Spaces

fonte: Carneiro (2006)
Components

Cell Spaces

Generalizes Proximity Matriz – GPM

Hybrid Automata model

Nested enviroment
Basic concepts
A dynamical model…
is represented as a cell space environment…
… where automata rules change the space properties in
time.
Several agents can share the same environment.
The TerraME spatial model
GIS
The
space local
properties,
and connectivity can be modeled by:
A cell-space
where
each cellconstraints,
a unique neighborhood
-a
spatial
a lattice of
cells
Space
is structure:
nether isomorphic
nor
structurally homogeneous. (Couclelis 1997)
- Actions
a distancedata:
are considered.
(Takeyana
1997), (O’Sullivan 1999)
a set of at
geographic
each cell has various
attributes
TerraME extensions to Lua

To build spatial dynamic models, TerraME includes
new value types in LUA using the constructor
mechanism.

These values are: CellularSpace, Cell, Neighbourhood
Cellular Space

A CellularSpace is a multivalued set of Cells.

It consists of a geographical area of interest, divided
into a regular grid.

Each cell in the grid has one or more attributes.

CellularSpaces are stored and retrieved from a
TerraLib database, so the modeller should specify
the properties of the CellularSpace
Constructors in Lua

LUA has a powerful syntactical tool, called
constructor.

When the modeller writes name{…}, the LUA
interpreter replaces it by name({… }), passing the
table {…} as a parameter to the function name( ).

This function typically initializes, checks properties
values and adds auxiliary data structure or methods.
Loading Data
-- Loads the TerraLib cellular space
csQ = CellularSpace
{
dbType = "ADO",
GIS
host = “localhost",
database = "c:\\TerraME\\Database\\CabecaDeBoi.mdb",
user = "",
password = "",
layer = "cellsLobo90x90",
theme = "cells",
select = { "altimetria", “soilWater", “infCap" }
}
csQ:load();
createMooreNeighborhood(csQ);
csCabecaDeBoi:loadNeighborhood(“Moore_SerraDoLobo1985");
Database management
-- loads a cellular space
csAmazonia:load();
csAmazonia:createMooreNeighborhood();
-csAmazonia:loadNeighborhood
(“GPM”);
…
-save
(time,
attrTableName) -for time = 1, 10,1 do
themeName,
Referencing cells
A CellularSpace has a special attribute called cells. It is
a one-dimensional table of references for each Cell
in the CellularSpace
-- c is the seventh cell in the
cellular space
c = csCabecaDeBoi.cells[ 7 ];
-- Updating the attribute “infcap”
from the seventh cell
c.infcap = 10;
print
(csCabecaDeBoi.cells[7].infCap);
The Cell type
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.
if(cell.cover
==
"abandoned"
and
cell.latency
>=
10
)
then
cell.cover = "secFor"; end
cell.water = cell.past.water + 2;
Traversing a Cell Space

ForEachCell(cs, function())

Applies the chosen function to each cell of the
cellular space. This function enables using different
rules in a cellular space.
ForEachCell(csQ, function(i, cell)
cell.water = cell.past.water + 2;
return true; end);
Traversing a Neighbourhood
ForEachCell(csQ,
function(i, cell)
count = 0;
ForEachNeighbor(cell, 0,
function(cell, neigh)
if (neigh ~= cell) then
count = count + 1;
end -- if
end
); -- for each neighbor
cell.value = count;
….
end); --
Isotropic neighbourhoods in cell spaces
Von Neumann
Neighborhood
Moore Neighborhood
Generalized Proximity Matrix (GPM)


In a cell-space, each cell has a different
neighbourhood
Defined by a NxN matrix
 w11 w12

w 21 w 22
W  
 w 31 w 32

 w 41 w 42
w13
w 23
w 33
w 43
w14 

w 24

w 34 

w 44 
One simple example



Consider a 5x 5 cell-space
For each cell, a different matrix
The neighbours of a cell (the (2,3) cell are):
0
0
1
1
0
0
0
*
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
0
0
Using Generalized Proximity Matrices
Consolidated area
Emergent area
Synchronization
Leia sempre do antigo (“past”)
Escreva sempre no novo (“present”)
Sincronize no final
Syncronization
fonte: Carneiro (2006)
tn
tn+1
rule
count = 0 ;
ForEachCell ( csValeDoAnary )
Function (I, cell)
if ( cell.past.cover == “forest” ) then
cell.cover = “deforested”;
count = count + 1 ;
end
end
cell.synchronize( );
?
print(“Number of deforested cells: ”.. count);
TerraME basics: some
simple examples
An Example: The Majority Model for
Segregation

Start with a CA with “white” and “black” cells
(random)

The new cell state is the state of the majority of the
cell’s Moore neighbours, or the cell’s previous state if
the neighbours are equally divided between “white”
and “black”
 White cells change to black if there are five or more black
neighbours
 Black cells change to white if there are five or more black
neighbours

What is the result after 50 iterations?
The Modified Majority Model for
Segregation



Include random individual variation
Some individuals are more susceptible to their
neighbours than others
In general, white cells with five neighbours change to
black, but:
 Some “white” cells change to black if there are only four
“black” neighbours
 Some “white” cells change to black only if there are six
“black” neighbours

Variation of individual difference

What happens in this case after 50 iterations and
500 iterations?
Key property of cellular spaces:
potential
POTENTIAL
What is the potential of a cell?

Potential refers to the capacity for change

Higher potential means higher chance of change

How can we compute potential?
People
Potential
Nature
Different models for calculating
potential

Brian Arthur’s model of increasing returns

Vicsek-Salay model: structure from randomness

Schelling’’s model: segregation as self-organization
The Brian Arthur model of increasing
returns


Create a cell space and fill it with random values
For example, take a 30 x 30 cell space and populate
with random values (1..1000)
The Brian Arthur model of increasing
returns

Think of this cellular space as the starting point for a
population
What happens if the rich get richer?

This model is called “increasing returns”

 This effect is well-known in the software industry
 Customer may become dependent on proprietary data
formats
 High switching costs might prevent the change to another
product
 Examples: QWERTY keyboard, and Microsoft Windows

Arthur, B. (1994). “Increasing Returns and Path
The Brian Arthur model of
increasing returns

Consider a situation where the potential grows
with a return factor  ( is a scale factor)
Pi ( t  1)   Pi ( t )




O <  < 1 - decreasing returns (increased
competition)
 = 1 – linear growth
 > 1 – increasing returns (rich get richer)
The Brian Arthur model of increasing
returns

Take the random 30 x 30 cell space and apply the
increasing returns model  = 2 – What happens?
The Vicsek-Szaly Model: Structure from Randomness

Consider a CA with a 4 x 4
neighbourhood

Establish a random initial
distribution
Pi ( 0 )   i ( noise )
 Historical
accident that set the
process in motion
 P (t )
j

Pure averaging model
Pi ( t  1) 
j 
j
5
TerraME: defining a model
Model implementation in TerraME
Each Land Unit is an environment, nested in the Rondônia environment.
Global rate
G
+
Rsmall
+
Rlarge
+
Asmall
Land Unit1
Land Unit2
...
+
...
Rondônia
+
Rsmall
Alarge
...
+
Asmall
Land Unitn
Legend
Environment
Agent
(two types of agentes Rsmall and R large)
(two types of agentes Asmall and A large)
TerraME rules of behaviour
How can we define rules of behaviour?
theory-driven models
modelling
theor
y
2
model
input
results
laws
tn
tn+1
1
data-driven models
stats inference
input
analysis
1
modelling
model
2
results
tn
tn+1
Types of models

Theory-driven models
 General laws and rules
 Can deal with non-stationary phenomena

Data-driven models
 Rules derived from statistical inference
 Case-specific
 Stationary phenomena
Models of Computation
(von Neumann, 1966)
(Wooldbridge, 1995)
(Minsky, 1967)
(Pedrosa et al, 2003)
(Aguiar et al, 2004)
(Straatman et al, 2001)
(Rosenschein and Kaelbling, 1995)
Agent based models
Cellular automata models
Which Cellular Automata?

For realistic geographical models
 the basic CA principles too constrained to be useful

Extending the basic CA paradigm
 From binary (active/inactive) values to a set of
inhomogeneous local states
 From discrete to continuous values (30% cultivated land,
40% grassland and 30% forest)
 Transition rules: diverse combinations
 Neighborhood definitions from a stationary 8-cell to
generalized neighbourhood
 From system closure to external events to external output
during transitions
Spatial dynamic modeling
Demands
Requirements

Locations change due to
external forces

discretization of space in cells

Realistic representation of
landscape

generalization of CA

Elements of dynamic models

discrete and continous processes

Geographical space is
inhomogeneous

Flexible neighborhood definitions
Extensibility to include userdefined models

Different types of models

Hybrid Automata

Formalism developed by Tom Henzinger
(UC Berkeley)
 Applied to
embedded systems, robotics, process control,
and biological systems

Hybrid automaton
 Combines discrete transition graphs with continous
dynamical systems
 Infinite-state transition system
Traditional Cellular Automata

Discrete state transition system (e.g, Life)
 At each step in time, the following effects occur:
 Any live cell with fewer than two neighbors dies, as if by
loneliness.
 Any live cell with more than three neighbors dies, as if by
overcrowding.
 Any live cell with two or three neighbors lives, unchanged,
to the next generation.
 Any dead cell with exactly three neighbors comes to life.
2-3 neighbours
0,1 or 4+ neighbours
Alive
Dead
3 neighbours




Hybrid Automata
Variables
Control graph
Flow and Jump conditions
Events
Event
Event
Jump condition
Control Mode A
Control Mode B
Flow Condition
Flow Condition
Modelo Hidrológico Simples
A water balance Automata
input
input
DRY
soilwater=soilwater+pre-evap
soilwater>=infilcp
input
WET
Surplus=soilwater-infilcp
Soilwater=infilcp
discharge
TRANSPORTING
MOVE(LDD, surplus, infilcp)
Surplus>0
Control Mode
Flow Condition
Jump Condition
Event
Transition
DRY
Solwat=solwat+pre-evap
Solwat>=infcap
WET
Surplus=soilwater-infilcap
Surplus>0
discharge
TRANSP
TRANSP
MOVE(LDD,surplus, infilcap)
Surplus>0
input
DRY
WET
Agents and CA: Humans as ants
Identify different actors and try to model their
actions
Farms
Settlements
10 to 20 anos
Recent
Settlements
(less than 4
years)
Source: Escada, 2003
Old
Settlements
(more than
20 years)
Model hypothesis:

Actors and patterns
Occupation processes are different for Small and
Medium/Large farms.
62o 30’ W


62o W
oS
9Rate
of change is not distributed uniformly9oin
S
space and time: rate in each land unit is influenced
by settlement age and parcel size; for small farms,
rate of change in the first years is also influenced by
installation credit received.
Location of change: For small farms, deforestation
9o 30’ S
has a concentrated pattern that spreads along roads.
For large farmers, the pattern is not so clear.
9o 30’ S
10o S
10o S
10o 30’ S
10o 30’ S
Large farms
62o 30’ W
Medium farms
Urban areas
Small farms
Reserves
0
62o W
50
Km
Model overview
Deforestation Rate Distribution from 1985 to
2000 - Land Units Level:

Large/Medium Rate Distribution sub-model

Small Farms Distribution sub-model
Allocation of changes - Cellular space
level:

Large/Medium allocation sub-model

Small allocation sub-model
Global study
area rate
in time
Land unit 1 rate t
Land unit 2 rate t
Large farms
Medium farms
Urban areas
Small farms
Reserves
2.500 m (large
and
medium)
500 m (small)
Deforestation Rate Distribution Module
Small Units Agent
latency
> 6 years
Deforesting
Newly implanted
Deforestation >
80%
Year of
creation
Slowing down
Iddle
Factors affecting rate:


Deforestation =
100%


Large and Medium Units Agent
Deforesting
Deforestation >
80%
Year of
creation
Slowing down
Iddle
Deforestation =
100%
Global rate
Relation properties density speedy of change
Year of creation
Credit in the first years (small)
Allocation Module: different factors and
rules
Factors affecting location of changes:
Small Farmers (500 m resolution):
 Connection to opened areas
through roads network
 Proximity to urban areas
Medium/Large Farmers (2500 m
resolution):
 Connection to opened areas
through roads network
 Connection to opened areas in
the same line of ownerships
Allocation Module: different resolution, variables and neighborhoods
1985
Small farms environments:
500 m resolution
Categorical variable:
deforested or forest
One neighborhood relation:
•connection through roads
Large farm environments:
2500 m resolution
1997
Continuous variable:
% deforested
Two alternative neighborhood
relations:
•connection through roads
• farm limits proximity
1997
Model implementation in TerraME
Each Land Unit is a scale, nested in the Rondônia scale.
Global rate
G
+
Rsmall
+
Rlarge
+
Asmall
Land Unit1
Land Unit2
...
+
...
Rondônia
+
Rsmall
Alarge
...
+
Asmall
Land Unitn
Legend
Environment
Agent
(two types of agents Rsmall and R large)
(two types of agents Asmall and A large)
Defining a model – part 3:
TerraME temporal model
Asynchronous Processes
Multiple Temporal Resolutions
The TerraME Timer
1. Get first pair
2. Execute the ACTION
3. Timer =EVENT
1.
1:32:00
Mens. 1
Execute an agent over the cellular space regions
2.
1:32:10
Mens. 3
Save the spatial data
3.
1:38:07
Mens. 2
Draw cellular spaces and agents states
4.
1:42:00
Mens.4
Carrie out the comunication between agents
...
return value
true
4. timeToHappen += period
TerraME Timer Object
Neighborhood based rules & Time
Rule:
General rule form:
cell.soilWater= cell. soilWater + 2;
if ( all neighbors = 1 ) then 0
Temporal
inconsistency
one copy
of the
cellular
space
1t 1
 t 1
1
1t 1

1
1
1
t 1
t 1
t 1
t 1
present
1t
 t
1
1t

1
1
1
1
t
1
t
1
t
t 1
t 1
t 1
t
1 
t
1 
t
1 
t 1

t 1 
1 
t 1
1 
1
1º step
1º step
 0t
 t 1
1
1t 1

1t 1
 t 1
1
1t 1

0 t
 t
1
 1t

1
1
1
t 1
t 1
t 1
1
1
1
t 1
t 1
t 1
1
t
1
t
1
t
t 1

t 1 
1 
t 1
1 
1
t 1

t 1 
1 
t 1
1 
1
2º step
t
1 
t
1 
t
1 
2º step
 0t
 t 1
1
1t 1

1t 1
 t 1
1
1t 1

0 t
 t
1
 1t

1
1
1
t 1
t 1
t 1
1
1
1
t 1
t 1
t 1
0
t
1
t
1
t
t 1

t 1 
1 
t 1
1 
1
t 1

t 1 
1 
t 1
1 
1
t
1 
t
1 
t
1 
update
past
1
 t 1
1
1t 1

t 1

t 1 
1 
t 1
1 
1
Runtime Rule Activity
tn
tn+1
rule
count = 0 ;
for i, cell ipairs( csValeDoAnary ) do
if ( cell.past.cover == “forest” ) then
cell.cover = “deforested”;
count = count + 1 ;
end
end
cell.synchronize( );
?
print(“Number of deforested cells: ”.. count);
TerraME Synchronization Schemes
Processes
Might Be
Sequential in Time
Parallel in Time
Sequential in Space
execute(globalAutomaton1);
synchronize( );
execute(globalAutomaton2);
synchronize( );
execute(globalAutomaton1);
execute(globalAutomaton2);
synchronize( );
Parallel in Space
execute(localAutomaton1);
synchronize( );
execute(localAutomaton2);
synchronize( );
execute(localAutomaton1);
execute(localAutomaton2);
synchronize( );
What is a Cell-Space?

Raster spatial data structure where each cell can
handle one or more types of attribute.

Cell spaces were used in some of the very early GIS
implementations and have been since discarded in
most GIS implementations in favor of one-attribute
raster data structures.

Cell spaces allow easier integrated modelling in a GIS
environment
Cell Spaces
(a) land_cover equals deforested in 1985
(a) land_cover equals deforested in 1985
attr_id
object_id
initial_time
final_time
C34L181985-01-0100:00:001985-12-3123:59:59
C34L18
01/01/1985
31/12/1985
C34L181988-01-0100:00:001988-12-3123:59:59
C34L18
01/01/1988
31/12/1988
C34L181991-01-0100:00:001991-12-3123:59:59
C34L18
01/01/1991
31/12/1991
C34L181994-01-0100:00:001994-12-3123:59:59
C34L18
01/01/1994
31/12/1994
C34L181997-01-0100:00:001997-12-3123:59:59
C34L18
01/01/1997
31/12/1997
C34L182000-01-0100:00:002000-12-3123:59:59
C34L18
01/01/2000
31/12/2000
C34L191985-01-0100:00:001985-12-3123:59:59
C34L19
01/01/1985
31/12/1985
C34L191988-01-0100:00:001988-12-3123:59:59
C34L19
01/01/1988
31/12/1988
C34L191991-01-0100:00:001991-12-3123:59:59
C34L19
01/01/1991
31/12/1991
C34L191994-01-0100:00:001994-12-3123:59:59
C34L19
01/01/1994
31/12/1994
C34L191997-01-0100:00:001997-12-3123:59:59
C34L19
01/01/1997
31/12/1997
C34L192000-01-0100:00:002000-12-3123:59:59
C34L19
01/01/2000
31/12/2000
land_cover
forest
forest
forest
deforested
deforested
deforested
forest
deforested
deforested
deforested
deforested
deforested
dist_primary_road
dist_secondary_road
7068.90
669.22
7068.90
669.22
7068.90
669.22
7068.90
669.22
7068.90
669.22
7068.90
669.22
7087.29
269.24
7087.29
269.24
7087.29
269.24
7087.29
269.24
7087.29
269.24
7087.29
269.24
Cell-space x Cellular Automata

CA
 Homogeneous, isotropic space
 Local action
 One attribute per cell (discrete values)
 Finite space state

Cell-space
 Non-homogeneous space
 Action-at-a-distance
 Many attributes per cell
 Infinite space state
Hybrid Automata

Formalism developed by Tom Henzinger
(UC Berkeley)
 Applied to
embedded systems, robotics, process control,
and biological systems

Hybrid automaton
 Combines discrete transition graphs with continous
dynamical systems
 Infinite-state transition system
Hybrid Automata




Variables
Control graph
Flow and Jump conditions
Events
Event
Control Mode
A
Flow Condition
Event
Jump condition
Control Mode B
Flow Condition
Neighborhood Definition

Traditional CA
 Isotropic space
 Local neighborhood definition (e.g. Moore)

Real-world
 Anisotropic space
 Action-at-a-distance

TerraME
 Generalized calculation of proximity matrix
Space is Anisotropic
Spaces of fixed location and spaces of fluxes in Amazonia
Motivation
Which objects are NEAR each other?
Motivation
Which objects are NEAR each other?
Using Generalized Proximity Matrices
Consolidated area
Emergent area
Computational Modelling with Cell Spaces
Cell Spaces

Components

Cell Spaces

Generalizes Proximity Matriz – GPM

Hybrid Automata model

Nested enviroment
TerraME basic concepts
An environment on the Earth could be modeled as a synthetic
environment in the computer representation world…
… which has three dimensions:
 Space, time and behavior.
Environment: A Key Concept in TerraME
An environment has 3 kinds of sub models:
 Spatial Model: cellular space + region + GPM (Generalized
Proximity Matrix)
 Behavioral Model: hybrid automata + situated agents
 Temporal Model: discrete event simulator
The spatio-temporal structure is shared by several
communicating agents
Support for Nested Environments
U
U
U
Environments can be nested
Multiscale modelling
Space can be modelled in different resolutions
Behavioural Model

Agents:
 Local
 Global
Software Architecture
RondôniaModel
São Felix Model
Amazon Model
Hydro Model
TerraME Language
TerraME Compiler
TerraME Virtual Machine
TerraLib
TerraME Framework
C++ Signal
Processing
librarys
C++
Mathematical
librarys
C++
Statistical
librarys
TerraLib
http://www.terralib.org/
Introduction: Rondônia modeling
exercise study area
P r o je to s a n tig o s
N o v o s p r o je to s
P r o je to s p la n e ja d o s
10
8
P r o je to s d e
C o lo n iz a ç ã o
13
15
14
16
km
Deforestation Map – 2000
(INPE/PRODES Project)
Deforestation
Forest
Non-forest
Federal Government induced
colonization area (since the 70s):

Small, medium and large farms.
 Mosaic of land use patterns.

Definition of land units and typology
of actors based on multi-temporal
images (85-00) and colonization
projects information (Escada, 2003).
Actors and patterns
Model hypothesis:

Occupation processes are different for
Small and Medium/Large farms.
62o 30’ W
62o W

9o S

Location of change: For small farms,
deforestation has a concentrated pattern that
spreads along roads. For large farmers, the
pattern is not so clear.
o
o
o
9 S
Rate of change is not distributed uniformly
in space and time: rate in each land unit is
influenced by settlement age and parcel size;
for small farms, rate of change in the first
years is also influenced by installation credit
received.
9o 30’ S
9o 30’ S
10 S
10 S
10o 30’ S
10o 30’ S
Large farms
62o 30’ W
Medium farms
Urban areas
Small farms
Reserves
0
62o W
50
Km
Model overview
Deforestation Rate Distribution from
1985 to 2000 - Land Units Level:

Large/Medium Rate Distribution submodel

Small Farms Distribution sub-model
Allocation of changes - Cellular
space level:

Large/Medium allocation submodel

Small allocation sub-model
Global study
area rate
in time
Land unit 1 rate t
Land unit 2 rate t
Large farms
Medium farms
Urban areas
Small farms
Reserves
2.500 m (large
and
medium)
500 m (small)
Model implementation in TerraME
Each Land Unit is an environment, nested in the Rondônia environment.
Global rate
G
+
Rsmall
+
Rlarge
+
Asmall
Land Unit1
Land Unit2
...
+
...
Rondônia
+
Rsmall
Alarge
...
+
Asmall
Land Unitn
Legend
Environment
Agent
(two types of agentes Rsmall and R large)
(two types of agentes Asmall and A l
Deforestation Rate Distribution Module
Small Units Agent
latency
> 6 years
Deforesting
Newly implanted
Deforestation >
80%
Year of
creation
Slowing down
Iddle
Deforestation =
100%
Large and Medium Units Agent
Deforesting
Deforestation >
80%
Year of
creation
Slowing down
Iddle
Deforestation =
100%
Factors affecting rate:

Global rate

Relation properties density speedy of change

Year of creation

Credit in the first years
(small)
Allocation Module: different factors and
rules
Factors affecting location of
changes:
Small Farmers (500 m resolution):
 Connection to opened
areas through roads
network
 Proximity to urban areas
Medium/Large Farmers (2500 m
resolution):
 Connection to opened
areas through roads
network
 Connection to opened
areas in the same line of
ownerships
Allocation Module: different resolution,
variables and neighborhoods
1985
Small farms
environments:
500 m resolution
Categorical variable:
deforested or forest
One neighborhood
relation:
Large
farm environments:
•connection
through
roads
1997
2500 m resolution
Continuous variable:
% deforested
Two alternative neighborhood
relations:
•connection through roads
• farm limits proximity
1997
Simulation Results
1985
1988
1994
1997
1991
Simulation Results
1985 to 1997
Contributions

TerraME models many aspects of spatial and temporal
Rondônia study area complexity combining:
 Multiple scales
 Multiple actors and behaviors
 Multiple time events and assynchronous processes
 Alternative neighborhood relationships
 Continuous and discrete behavior
Calibration and Validation
dados simulados
M
M
M
t1990
t2000
Ajustou?
Ajustou?
calibração
t2010
validação
dados reais
t1980
t1990
t2000
t2010
?
Data Coherence
Distancia a centros urbanos
Data Coherence
Processo de
desflorestamento
1985
1988
1991
1994
1997
2000
Conclusions

Computational modelling on cellular spaces is an
emerging trend in land use modelling

Realistic assumptions are built in TerraME
 We have tried to avoid the five orders of ignorance

TerraME is an evolving project
 We hope to learn more as we do further experiments
Spatial
Dynamical
Modeling with TerraME
Tiago Garcia de Senna Carneiro
Antônio Miguel Vieira Monteiro
Gilberto Câmara
TerraME Concepts: An Earth’s
environment …
can be represented as a synthetic environment…
… where analytical entities (rules) change the space
properties in time.
Several interacting entities share the same spatiotemporal
structure.
myModel = Enviroment
{
id = "myModel",
-- Add cellular spaces (spatial dimension)
cs1 = CellularSpace{ … },
-- Add rules (behaviour)
rul1 = Automata{ … },…
-- Add timer (temporal dimension)
t1 = Timer{ … }, -- glue rules to spaces
}
myModel.execute();
myModel = Enviroment
{
id = "myModel",
-- Add cellular spaces (spatial dimension)
cs1 = CellularSpace{ … },
cs2 = CellularSpace{ … },
-- Add rules (behaviour)
rul1 = Automata{ … },…
rulN = Automata{ … },
-- Add timers (temporal dimension)
t1 = Timer{ … },
tN = Timer{ … },
}
myModel = Enviroment
{
id = "myModel",
-- Add cellular spaces (spatial dimension)
cs1 = CellularSpace{ … },
-- Add rules to this CA (behaviour)
rul1 = Automata{ … },…
-- Add timers to this CA (temporal dimension)
t1 = Timer{ … },
-- Add CA to this CA (nested-CAs)
model1 = Environment{ … } …
model2 = Environment{ … },
}
myModel.execute();
Simulation of Physical
Processes
- rain drainage in a terrain -
O Brasil “from the space”
2000
Espinhaço Range
Minas Gerais State
“from the space”
2000
Lobo’s Range
Itacolomi
do Itambé Peak
Lobo’s Range
Itacolomi
do Itambé Peak
rain
rain
Itacolomi do Itambé
Peak
N
rain
Lobo’s Range
Picture direction
Itacolomi
do Itambé Peak
Lobo’s Range
Simulation
Result
(36 min.)
TerraME Advanced:
Non- isotropic spaces
Isotropic neighbourhoods in cell spaces
Von Neumann
Neighborhood
Moore Neighborhood
Neighborhood Definition

Traditional CA
 Isotropic space
 Local neighborhood definition (e.g. Moore)

Real-world
 Anisotropic space
 Action-at-a-distance

TerraME
 Generalized calculation of proximity matrix
Space is anisotropic
Spaces of fixed location and spaces of fluxes in Amazonia
Motivation
Which objects are NEAR each other?
Motivation
Which objects are NEAR each other?
Geographical space is
multidimensional

Spaces of absolute locations


Spaces of relative locations


Determined by cartesian coordinates of
objects
Determined by connectivity properties of
objects
Challenge to GIS applications

Capture spatial relations in absolute and
relative spaces
How do we capture nearness relations?

Traditional spatial analysis
techniques
P2

Operate in absolute space
 Two objects are near if...
 They are close in euclidian
distance OR
 They “touch” each other

Spatial weights matrix

Constructed from pairwise
spatial relations
 Example – using “touch”
w ij  1, if O i touch
w ij  1, otherwise
P3
 w11

w 21

W 
 w 31

 w 41
Oj
w12
w13
w 22
w 23
w 32
w 33
w 42
w 43
w14 

w 24

w 34 

w 44 
Generalized Proximity Matrix (GPM)


In a cell-space, each cell has a different
neighbourhood
Defined by a NxN matrix
 w11 w12

w 21 w 22
W  
 w 31 w 32

 w 41 w 42
w13
w 23
w 33
w 43
w14 

w 24

w 34 

w 44 
One simple example



Consider a 5x 5 cell-space
For each cell, a different matrix
The neighbours of a cell (the (2,3) cell are):
0
0
1
1
0
0
0
*
1
0
0
0
1
1
0
0
0
1
1
0
0
0
1
0
0
Using Generalized Proximity Matrices
Consolidated area
Emergent area
TerraME





O que é TerraME?
Quais os requisitos?
Quais as principais características?
Arquitetura e componentes
Onde obter?
TerraME: quais as principais
características?



Acesso direto a um banco de dados celular espaçotemporal
Espaço pode ser não isotrópico: relações de
vizinhança convencionais e por rede
Conceito de Ambientes aninhados:
 Diferentes comportamentos no espaço e tempo no mesmo
modelo
 Diferentes escalas temporais e espaciais no mesmo
modelo
 Diferentes relações de vizinhança no mesmo modelo
 Multiplas abordagens de modelagem no mesmo modelo:
agentes, automatos celulares, modelos de simulação, etc.
Características: Integração com Banco
de dados geográfico
Espaço celular em ambiente
Terralib/TerraView
fonte: Carneiro (2006)
Características: Relações de proximidade
através de redes
Transamazônica
Forest
Deforested
No data
Non-forest
Water
Br 163
Roads
100 km
Redes físicas ou lógicas: estradas,
linhas de transmissão, comunicão,
mercado
Fontes: Aguiar et al., 2003
Prodes/INPE
São Felix do Xingu
-
Características: Conceito de
Ambiente em TerraME
Cellular space
Um ambiente tem três sub-modelos

Espacial: espaço celular, relações de proximidade
 Comportamental: modelos celulares, autômatos, agentes situados,etc.
 Temporal:
Características: Ambientes podem ser
aninhados
Cada ambiente aninhado
tem seu próprio modelo temporal,
comportamental e espacial
Prodes/INPE 2000-2001
Ambientes aninhados: possibilitam modelos de
comportamento, espaço e tempo heterogêneos
Landsat 1988–96
Agriculture to urban
Agriculture/natural vegetation to water
Natural vegetation/water to urban
Water to agriculture
(K. Seto, Boston U.)
Ambientes aninhados: possibilitam
modelos de comportamento, espaço e
tempo heterogêneos
Ambientes aninhados: possibilitam modelos
de comportamento, espaço e tempo
heterogêneos
Exemplo: múltiplas resoluções espaciais para modelar áreas de pequeno e grandes
2500 m
Carneiro et al., 2004 (Amsterdam LUCC WS)
2.500 m e 500 m
Exemplo de modelo de alocação de desflorestamento
em Rondônia:
resoluções diferentes, variáveis, fatores e relações de
vizinhança
Small farms environments:
1985
500 m resolution
Categorical variable:
deforested or forest
One neighborhood relation:
•connection through roads
Large farm environments:
2500 m resolution
1997
Continuous variable:
% deforested
Two alternative neighborhood
relations:
•connection through roads
• farm limits proximity
Carneiro et al., 2004 (Amsterdam LUCC WS)
1997
Simulation Results
1985 to 1997
Ambientes aninhados: modelagem
multi-escala
Prodes/INPE 2000-2001
TerraME





O que é TerraME?
Quais os requisitos?
Quais as principais características?
Arquitetura e componentes
Onde obter?
TerraME: arquitetura e aplicações
Amazonia
RunoffModel
SãoFelixAgentsModel
TROLLModel
Prata
CLUE
TerraME Language
TerraME Compiler
TerraME Virtual Machine
TerraLib Enviromental
Modeling Framework
C++ Signal
Processing
librarys
TerraLib
fonte: Carneiro (2006)
C++
Mathematical
librarys
C++
Statistical
librarys
TerraME: componentes
TerraME INTERPRETER
• model syntax semantic checking
• model execution
TerraView
• data acquisition
• data visualization
• data management
• data analysis
LUA interpreter
TerraME/LUA interface
model
data
model
TerraME framework
MODEL DATA
Model
source code
fonte: Carneiro (2006)
TerraLib
database
data
Eclipse & LUA plugin
• model description
• model highlight syntax
Descargar

Several Runs - Tree Fall OFF