TerraMap – Uma Nova Álgebra de Mapas Danilo Palomo Olga Oliveira Gilberto Câmara Ricardo Cartaxo...

Preview:

Citation preview

TerraMap – Uma Nova

Álgebra de Mapas

Danilo Palomo

Olga Oliveira

Gilberto Câmara

Ricardo Cartaxo

Lúbia Vinhas

TerraMap: divisão lógica da linguagem Declaração das variáveis Declaração das funções Chamada das funções

Tipos de Dados Básicos: Database

Representa um banco de dados espacial.

Database db1 (“banco01” , “hostname”, “user”, “password”, “type”);

Indica que foi criada uma “variável” db1 e

que db1 está associada ao banco de dados espacial “banco01”.

Tipos de Dados Básicos: View

Representa um conjunto de regiões no espaço associadas a um ou mais atributos.

Um Database pode conter várias Views.

View estados (db1, “USA_STATES”);

Indica que foi criada uma “variável”

estados e que ela está associada ao

banco db1.

Tipos de Dados Básicos: Map

Representa um atributo de uma “view”.

Uma View pode conter vários Maps.

Map nome (estados, “state_name”);

Indica que foi criada uma “variável” nome que está associada ao atributo “state_name” da view estados.

Tabela de Símbolos

Programa principal enxerga que existe apenas Símbolo

class TmTabelaSimbolos{map<string,TmSimbolo*> TabelaSimbolos;

public:TmTabelaSimbolos();int put_symbol(const string &name, TmSimbolo *simbolo);TmSimbolo* get_symbol(const string &name);

};

Tabela Símbolo: símbolo

class TmSimbolo_Factory {public:

static TmSimbolo* make( const string& type, const string& name ){if (type == "DATABASE")

return new TmSimbolo_Database(name);if (type == "VIEW")

return new TmSimbolo_View(name);if (type == "MAP")

return new TmSimbolo_Map(name);if (type == "ZFUNCTION")

return new TmSimbolo_Function(name,5);} };

class TmSimbolo{protected:

int type;public:

TmSimbolo();TmSimbolo(const string& _name, int _type);virtual int connect(const string& path, const TmSimbolo* _symbol) = 0;

};

TerraMap: Exemplo de Utilização

MAP “POP91_NOVA”

DATABASE “CDE”

VIEW “DISTRITOS”

MAP “POP91”

TerraMap: Função Local

MAP “POP91_NOVA”

DATABASE CDE”

VIEW “DISTRITOS”

MAP “POP91”

FUNÇÃO DECLARAÇÃO FUNÇÃO UTILIZAÇÃO

TerraMap: Exemplo de Execução I

TerraMap: Exemplo de Execução II

TerraMap: Verificação da Execução

“pequena” se “POP91” < 100000

“grande” nos demais objetos

TerraMap: Tratamento de Erros

TerraMap: Tratamento de Erros

TerraMap: Exemplo de Utilização

TerraMap: Exemplo da Linguagem

CRIAÇÃO DE UM NOVO ATRIBUTO

EXPRESSÕES NAS FUNÇÕES

TerraMap: Verificação da Execução

Criação do atributo “area_nova”

“Area_km2” se area_km2 < 10

0 se

10 <“area_km2”<30

“Area_km2” + 100 se “area_km2” > 30

TerraMap: Função Zonal

TerraMap: Função Zonal “preencher um mapa de polígonos com a média dos pixels de uma

imagem e fazer a sua classificação”

TerraMap

ZONALFUNCTION contido (raster,poligono){1 : in(poligono,raster);

}

FUNCTION media(raster, poligono){average(contido(raster, poligono)) : otherwise;

}

mediapixels = media(raster, poligono);

LOCALFUNCTION classifica(valor){"baixo" : valor <= 60,"medio" : valor > 60 && valor <= 65,"alto" : OTHERWISE

};

classepixels = classifica(media_attrib);

avaliação

uso

Chamada e atribuição

OperaçãoZonal

Função Zonal

Zona Toda geometria que compartilha uma característica Exemplos

O polígono de cada distrito Uma célula Distritos com mais de 500 analfabetos

Operação Zonal operação sobre os dados de um layer que possuam

sobreposição com a ZONA

TmIterator

Função Zonal: definindo a zona

class TmIteratorPol{TePolygonSet::iterator it;

public:...

void operator ++ (){it++;}void operator -- (){it--;}bool operator == (const TmIteratorPol& other){return (it == other.it); }bool operator != (const TmIteratorPol& other){return (it != other.it);}TePolygon operator * () {return *this;}

};

class TmIteratorCell{TeCellSet::iterator it;

public:...

void operator ++ (){it++;}void operator -- (){it--;}bool operator== (const TmIteratorCell& other){return it == other.it; }bool operator!= (const TmIteratorCell& other){return it != other.it;}TePolygon operator * (); // conversao para TePolygon

};

Função Zonal: Avaliação

A função “in(poligono,raster);” Para cada polígono temos um vetor de double associado,

representando os valores de pixels contidos no polígono

Funções possíveis entre geometrias

dentro, toca, intercepta, externo, vizinhança, ... entre tabelas

igual, diferente, menor, maior, ...

Função Zonal: uso

A função “average(contido(raster, poligono))” Pega o vetor de double associado ao polígono e faz a média Associa um único valor ao polígono

Outras funções Min | Max | Range | Mean | Std | Sum | Variety | Majority | Minority |

Median

atribuição dos valores gerados à tabela de atributos “mediapixels = media(raster, poligono);”

Função Zonal + Local: resultado

LOCALFUNCTION classifica(valor){"baixo" : valor <= 60,"medio" : valor > 60 && valor <= 65,"alto" : OTHERWISE

};

classepixels = classifica(media_attrib);

Conclusões

Teste de conceitos e visão dos problemas

O uso de padrões ajudará nas implementações futuras Pois, não será necessário mudar o código principal

Validação da linguagem Exemplos do Cartaxo e Lúbia

Trabalhos Futuros Tratamento dos diversos tipos de dados (polígonos, linhas,

pontos, raster) Implementar a Função Focal

Recommended