Agosto, 2005
Introdução
a TerraLib I
Karine Reis Ferreira – karine@dpi.inpe.br
Gilberto Ribeiro de Queiroz – gribeiro@dpi.inpe.br
Gilberto Câmara – gilberto@dpi.inpe.br
Disponível em http://www.dpi.inpe.br/cursos/ser303
O que é a TerraLib?

Biblioteca de software (conjunto de classes e
funções) para o domínio geográfico

É um ambiente para o desenvolvimento de novos
projetos de sistemas geográficos:
 Aplicativos
 Testes

Geográficos de arquitetura integrada
de conceitos e procedimentos
É um produto para desenvolvedores de software, ou
seja, programadores
O que é a TerraLib?

Desenvolvida em C++ :
 Orientação
a Objeto
 STL (Standard Template Library)
 Programação genérica
 Padrões de projeto
 Multi-plataforma (windons e linux)

Arquitetura Integrada- suporte para diferentes
SGBDs:
 MySQL,
PostgreSQL, PostGIS
 Oracle, Oracle Spatial, SQLServer, Access
O que é a TerraLib?

Livre e de código fonte aberto
 GNU
Library License (or Lesser
General Public License - LGPL)

Parceiros de desenvolvimento
Por que desenvolver a TerraLib?

Novas tendências no desenvolvimento de GIS:
 Arquitetura

Uso de SGBDs para armazenar, manipular e gerenciar
dados geográficos
 Aplicativos



integrada
geográficos
Transição dos atuais sistemas monolíticos para
sistemas dedicados
Ambiente para testes de novos conceitos
A falta de tecnologia livre na área de GIS
O que é o TerraView?

Um Aplicativo Geográfico que utiliza a TerraLib
Jfddfjh gfsdfgdfssf
Jfddfjh gfsdfgdfssf
Jfddfjh gfsdfgdfssf
fsdf fsdfsd
fsdf fsdfsd
fsdf fsdfsd
sdfsdf
sdfsdf
sdfsdf
TerraLib
SGBDs
Site da TerraLib

www.terralib.org
Download da TerraLib

Utilizando o aplicativo CVS (Concurrent Version
System):
 Usuário
anonymous
 Pegar uma versão específica ou a versão em
desenvolvimento

Baixar os arquivos “zipados”
Estrutura de Diretórios
Aplicativos desenvolvidos sobre a terralib (TerraView)
…/TerraLib
Exemplos de como usar a terralib (criar um layer; como
importar um shape,mid/mif e raster; como criar um tema, como
fazer um agrupamento)
Os arquivos da terralib (classes e funções) e as bibliotecas que ela
usa (shapelib, freetype, tiff, zlib)
Projetos, workspaces e bibliotecas para VC++
makefiles para linux
…/TerraLib
…/TerraLib/src
…/TerraLib/src/terralib
Modelo conceitual da TerraLib

Principais Conceitos:

Bando de Dados TerraLib
 Plano de Informação ou Layer







Representação geométrica
Projeção cartográfica
Tema
Vista
Visual
Legenda
Está representado:

nas classes que compõe a biblioteca
 no modelo do banco de dados
Banco de Dados TerraLib

Repositório de dados que contém:

Dados geográficos (componente espacial e alfanumérica)
 Metadados sobre os dados geográficos
 Organização em layer e temas, projeção, etc.

Dados e metadados são armazenados em um modelo de
banco de dados definido pela TerraLib

Gerado por SGBDs:

Access, MySQL, SQLServer, PostgreSQL, Oracle,
PostGIS, Oracle Spatial
Layer


Representa uma estrutura de agregação de um conjunto
de informações espaciais que são localizadas sobre
uma região geográfica e compartilham um conjunto de
atributos
Agrega coisas semelhantes
Layer dos municípios de São Paulo
Layer

Contém dados vetoriais ou matriciais

Está associado a uma projeção cartográfica

Pode ser gerado:

Pela importação de arquivos em formatos de
intercâmbio
 shapefiles, ASCII-SPRING, MID/MIF
 GeoTiff, JPEG
 Dbf ou CSV
 Através do resultado de uma função
 Manualmente
Representação geométrica


Representação da componente espacial do dado:

Vetorial:
 Ponto, Linha, Polígono, Célula, Arco ou Nó

Matricial
 Grades regulares multidimensionais
Um mesmo objeto
geográfico de um layer
pode ter diferentes
representações vetoriais
Projeção cartográfica

Representa a referência geográfica dos dados espaciais

Permitem projetar a superfície terrestre em uma
superfície plana

A TerraLib suporta diferentes tipos de projeções e
funções para o mapeamento entre projeções

Ex:




UTM (datum SAD69 ou Corrego Alegre)
Mercator
Polyconic
LatLong
Tema

Define uma seleção sobre um layer baseado em
restrições:

Por atributo (ex.: população>300.000)
 Espacial (ex.: todos os municípios que são cortados pela
rodovia Presidente Dutra)
 Temporal (ex.: todos os crimes que ocorreram no mês de
janeiro)

Define o visual ou a forma de apresentação gráfica da
componente espacial dos objetos do tema

Define grupos e legendas associadas a cada grupo

Não duplica geometrias e atributos

Utiliza do layer de referencia
Tema
Tema1 (agrupamento)
Layer
Tema2 (População > 70000)
Tema3 (Vizinhos de São Paulo)
Vista

Define uma visão particular de um usuário sobre o
banco de dados

Agrupa os temas que serão visualizados
simultaneamente

Está associado a uma projeção cartográfica
 Visualização
comum
de todos os temas em uma projeção
Visual

Representa um conjunto de características de
apresentação de primitivas geométricas:

cores de preenchimento e contorno de polígonos,
espessuras de contornos e linhas, cores de pontos,
símbolos de pontos, etc.
Legenda

Caracteriza um grupo de dados, dentro de um tema,
apresentados com o mesmo visual, quando os
dados do tema são agrupados de alguma forma.
legenda
Modelo conceitual
Theme
SGBD
Banco de
Dados
n
1
n
n
1
Legend
1
n
1
1
Layer
1
View
1
1
1
1
projection
Visual
Modelo do Banco de Dados

A TerraLib define um modelo de banco de dados
para armazenar dados geográficos e metadados

Esse modelo é formado por dois conjuntos de
tabelas:
 Tabelas
de dados: armazenam dados geográficos,
sua componente espacial e alfanumérica
 Tabelas
de metadados: armazenam o modelo
conceitual da TerraLib
Tabelas de Metadados
Tabelas de Metadados
Cada layer possui um nome, um
retângulo envolvente, uma
projeção e seu tempo de validade.
Armazena os parâmetros
de cada projeção (datum,
latitude e longitude de
origem, unidade, etc).
Armazena informações
sobre as representações
geométricas de cada
layer: seu tipo (ponto,
linha, raster..), o nome
da tabela geométrica, o
retângulo envolvente, a
resolução x e y e o
número de linhas e
colunas (para células e
raster).
Armazena informações sobre as
tabelas de atributos associadas a
cada layer (nome e o tipo da
tabela, o atributo que é chave
primária, o atributo de ligação
com as geometrias, etc).
Tabelas de Metadados
Armazena
informações sobre
cada vista (seu
nome, o nome do
usuário responsável,
sua projeção e se é
visível ou não).
Armazena
informações sobre
os agrupamento
aplicados em cada
tema (tipo de
agrupamento,
numero de grupos
gerados, o atributos
utilizado, etc).
Cada tema possui um
nome, uma vista
associada, o layer de
origem, as restrições
de geração (atributo,
espacial e temporal), o
nome da tabela de
coleção, etc. Para cada
tema é criado duas
tabelas de coleção
para armazenar
informações sobre
seus objetos.
Tabelas de Metadados
Armazena o visual
para a representação
raster (tabela de lut,
banda de entrada e
saída, tipo de
transformação, etc)
Cada tema está
associado a duas
tabelas de
coleção que
contem
informações
sobre seus
objetos (a
legenda
associada, se
esta apontado ou
consultado, etc)
Armazena o visual de
cada legenda para
cada representação
geométrica vetorial
(cor e estilo de
preenchimento e
contorno,
transparência,
símbolos, etc)
Armazena a legenda
de cada grupo do tema
(o identificador do
grupo, quantos objetos
existem em cada
grupo, o rótulo
associado e o maior e
menos valor do grupo)
Tabelas de Dados

Geometrias e atributos são armazenados em diferentes
tabelas

A ligação entre essas duas tabelas é feita através da
coluna “object_id” da tabela de geometria e uma coluna
da tabela de atributos
 A coluna de ligação da tabela de atributos é armazenada
na tabela de metadado te_layer_table (“attr_link”)


Tabelas de geometrias: possuem formato pré-definido
Tabelas de atributos: dependem dos dados, não
possuem formato pré-definido
Tabelas de Dados
Malha_municipal
652
650
651
Polygons2
te_layer_table (metadado)
Tabelas de Dados

Os dados alfanuméricos são mapeados para os tipos
básicos dos SGBDs:

int, real, varchar, char, data

A TerraLib oferece suporte para SGBDs relacionais
(SGBD-R) e objeto-relacionais (SGBD-OR)

Como armazenar o dado espacial nos SGBDs?
Tabelas de Dados Vetoriais

Como armazenar um polígono em um SGBD relacional?
Alternativa 1) tabelas de pontos (x,y)
Poligonos
1,5
5,5
1,1
5,1
Pol1
id
num_coords
num_holes
pol1
4
0
pol2
12
1
Pts_pol
Pontos
id
pt
id
x
y
pol1
1
1
1
5
pol1
2
2
5
5
pol1
3
3
5
1
pol1
4
4
1
1
pol1
5
5
1
5
Tabelas de Dados Vetoriais

Como armazenar um polígono em um SGBD relacional?
Alternativa 2) campo longo binário (BLOB)
1,5
5,5
Tipo BLOB
1,1
5,1
Pol1
Poligonos
id
num_coords
num_holes
poligonos
pol1
4
0
(xy, xy, xy...)
pol2
12
1
(xy, xy, xy...)
Tabelas de Dados Vetoriais

Como armazenar um polígono em um SGBD relacional?
Alternativa 2) campo longo binário (BLOB)
1,5
5,5
Tipo BLOB
1,1
5,1
Pol1
Poligonos
id
num_coords
num_holes
poligonos
pol1
4
0
(xy, xy, xy...)
pol2
12
1
(xy, xy, xy...)
A TerraLib utiliza essa alternativa!!!
Tabelas de Dados Vetoriais

Como armazenar dados espaciais em um SGBD-OR
com extensão espacial?
Estados



Tipos de dados espaciais
Oracle Spatial
SIGLA
POP
MG
2222

SDO_GEOMETRY
RJ
3333

Indexação espacial (RTree)
SP
4444
GEOM
PostGIS

POLYGON, LINESTRING, POINT
 Indexação

espacial
GIST(Generalized Search Trees): B-Tree ou R-Tree
Tabelas de Dados Vetoriais

SGBD relacional
Tabelas de Dados Vetoriais

SGBD-OR com extensão
Tabelas de Dados Matriciais

Divisão em blocos (Tiling)

Um dado matricial ou raster é dividido em blocos com
largura L e altura A
 Cada bloco, com L x A elementos, é armazenado em um
registro da tabela
 Vantagens:
 Eficiência na recuperação
 Flexibilidade de expansão
(mosaico)
Tabelas de Dados Matriciais

Multi-resolução

Raster pode ser armazenado em vários níveis de
resolução
Nível 2  Resolução R * 22
Nível 1  Resolução R * 21
Nível 0  Resolução R * 20
A aplicação “decide” qual o nível de detalhe mais apropriado
e apenas os blocos com essa resolução são processados
Tabelas de Dados Matriciais

Indexação

Cada bloco guarda as coordenadas geográficas de seu
retângulo envolvente  indexadas
 Esse retângulo é usado para selecionar apenas os blocos
que interceptam uma determinada área com uma
resolução apropriada
 Blocos possuem uma identificação única que é usada
para identificá-los em um sistema de cache ou memória
virtual
Tabelas de Dados Matriciais

Exemplo
Chave primária: block_id
Índices: lower_x, lower_y, upper_x, upper_y, band_id,
resolution_factor
Block_Id : XiYjBbRrSs
Tabelas de Dados Matriciais

Compressão

Blocos podem ser guardados comprimidos

Algoritmos de compressão


Zlib

JPEG: usando a biblioteca jpeglib
Imagem de 1778x2804 pixels (4.985.512), 1 banda, res x
e y de 25m, em blocos de 512x512:

Nenhuma – 6.291.456 bytes

ZLIB – 3.746.080 bytes
(~59.0%)

JPEG - 814.694 bytes
(~12.5%)
Tabelas de Dados

Dado matricial - SGBD-R e SGBD-OR
Associa cada objeto do
layer a um raster e as
características desse
raster (numero de
bandas, resolução x e
y, numero de colunas e
linhas, retângulo
envolvente, etc)
Armazena os
metadados de cada
banda do raster (valor
máximo e mínimo,
numero de bits, tipo de
compressão, valor
dummy, etc)
Armazena os blocos do
raster, seus retângulos
envolventes, banda,
tamanho, etc)
Armazena valores RGB
usados por raster que
possuem um índice para
uma tabela de lut
Tabelas de atributos descritivos

A TerraLib possui diferentes tipos de tabelas de
atributos descritivos:

Estática, Externa, Mídia
 Eventos e Atributos Dinâmicos (variam com o tempo)

Metadado armazenado na tabela te_layer_table:

attr_table_type: o tipo da tabela de atributo

unique_id: o nome do atributo que identifica cada
registro

attr_link: o nome do atributo que faz a ligação com a
geometria

attr_initial_time e attr_final_time: os nomes dos
atributos que possuem a data inicial e final de cada
registro
Tabelas de atributos descritivos

Tabela Estática:

Ligação direta com o objeto do layer
 Relacionamento 1 pra 1: um registro para cada objeto
 O atributo que identifica unicamente cada objeto é o
mesmo que faz a ligação com a tabela de geometria.
Layer Municipios
MUN1
MUN2
MUN3
MUN3
Municipios (tabela estática de atributos)
codigo_mun
população
nome_mun
MUN1
34000
Santa Branca
MUN2
47000
São Geraldo
MUN3
10000
Dom Pedro
unique_id e attr_link
Tabelas de atributos descritivos

Tabela Externa:

Ligação indireta com o objeto do layer
 Relacionamento 1 pra 1 OU 1 pra N
 É sempre associada a uma outra tabela estática de um
layer
Tabelas de atributos descritivos
Layer Municipios
Municipios (tabela estática de atributos)
codigo_mun população
MUN1
MUN2
MUN3
MUN3
nome_mun
MUN1
34000
Santa Branca
MUN2
47000
São Geraldo
MUN3
10000
Dom Pedro
Hospitais - tabela externa de atributos
unique_id
codigo_hosp
municipio
num_medico
HOSP1
Santa Branca
10
HOSP2
Santa Branca
12
HOSP3
São Geraldo
52
HOSP4
São Geraldo
6
HOSP5
São Geraldo
45
HOSP6
Dom Pedro
20
OBS: a tabela
externa não tem uma
ligação com a tabela
de geometria
(attr_link) e sim com
uma tabela estática
Tabelas de atributos descritivos

Tabela Estática + Externa:
codigo_mun
população
nome_mun
codigo_hosp
municipio
num_medicos
MUN1
34000
Santa
HOSP1
Santa Branca
10
MUN1
34000
Santa
HOSP2
Santa Branca
12
MUN2
47000
São Geraldo
HOSP3
São Geraldo
52
MUN2
47000
São Geraldo
HOSP4
São Geraldo
6
MUN2
47000
São Geraldo
HOSP5
São Geraldo
45
MUN3
10000
Dom Pedro
HOSP6
Dom Pedro
20
Tabelas de atributos descritivos

Tabela de Mídia

Faz a associação entre os objetos de um layer e as
mídias armazenadas em uma outra tabela
 Tem um formato pré-definido
media_layer_6 (tabela de mídia do layer de identificador igual a 6)
attr_link
unique_id
media_table_6 (tabela do banco que armazena as mídias )
Tabelas de atributos descritivos

Tabela de Eventos

Cada evento gera um novo objeto no layer
 Contém os atributos de cada evento e o tempo de
ocorrência (instante de tempo)

Ex. Crimes de BH
attr_inital_time e
attr_final_time
unique_id e attr_link
Tabelas de atributos descritivos

Tabela de Atributos Dinâmicos

A geometria do objeto é fixa (não muda com o tempo) e
os atributos variam com o tempo
 Ex. armadilhas e coletas
unique_id
attr_inital_time e
attr_final_time
attr_link
Coletas
Download

introducao_terralib_01