Spatial Dynamical Modeling with TerraME (part 2) Gilberto Câmara.

Slides:



Advertisements
Similar presentations
1 CSC 551: Web Programming Spring 2004 client-side programming with JavaScript  scripts vs. programs  JavaScript vs. JScript vs. VBScript  common tasks.
Advertisements

Roberto Ierusalimschy PUC-Rio, Brazil
Cartographic and GIS Data Structures
 2006 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
Working with JavaScript. 2 Objectives Introducing JavaScript Inserting JavaScript into a Web Page File Writing Output to the Web Page Working with Variables.
NetCDF An Effective Way to Store and Retrieve Scientific Datasets Jianwei Li 02/11/2002.
Introduction to Structured Query Language (SQL)
A Guide to SQL, Seventh Edition. Objectives Understand the concepts and terminology associated with relational databases Create and run SQL commands in.
Guide To UNIX Using Linux Third Edition
Introduction to Structured Query Language (SQL)
Guide To UNIX Using Linux Third Edition
Introduction to Unix (CA263) Introduction to Shell Script Programming By Tariq Ibn Aziz.
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.
RIZWAN REHMAN, CCS, DU. Advantages of ORDBMSs  The main advantages of extending the relational data model come from reuse and sharing.  Reuse comes.
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.
JavaScript, Fifth Edition Chapter 1 Introduction to JavaScript.
Chapter 5 Java Script And Forms JavaScript, Third Edition.
Introduction to Shell Script Programming
AL-MAAREFA COLLEGE FOR SCIENCE AND TECHNOLOGY INFO 232: DATABASE SYSTEMS CHAPTER 7 INTRODUCTION TO STRUCTURED QUERY LANGUAGE (SQL) Instructor Ms. Arwa.
INTERNET APPLICATION DEVELOPMENT For More visit:
XP Tutorial 10New Perspectives on Creating Web Pages with HTML, XHTML, and XML 1 Working with JavaScript Creating a Programmable Web Page for North Pole.
Chapter 6: User-Defined Functions
PowerBuilder Online Courses - by Prasad Bodepudi
An Introduction to JavaScript Summarized from Chapter 6 of “Web Programming: Building Internet Applications”, 3 rd Edition.
Concepts of Database Management Seventh Edition
7 1 Chapter 7 Introduction to Structured Query Language (SQL) Database Systems: Design, Implementation, and Management, Seventh Edition, Rob and Coronel.
Cellular Automata Spatio-Temporal Information for Society Münster, 2014.
Chapter 18 Object Database Management Systems. McGraw-Hill/Irwin © 2004 The McGraw-Hill Companies, Inc. All rights reserved. Outline Motivation for object.
Copyright © 2010 Certification Partners, LLC -- All Rights Reserved Perl Specialist.
PI Data Archive Server COM Points Richard Beeson.
Geosimulation Geosimulation models are developed to represent phenomena that occur in urban systems in highly realistic manner In particular, Cellular.
Introduction to Programming with RAPTOR
6 1 Lecture 8: Introduction to Structured Query Language (SQL) J. S. Chou, P.E., Ph.D.
Games Development 2 Lua Scripting CO3301 Week 6. Contents Introducing Lua –Comparison with Python Lua Language Overview Interfacing Lua with C++
What is PHP? PHP stands for PHP: Hypertext Preprocessor PHP is a server-side scripting language, like ASP PHP scripts are executed on the server PHP supports.
Database Systems Design, Implementation, and Management Coronel | Morris 11e ©2015 Cengage Learning. All Rights Reserved. May not be scanned, copied or.
Copyright © 2002 ProsoftTraining. All rights reserved. JavaServer Pages.
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.
Copyright © 2003 ProsoftTraining. All rights reserved. Perl Fundamentals.
Pedro R. Andrade Münster, 2013
Modelos Hidrologicos: Runoff Pedro Ribeiro de Andrade Gilberto Camara.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
What is GIS? “A powerful set of tools for collecting, storing, retrieving, transforming and displaying spatial data”
Spatial Dynamical Modeling with TerraME Tiago Carneiro Gilberto Câmara Pedro Andrade Licence: Creative Commons ̶̶̶̶ By Attribution ̶̶̶̶ Non Commercial.
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.
XP Tutorial 10New Perspectives on HTML, XHTML, and DHTML, Comprehensive 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties.
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.
Linux Administration Working with the BASH Shell.
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.
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
Pedro R. Andrade Münster, 2013
Spatial Dynamical Modeling with TerraME
Lua for TerraME: A Short Introduction
PHP Introduction.
User-Defined Functions
Chapter 8: Introduction to High-Level Language Programming
Pedro R. Andrade Münster, 2013
PHP.
Presentation transcript:

Spatial Dynamical Modeling with TerraME (part 2) Gilberto Câmara

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)

t p - 20 t p - 10 tptp Calibration t p + 10 Forecast Dynamic Spatial Models Source: Cláudia Almeida

Cell Spaces A cell space is a raster-based spatial data structure where each cell can handle one or more types of attribute Cell-spaces have several advantages over raster-based layers as a means of storing information about continuous spatial phenomena. Using one-attribute raster structures, describing a complex spatial phenomenon requires information to be stored in different files In a cell-space, such information is kept together in a single structure, with significant benefits in terms of visualization and interface.

Computational Modelling with Cell Spaces Cell Spaces Representation  Cell Spaces  Generalized Proximity Matriz – GPM  Hybrid Automata model  Nested scales

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

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

TerraME functionality

TerraME Runtime Environment

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 

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

Lua and the Web Lua Roberto Ierusalimschy PUC-Rio, Brazil

Lua and the Web 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}

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

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

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

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

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

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;

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

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

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 end add1 = add(1) print(add1(10)) --> 11 upvalue

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

Lua and the Web Tables x Objects  Tables are dynamically created objects.  in the sense of Hoare 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

My third Lua program Cell number heightabsortion capability flow direction

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

Cellular Space  Usa o construtor de LUA csCabecaDeBoi = CellularSpace { dbType = "MySQL", host = "localhost", database = "CabecaDeBoi ", user = "", password = "", layer = "cells90x90", theme = "cells", select = { “height", “capInf" } where = "mask <> ‘noData’"; }

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

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 == "abandoned" 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

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.

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

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.

Simulation of Physical Processes - rain drainage in a terrain -

rain N Itacolomi do Itambé Peak Lobo’s Range My first TerraME program A simple 2D hydrological model (see example in “Gentle Introduction”)

Picture direction Itacolomi do Itambé Peak Lobo’s Range

Simulation Result (36 min.)