Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara Pedro Andrade Licence: Creative Commons ̶̶̶̶ By Attribution ̶̶̶̶ Non Commercial.

Slides:



Advertisements
Similar presentations
Algebraic Formalism over Maps João Pedro Cerveira Cordeiro Gilberto Câmara Ubirajara F. Moura Cláudio Barbosa Felipe Almeida GeoInformation Group Image.
Advertisements

Copyright, © Qiming Zhou GEOG1150. Cartography Data Models for Computer Cartography.
We now have a Geo-Linux. What’s next? Gilberto Câmara National Institute for Space Research (INPE), Brazil Institute for Geoinformatics, University of.
Operating-System Structures
Raster Based GIS Analysis
Roberto Ierusalimschy PUC-Rio, Brazil
Cartographic and GIS Data Structures
Geographic Information Systems
Geographic Information Systems. What is a Geographic Information System (GIS)? A GIS is a particular form of Information System applied to geographical.
Informationsteknologi Friday, November 16, 2007Computer Architecture I - Class 121 Today’s class Operating System Machine Level.
ArcView Documents Francisco Olivera, Ph.D., P.E. Department of Civil Engineering Texas A&M University.
Introduction to Structured Query Language (SQL)
Guide To UNIX Using Linux Third Edition
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Chapter 8: Introduction to High-Level Language Programming Invitation to Computer Science, C++ Version, Fourth Edition.
A Language to Support Spatial Dynamic Modeling Bianca Pedrosa, Gilberto Câmara, Frederico Fonseca, Tiago Carneiro, Ricardo Cartaxo Brazil’s National Institute.
Introduction to GIS. Watershed Discretization (model elements) + Land Cover Soil Rain Results Intersect model elements with Digital Elevation Model (DEM)
Rebecca Boger Earth and Environmental Sciences Brooklyn College.
Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara.
Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara Pedro Andrade Licence: Creative Commons ̶̶̶̶ By Attribution ̶̶̶̶ Non Commercial.
Overview Dennis L. Johnson What is GIS? Geographic Information System Geographic implies of or pertaining to the surface of the earth Information implies.
CS110/CS119 Introduction to Computing (Java)
WEB DESIGN AND PROGRAMMING Introduction to Javascript.
Spatial Dynamical Modeling with TerraME (part 2) Gilberto Câmara.
Video Mosaics AllisonW. Klein Tyler Grant Adam Finkelstein Michael F. Cohen.
Beyond OGC Standards: The New Challenges for Open Source GIS Gilberto Câmara Director General, National Institute for Space Research (INPE) Brazil OGRS.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
1 Computer Programming (ECGD2102 ) Using MATLAB Instructor: Eng. Eman Al.Swaity Lecture (1): Introduction.
Chapter 6: User-Defined Functions
Technical Workshops | Esri International User Conference San Diego, California Creating Geoprocessing Services Kevin Hibma, Scott Murray July 25, 2012.
Cellular Automata Spatio-Temporal Information for Society Münster, 2014.
Geosimulation Geosimulation models are developed to represent phenomena that occur in urban systems in highly realistic manner In particular, Cellular.
Games Development 2 Lua Scripting CO3301 Week 6. Contents Introducing Lua –Comparison with Python Lua Language Overview Interfacing Lua with C++
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Chapter 8: Introduction to High-level Language Programming Invitation to Computer Science, C++ Version, Third Edition.
Copyright © Mohamed Nuzrath Java Programming :: Syllabus & Chapters :: Prepared & Presented By :: Mohamed Nuzrath [ Major In Programming ] NCC Programme.
INTRODUCTION TO GIS  Used to describe computer facilities which are used to handle data referenced to the spatial domain.  Has the ability to inter-
Pedro R. Andrade Münster, 2013
Introduction to Enviromental Modelling Lecture 1 – Basic Concepts Gilberto Câmara Tiago Carneiro Ana Paula Aguiar Sérgio Costa Pedro Andrade Neto.
Towards Unifying Vector and Raster Data Models for Hybrid Spatial Regions Philip Dougherty.
Modelos Hidrologicos: Runoff Pedro Ribeiro de Andrade Gilberto Camara.
Microsoft ® Excel ® 2013 Enhanced Excel Tutorial 3 Calculating Data with Formulas and Functions.
An Introduction to TerraME Pedro Ribeiro de Andrade São José dos Campos,
PHP Tutorial. What is PHP PHP is a server scripting language, and a powerful tool for making dynamic and interactive Web pages.
Lecture 11 Introduction to R and Accessing USGS Data from Web Services Jeffery S. Horsburgh Hydroinformatics Fall 2013 This work was funded by National.
Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade Tiago G. S. Carneiro Gilberto Câmara Münster, 2014.
Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade Münster, 2013.
SESSION 1 Introduction in Java. Objectives Introduce classes and objects Starting with Java Introduce JDK Writing a simple Java program Using comments.
Modelagem Dinâmica com TerraME: Aula 3 Interface entre TerraME e LUA Gilberto Câmara (INPE) Tiago Garcia de Senna Carneiro (UFOP)
Introdução a Linguagem de Modelagem TerraML Dr. Tiago Garcia de Senna Carneiro TerraLAB - Laboratório INPE/UFOP para Simulação e Modelagem dos Sistemas.
Lua for TerraME: A Short Introduction Pedro Ribeiro de Andrade São José dos Campos, 2011.
Introduction to threads
Functional Programming
Introdução a Linguagem de Modelagem TerraML
Spatio-Temporal Information for Society Münster, 2014
Cellular Automata Pedro R. Andrade Tiago Garcia de Senna Carneiro
INTRODUCTION TO GEOGRAPHICAL INFORMATION SYSTEM
CASE STUDY 1: Linux and Android
MatLab Programming By Kishan Kathiriya.
Pedro R. Andrade Münster, 2013
Spatial Dynamical Modeling with TerraME
Lua for TerraME: A Short Introduction
PHP Introduction.
Deforestation Part 1: Database
User-Defined Functions
Chapter 8: Introduction to High-Level Language Programming
Cartographic and GIS Data Structures
Pedro R. Andrade Münster, 2013
Spatio-temporal information in society: cellular automata
PHP.
Presentation transcript:

Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara Pedro Andrade Licence: Creative Commons ̶̶̶̶ By Attribution ̶̶̶̶ Non Commercial ̶̶̶̶ Share Alike

f ( I t+n ). FF f (I t )f (I t+1 )f (I t+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)

Computational Modelling with Cell Spaces Cell Spaces Generalized Proximity Matriz – GPM Hybrid Automata model Nested scales Agents in space

TerraME - overview Model data in cell spaces Read/write data from a database

2500 m2.500 m e 500 m Cellular Data Base Resolution

TerraME functionality

TerraLib TerraME C++ Framework C++ Signal Processing librarys C++ Mathematical librarys C++ Statistical librarys TerraML Virtual Machine TerraME: Software Architecture TerraMLCompiler TerraML Language Model 1Model 2 Model 3Model 4

TerraLib: spatio-temporal database as a basis for innovation Visualization (TerraView) Spatio-temporal Database (TerraLib) Modelling (TerraME) Data Mining(GeoDMA) Statistics (aRT) G. Câmara et al.“TerraLib: An open-source GIS library for large-scale environmental and socio-economic applications”. In: B. Hall, M. Leahy (eds.), “Open Source Approaches to Spatial Data Handling”. Berlin, Springer, 2008.

“GPM” Plugin TerraView “FillCell” Plugin TerraView TerraME integration with GIS (TerraView) TerraLib Database

Conversion from GIS data to cell spaces Vector geospatial data Cell space Real world

The mixed pixel problem How can you transform from vectors to cell attributes?

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

Fill the attributes of the cell spaces For each data type to be transformed, there are appropriate operations

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

Lua Roberto Ierusalimschy PUC-Rio, Brazil

What is Lua?  Yet Another Scripting Language  an “extension” language  implemented as a library in ANSI C Host Program Lua Interpreter -- a Lua script color = RED b = button { label = ‘OK’, x = 10, y = 20}

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

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

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

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

Types

Type nil  Different from everything else  Default variable type  Also acts as false (boolean)

Type boolean  Comparison value  if (rain == true) then....

Type number  Unique native type for numbers  double (by default) a = 3 b = 3.5 c = 4.5e-8

Type string  Immutable  No size limit (read large files as strings)  No termination value (‘\0’)  Powerful Pattern-matching in standard library  myname = “Werner Kuhn”;

Tables  Implement associative arrays:  any value (including functions and other tables) can be used both for indices and values t = {} -- creates an empty table t[1] = "hello" t.x = print -- t.x is sugar for t[‘x’] t.x(t[1]) -- prints ‘hello’ t.next = t -- circular list

Table loc = { cover = "forest", distRoad = 0.3, distUrban = 2 }; loc.cover = “cerrado”; loc[“cover”] = “soja”; if (loc.distUrban > 1.5) then

Tables in Lua loc = { cover = "forest", distRoad = 0.3, distUrban = 2 }; loc.desfPot = loc.distRoad + loc.distUrban;

Constructors: Create and init tables  Record style  point={x=10,y=20}  print(point.y) --> 20  List style  days={ " Sun ", " Mon ", " Tue ", " Wed”, Sat " }  print(days[3]) --> Tue  Mixed style  points={{x=0,y=0}, point, n=2}  print(points[points.n].y) --> 20

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”

Functions in Lua function fat (n) if n == 0 then return 1 else return n*fat(n-1) end

Lua and the Web Functions in Lua  First class values function inc (x) return x+1 end inc = function (x) return x+1 end sugar clone = {} foreach(t, function (i,e) clone[i]=e end)  Example: cloning a table t

Functions and Tables w = { redraw = function ()... end, pick = function (x,y)... end, } if w.pick(x,y) then w.redraw() end

Tables x Objects  Tables are dynamically created objects. list value - v next - old list... list = {value=v, next=list}

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

My second Lua program C = 2; -- rain/t K = 0.4; -- flow coefficient q = 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); end -- for time = 0, 20, 1 do -- soil water q = q + rain(time) - K*q; end -- report print(“q = "..q);

Standard libraries Basic String Table Math IO OS Debug Coroutine

Basic Basic functions print type setmetatable pairs

String String manipulation pattern matching string.find string.gsub

Table  Function for table manipulation – table.insert – table.remove – table.sort

rain N Itacolomi do Itambé Peak Lobo’s Range My third Lua program Define a two-dimensional grid Make it rain on the grid Let water flow downwards

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.

TerraLib TerraLib Enviromental Modeling Framework C++ Signal Processing librarys C++ Mathematical librarys C++ Statistical librarys TerraME Virtual Machine TerraME architecture & applications TerraME Compiler TerraME Language RondôniaModelDinamicaModelTROLLModelCLUEModel

TerraME Runtime Environment

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)

TerraME allows nested scales

Nested scales are necessary for human- environment models Diverse space partitions can have different scales

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 geographical area of interest, divided into a grid. Each cell in the grid has one or more attributes. Stored and retrieved from a TerraLib database

Loading Data -- Loads the TerraLib cellular space csCabecaDeBoi = CellularSpace { dbType = "ADO", host = “localhost", database = "c:\\cabecaDeBoi.mdb", user = "", password = "", layer = "cellsLobo90x90", theme = "cells", select = { “height", “soilWater", “capInf" } } csCabecaDeBoi:load(); csCabecaDeBoi:loadMooreNeighbourhood; GIS

Creating temporary cellular spaces game = CellularSpace { xdim = N, ydim = N }

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

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

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 == "abandon" and cell.latency >= 10) then cell.cover = "secFor" end cell.water = cell.past.water + 2

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 ) do cell.water = cell.past.water + 2 end

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 )

Von Neumann Neighborhood Moore Neighborhood Isotropic neighbourhoods in cell spaces

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

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 t n+1 rule ?

Synchronizing a cell space tntn t n+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

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

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 }

Which objects are nearest to each other?

Using Generalized Proximity Matrices (GPM) Consolidated areaEmergent area

TerraME neighborhoods are graphs Euclidean space Open network Closed network D2 D1 [Aguiar et al., 2003]

Create or load neighborhoods -- 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 myCellSpace:loadGALNeighborhood("c:\\myNeigh.gal")

Building neighborhoods between cell spaces spatialCoupling( M, N, cs1,cs2, filterF, weightF, name ) filterF(cell, neigh)  Boolean wheighF(cell, neigh)  Real

Example: neighborhood to simulate rain -- Creates a 3x3 Neighborhood based on the cell "slope" -- only lower neighbors are considered create3x3Neighborhood( csQ, function(cell,neigh) return neigh.altimetry < cell.altimetry end, function(cell, neigh) return (cell.altimetry - neigh.altimetry)/ (cell.altimetry + neigh.altimetry) end, "slope" );

Saving cell spaces as images -- attribute used to generate the image attr_name = "estado" -- values that the attribute can have attr_value = {0,1,2} -- color pallete attr_color = {{0,255,0},{255,0,0},{0,0,0}} -- directory where images will be saved path = "c:\\TerraME\\Results“ -- size of the cell in pixels cellSize = 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

rain N Itacolomi do Itambé Peak Lobo’s Range

Picture direction Itacolomi do Itambé Peak Lobo’s Range

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

Simulation Result (36 min.)

Demo: Fire propagation Database: c:\\TerraME\\Database\\db_emas.mdb Model: c:\\TerraME\\Modelos\\demo6_FireSpreadModel.lua CA 1CA 2CA 3CA 4CA 5 CA CA CA CA CA QUEIMANDO INERTE

Demo: Amazon deforestation Database: c:\\TerraME\\Database\\amazonia.mdb Model: c:\\TerraME\\Modelos\\demo3_desflorestamento_save.lua

References Carneiro, T., 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., A Gentle Introduction to TerraME. INPE Report, Ierusalimschy, R Programming in Lua (2 nd edition). Rio de Janeiro, Lua.Org.