spatial dynamical modeling with terrame

79
Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara

Upload: amos

Post on 26-Jan-2016

58 views

Category:

Documents


0 download

DESCRIPTION

Spatial Dynamical Modeling with TerraME. Tiago Carneiro Gilberto Câmara. Dynamic Spatial Models. f (I t ). f (I t+1 ). f (I t+2 ). f ( I t+n ). F. F. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Spatial Dynamical Modeling with TerraME

Spatial Dynamical Modeling with TerraME

Tiago CarneiroGilberto Câmara

Page 2: Spatial Dynamical Modeling with TerraME

f ( It+n )

. . FF

f (It) f (It+1) f (It+2)

Dynamic Spatial Models

“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)

Page 3: Spatial Dynamical Modeling with TerraME

Computational Modelling with Cell SpacesCell Spaces

Representation

Cell Spaces Generalized Proximity Matriz – GPM Hybrid Automata model Nested scales

Page 4: Spatial Dynamical Modeling with TerraME

TerraME - overview

Model data in cell spaces

Read/write data from a database

Page 5: Spatial Dynamical Modeling with TerraME

2500 m 2.500 m e 500 m

Cellular Data Base Resolution

Page 6: Spatial Dynamical Modeling with TerraME

TerraME functionality

Eclipse & LUA plugin• model description• model highlight syntax

TerraView• data acquisition• data visualization• data management• data analysis

TerraLibdatabase

da

ta

Model source code

MODEL DATA

mod

el

• model syntax semantic checking• model execution

TerraME INTERPRETER

LUA interpreter

TerraME framework

TerraME/LUA interface

model d

ata

Page 7: Spatial Dynamical Modeling with TerraME

TerraLib

TerraME C++ Framework

C++ Signal Processing

librarys

C++ Mathematical

librarys

C++ Statistical

librarys

TerraML Virtual Machine

TerraME: Software Architecture

TerraMLCompiler

TerraML Language

Model 1 Model 2 Model 3 Model 4

Page 8: Spatial Dynamical Modeling with TerraME

TerraLib: the support for TerraME

Open source library for GIS Data management

object-relational DBMS raster + vector geometries ORACLE, Postgres, mySQL, Access

Environment for customized GIS applications Web-based cooperative development

http://www.terralib.org

Page 9: Spatial Dynamical Modeling with TerraME

“GPM” PluginTerraView 3.2.0

“FillCell” PluginTerraView 3.2.0

TerraME integration with GIS (TerraView)

TerraLib Databse

Page 10: Spatial Dynamical Modeling with TerraME

Conversion from GIS data to cell spaces

Vector geospatial data

Cell space

Real world

Page 11: Spatial Dynamical Modeling with TerraME

The mixed pixel problem

How can you transform from vectors to cell attributes?

Page 12: Spatial Dynamical Modeling with TerraME

Using “FillCell” plugin to build Cell Spaces

1. Install the FillCell plugin: Copy the file "celulas.dll" to the directory "C: \ Program Files \ TerraView3.2.0 \ plugins".2. Build the cell space with the desired resolution

Page 13: Spatial Dynamical Modeling with TerraME

Fill the attributes of the cell spaces

For each data type to be transformed, there are appropriate operations

Page 14: Spatial Dynamical Modeling with TerraME

Filling Cells from vector data

Numerical areas (polygons, cells)

Categorical areas (polygons, cells)

Lines and points

Min, max, average, sum, standard dev Majority class (by number or by area) Percentage of each class, Percentage of majority class, area of majority class

Average/Sum intersection-weighted Presence, minimum distance, count

Page 15: Spatial Dynamical Modeling with TerraME

Lua and the Web

Lua

Roberto Ierusalimschy

PUC-Rio, Brazil

Page 16: Spatial Dynamical Modeling with TerraME

Lua and the Web

What is Lua?

Yet Another Scripting Language

an “extension” language

implemented as a library in ANSI C

HostProgram

LuaInterpreter

-- a Lua scriptcolor = REDb = button { label = ‘OK’, x = 10, y = 20}

Page 17: Spatial Dynamical Modeling with TerraME

Lua and the Web

Why Lua?

Simple and flexible “Simple things simple, complex things possible”

Small, Efficient, Portable Whole library written in ANSI C, compiles the same

source code in all platforms Typical uses: MS-DOS, Windows (3.1, 95, NT), Unix (Linux,

Solaris, IRIX, AIX, ULTRIX), Next, OS/2, Mac

Page 18: Spatial Dynamical Modeling with TerraME

Lua and the Web

Where is Lua?

Inside Brazil Petrobras, the Brazilian Oil Company Embratel (the main telecommunication company in

Brazil) many other companies

Outside Brazil Lua is used in hundreds of projects, both commercial

and academic CGILua still in restricted use

» until recently all documentation was in Portuguese

Page 19: Spatial Dynamical Modeling with TerraME

Lua and the Web

How is Lua?

Pascal-like Syntax.

Interpreter executes sequence of statements. function definitions are also statements (see later)

Six types: numbers, tables, functions, strings, userdata, nil

function fat (n) if n == 0 then return 1 else return n*fat(n-1) endend

Page 20: Spatial Dynamical Modeling with TerraME

My first Lua program C = 2; -- rain/t

K = 0.4; -- flow coefficient

q = 0;

-- RULES

for time = 0, 20, 1 do

-- soil water

q = q + C - K*q;

end

print(“q = "..q);

Page 21: Spatial Dynamical Modeling with TerraME

Types

Page 22: Spatial Dynamical Modeling with TerraME

Type nil

Different from everything else

Default variable type

Also acts as false (boolean)

Page 23: Spatial Dynamical Modeling with TerraME

Type boolean

Comparison value

if (rain == true) then ....

Page 24: Spatial Dynamical Modeling with TerraME

Type number

Unique native type for numbersdouble (by default)

a = 3b = 3.5c = 4.5e-8

Page 25: Spatial Dynamical Modeling with TerraME

Type string

Immutable

No size limit (read large files as strings)

No termination value (‘\0’)

Powerful Pattern-matching in standard library

myname = “Werner Kuhn”;

Page 26: Spatial Dynamical Modeling with TerraME

Lua and the Web

Tables

Implement associative arrays: any value (including functions and other tables) can be

used both for indices and values

t = {} -- creates an empty tablet[1] = "hello"t.x = print -- t.x is sugar for t[‘x’]t.x(t[1]) -- prints ‘hello’t.next = t -- circular list

Page 27: Spatial Dynamical Modeling with TerraME

Lua and the Web

Constructors Expressions to create and initialize tables

Record style point={x=10,y=20} print(point.y) --> 20

List style days={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"} print(days[3]) --> Tue

Mixed style points={{x=0,y=0}, point, n=2} print(points[points.n].y) --> 20

Page 28: Spatial Dynamical Modeling with TerraME

Table

loc = { cover = "forest", distRoad = 0.3, distUrban = 2 };

loc.cover = “cerrado”;loc[“cover”] = “soja”;

if (loc.distUrban > 1.5) then

Page 29: Spatial Dynamical Modeling with TerraME

Tables in Lua

loc = { cover = "forest", distRoad = 0.3, distUrban = 2 };

loc.desfPot = loc.distRoad + loc.distUrban;

Page 30: Spatial Dynamical Modeling with TerraME

Tables em Lua : functions

loc = { cover = "forest", distRoad = 0.3, distUrban = 2 };

...loc.reset = function( self )

self.cover = ""; self.distRoad = 0.0; self.distUrban = 0.0;

end

Page 31: Spatial Dynamical Modeling with TerraME

Lua and the Web

Constructors

article{ author="F.P.Brooks", title="The Mythical Man-Month", year=1975,}

news = { {text = "New version 2.0", date = "21/05/1997"}, {text = "New example", date = "21/05/1997"}, {text = "New version: 2.1",date = "17/06/1997"},}

calls function“article”

Page 32: Spatial Dynamical Modeling with TerraME

Functions in Luafunction fat (n)

if n == 0 then

return 1

else

return n*fat(n-1)

end

end

Page 33: Spatial Dynamical Modeling with TerraME

Lua and the Web

Functions in Lua

First class values

function inc (x) return x+1end

inc = function (x) return x+1 end

sugar

clone = {}foreach(t, function (i,e) clone[i]=e end)

Example: cloning a table t

Page 34: Spatial Dynamical Modeling with TerraME

Lua and the Web

Upvalues

Mechanism to allow functions to access non-local variables

An upvalue is a variable expression whose value is computed when the enclosing function is instantiated (and not when the function is executed)

function add (x) return function (y) return y+%x endend

add1 = add(1)print(add1(10)) --> 11

upvalue

Page 35: Spatial Dynamical Modeling with TerraME

Functions and Tables

w = { redraw = function () ... end, pick = function (x,y) ... end,}

if w.pick(x,y) then w.redraw()end

Page 36: Spatial Dynamical Modeling with TerraME

Lua and the Web

Tables x Objects

Tables are dynamically created objects. in the sense of Hoare

list

value - vnext -

old list...

list = {value=v, next=list}

Page 37: Spatial Dynamical Modeling with TerraME

Objects First-class functions+ tables = almost OO

Tables can have functions as fields

Sugar for method definition and call Implicit parameter self

a.foo(a,x)a:foo(x)

a.foo = function (self,x) ...end

function a:foo (x) ...end

sugar

sugar

Page 38: Spatial Dynamical Modeling with TerraME

My second Lua programC = 2; -- rain/tK = 0.4; -- flow coefficientq = 0; --function rain (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); endend--for time = 0, 20, 1 do

-- soil waterq = q + rain(time) - K*q;

end-- report

print(“q = "..q);

Page 39: Spatial Dynamical Modeling with TerraME

Standard libraries

BasicStringTableMathIOOSDebugCoroutine

Page 40: Spatial Dynamical Modeling with TerraME

Basic

Basic functionsprinttypesetmetatablepairs

Page 41: Spatial Dynamical Modeling with TerraME

String

String manipulationpattern matching

string.findstring.gsub

Page 42: Spatial Dynamical Modeling with TerraME

Table

Function for table manipulation table.insert table.remove table.sort

Page 43: Spatial Dynamical Modeling with TerraME

rainrain rain

N

Itacolomi do ItambéPeak Lobo’s Range

My third Lua program

Define a two-dimensional gridMake it rain on the gridLet water flow downwards

Page 44: Spatial Dynamical Modeling with TerraME

TerraME: Vision

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.

Page 45: Spatial Dynamical Modeling with TerraME

TerraLib

TerraLib EnviromentalModeling Framework

C++ Signal Processing

librarys

C++ Mathematical

librarys

C++ Statisticallibrarys

TerraME Virtual Machine

TerraME architecture & applications

TerraME Compiler

TerraME Language

RondôniaModel DinamicaModel TROLLModel CLUEModel

Page 46: Spatial Dynamical Modeling with TerraME

TerraME Runtime Environment

Eclipse & LUA plugin• model description• model highlight syntax

TerraView• data acquisition• data visualization• data management• data analysis

TerraLibdatabase

da

ta

Model source code

MODEL DATA

mod

el

• model syntax semantic checking• model execution

TerraME INTERPRETER

LUA interpreter

TerraME framework

TerraME/LUA interface

model d

ata

Page 47: Spatial Dynamical Modeling with TerraME

The Scale Concept in TerraME

Scale is a generic concept that includes the spatial, temporal, or analytical dimensions used to measure any phenomenon.

Extent refers to the magnitude of measurement.

Resolution refers to the granularity used in the measures.(Gibson et al. 2000)

Page 48: Spatial Dynamical Modeling with TerraME

TerraME allows nested scales

Page 49: Spatial Dynamical Modeling with TerraME

Nested scales are necessary for human-environmental models

Diverse space partitions can have different scales

Page 50: Spatial Dynamical Modeling with TerraME

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

Page 51: Spatial Dynamical Modeling with TerraME

Cellular SpaceA geographical area of interest, divided into a grid. Each cell in the grid has one or more attributes. CellularSpaces are stored and retrieved from a TerraLib

database

Page 52: Spatial Dynamical Modeling with TerraME

Loading Data

-- Loads the TerraLib cellular spacecsCabecaDeBoi = CellularSpace{

dbType = "ADO",host = “localhost",database = "c:\\cabecaDeBoi.mdb",user = "",password = "",layer = "cellsLobo90x90",theme = "cells",select = { “height", “soilWater", “capInf" }

}csCabecaDeBoi:load();

csCabecaDeBoi:loadMooreNeighbourhood;

GIS

Page 53: Spatial Dynamical Modeling with TerraME

Creating temporary cellular spaces

myCellSpace = CellularSpace{ database = "", theme = "“ }

for i = 1, 2, 1 dofor j = 1, 2, 1 do

c = Cell{ soilType = “latosolo” }c.x = i;c.y = j; myCellSpace :add( c );

endend

Page 54: Spatial Dynamical Modeling with TerraME

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

Page 55: Spatial Dynamical Modeling with TerraME

Database management-- loads a cellular spacecsAmazonia:load();csAmazonia:loadNeighbourhood("Moore");-- save (time, themeName, attrTableName) -- for time = 1, 10,1 do csAmazonia:save(time, “sim", {"water"});end

Eclipse & LUA plugin• model description• model highlight syntax

TerraView• data acquisition• data visualization• data management• data analysis

TerraLibdatabase

Model source code

MODEL DATA

• model syntax semantic checking• model execution

TerraME INTERPRETER

LUA interpreter

TerraME framework

TerraME/LUA interface

Page 56: Spatial Dynamical Modeling with TerraME

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;

Page 57: Spatial Dynamical Modeling with TerraME

Traversing a Cell Space

"for...end" statement: "for i, cell in pairs (csQ.cells)

do ...end”.

The i and cell variable in the statement are the index and the value of a cell inside the cells attribute from the cellular space csQ.

for i, cell in pairs( csQ.cells ) docell.water = cell.past.water + 2;

end

Page 58: Spatial Dynamical Modeling with TerraME

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(cell) cell.Water = cell.past.Water + 2; return true; end);

Page 59: Spatial Dynamical Modeling with TerraME

Von Neumann Neighborhood

Moore Neighborhood

Isotropic neighbourhoods in cell spaces

Page 60: Spatial Dynamical Modeling with TerraME

Traversing a Neighbourhood

csq:loadNeighbourhood(“Moore”);forEachCell(csQ, function(cell)

count = 0; forEachNeighbour(cell, 0, function(cell, neigh)

if (neigh.past.value == 1 and neigh ~= cell) then count = count + 1; end end; ); -- for each neighbor

Page 61: Spatial Dynamical Modeling with TerraME

for i, cell ipairs( csValeDoAnary ) do

end

count = 0 ;

print(“Number of deforested cells: ”.. count);

if ( cell.past.sim_cover == 1 ) then

cell.sim_cover = 0;

count = count + 1 ;

end

cell.synchronize( );

Synchronizing a cell space

tntn+1

rule

?

Page 62: Spatial Dynamical Modeling with TerraME

Synchronizing a cell space

TerraME keeps two copies of a cellular space in memory: one stores the past values of the cell attributes, and another stores the current (present) values of the cell attributes.

The model equations must read (the right side of the equation rules) the past copy, and must write (the left side of the equation rules) the values to the present copy of the cellular space.

At the correct moment, it will be necessary to synchronize the two copies of the cellular space, copying the current attribute values to the past copy of the cellular space.

Page 63: Spatial Dynamical Modeling with TerraME

Synchronizing a cell space

tntn+1

rule

TerraME keeps two copies of a cellular space in memory: one stores the past values of the cell attributes, and another stores the current (present) values of the cell attributes.

The model equations must read (the right side of the equation rules) the past copy, and must write (the left side of the equation rules) the values to the present copy of the cellular space.

At the correct moment, it will be necessary to synchronize the two copies of the cellular space, copying the current attribute values to the past copy of the cellular space

Page 64: Spatial Dynamical Modeling with TerraME

Synchronization

Always read from the pastAlways write to the present….csQ:syncronize();

Page 65: Spatial Dynamical Modeling with TerraME

Trajectories: spatial patterns of change

modeller defined functions which map indexes (atributtes) to geo-objects (cells).

it = Trajectory{ myCellSpace, function(cell) return cell.cover == "forest“ end, function( c1, c2 )

return c1.dist_roads < c2.dist_roads end}

Page 66: Spatial Dynamical Modeling with TerraME

Quais objetos são mais proximos?

Which objects are NEAR each other?

Page 67: Spatial Dynamical Modeling with TerraME

Using Generalized Proximity Matrices (GPM)

Consolidated area Emergent area

Page 68: Spatial Dynamical Modeling with TerraME

TerraME neighborhoods are graphs

Euclidean space Open network Closed network

D2

D1

[Aguiar et al., 2003]

Page 69: Spatial Dynamical Modeling with TerraME

Create or load neighborhoods-- Create a Moore neighborhoodcreateMooreNeighborhood( myCellSpace, “neighName” )

-- Create a 3x3 neighborhoodcreate3x3Neighborhood(myCellSpace, filterF() , weightF(),

name )

-- Create a MxN neighborhoodcreateMxNNeighborhood( M, N, myCellSpace,filterF(),

weightF(), name )

-- Load neighborhood from TerraLib databasemyCellSpace: loadTerraLibGPM(“myGPM");-- Load neighborhood from TerraLib GAL filesmyCellSpace:loadGALNeighborhood("c:\\myNeigh.gal")

Page 70: Spatial Dynamical Modeling with TerraME

Building neighborhoods between cell spaces

spatialCoupling( M, N, cs1,cs2, filterF, weightF, name )

filterF(cell, neigh) Boolean

wheighF(cell, neigh) Real

Page 71: Spatial Dynamical Modeling with TerraME

Example: neighborhood to simulate rain

-- Creates a 3x3 Neighborhood based on the cell "slope"-- only lower neighbors are consideredcreate3x3Neighborhood(

csQ,function(cell,neigh)

return neigh.altimetry < cell.altimetryend,function(cell, neigh)

return (cell.altimetry - neigh.altimetry)/(cell.altimetry + neigh.altimetry)

end,"slope"

);

Page 72: Spatial Dynamical Modeling with TerraME

Saving cell spaces as images-- attribute used to generate the imageattr_name = "estado"-- values that the attribute can haveattr_value = {0,1,2}-- color palleteattr_color = {{0,255,0},{255,0,0},{0,0,0}}-- directory where images will be savedpath = "c:\\TerraME\\Results“-- size of the cell in pixelscellSize = 2-- load the o espaco celular do banco de dados TerraLib........................for t = 1, 100 do CStoPNG(myCellSpace,

attr_name,t,path,cellSize,attr_value,attr_color)end

Page 73: Spatial Dynamical Modeling with TerraME

rainrain rain

N

Itacolomi do ItambéPeak Lobo’s Range

Page 74: Spatial Dynamical Modeling with TerraME

Picture direction

Itacolomido Itambé Peak

Lobo’s Range

Page 75: Spatial Dynamical Modeling with TerraME

Demo: Rain Drainage Model

Database: c:\\TerraME\\Database\\CabecadeBoi.mdb Model: c:\\TerraME\\Modelos\\demo4_chuva_geoBD.lua Model: c:\\TerraME\\Modelos\\demo7_chuva_geoBD.lua

Page 76: Spatial Dynamical Modeling with TerraME

SimulationResult(36 min.)

Page 77: Spatial Dynamical Modeling with TerraME

Demo: Fire propagation

Database: c:\\TerraME\\Database\\db_emas.mdbModel: c:\\TerraME\\Modelos\\demo6_FireSpreadModel.lua

CA 1 CA 2 CA 3 CA 4 CA 5

CA 1CA 1 0.1000.100 0.2500.250 0.2610.261 0.2730.273 0.2850.285

CA 2CA 2 0.1130.113 0.2530.253 0.2640.264 0.2760.276 0.2880.288

CA 3CA 3 0.1160.116 0.2560.256 0.2670.267 0.2790.279 0.2910.291

CA 4CA 4 0.1190.119 0.2590.259 0.2700.270 0.2820.282 0.2940.294

CA 5CA 5 0.1220.122 0.2620.262 0.2730.273 0.2850.285 0.2970.297

QUEIMANDO

INER

TE

Page 78: Spatial Dynamical Modeling with TerraME

Demo: Desflorestamento na Amazônia

Banco de dados: c:\\TerraME\\Database\\amazonia.mdb Modelo: c:\\TerraME\\Modelos\\demo3_desflorestamento_save.lua

Page 79: Spatial Dynamical Modeling with TerraME

References

Carneiro, T., 2006. Nested-CA: a foundation for multiscale modeling of land use and land change., in PhD Thesis in Computer Science. National Institute of Space Research: São José dos Campos, Brazil.

Carneiro, T.; Câmara, G., 2007. A Gentle Introduction to TerraME. INPE Report, 2007.

Ierusalimschy, R. 2006. Programming in Lua (2nd edition). Rio de Janeiro, Lua.Org.