Introdução ao
Geoprocessamento
Implementação do Operador Sobreposição de Temas
no Ambiente TerraLib / TerraView
Douglas Messias Uba
Roteiro da Apresentação


Introdução
Operações Espaciais



TerraLib



Sistemas de BD Geográficos
Dados Vetoriais
Operadores de Conjunto
Operador Sobreposição de Temas
Desenvolvimento

TerraView / Plugins
Introdução

Sistemas de Informação Geográficas

Funcionalidades


Operações Espaciais
Manipulação, seleção e análise
Exemplo

Consulta:

Calcular a área de desmatamento dentro
de cada reserva indígena
X
limites das reservas indígenas
mapa de desmatamento
Exemplo
Objetivos

Implementação do operador espacial
sobreposição de temas

TerraLib


Operadores que combinam geometrias
União, Interseção e Diferença
Plugin para o TerraView

Interface
Motivação

Contribuir para o desenvolvimento da
biblioteca TerraLib


Operador espacial ainda não implementado
Conhecimentos
Operações Espaciais em BD
Geográficos

Dado Espacial

Componentes:



localização geográfica
atributos descritivos
Modelo de Dados

Matricial


superfície contínua
Vetorial

entidades discretas
Dados Vetoriais

3 classes (Engenhofer, 1994)

operações unárias



operações binárias
relações binárias


propriedades espacial de uma geometria
Relação espacial entre duas geometrias
... 7 classes (Rigaux et al., 2002)
Operações binárias com resultado espacial
Dados Vetoriais

Operações de conjunto



União
Interseção
Diferença / Diferença Exclusiva
TerraLib

Biblioteca de classes escritas em C++


construção de aplicativos geográficos
Kernel




armazenamento das geometrias e
atributos
projeção cartográfica
operadores topológicos e direcionais
Manipulação de imagens
TerraLib

Functions


utilizam as estruturas básicas do kernel
Aplicação
Modelo de Geometrias

TeGeometry

Construídas a partir de coordenadas 2D


TePoint, TeLine, TePolygon


TeCoord2D
TeGeomSimple / TeGeomComposite
TePointSet, TeLineSet e
TePolygonSet
Modelo de Geometrias
Operações de Conjunto - TerraLib


Implementados utilizando o algoritmo
de Margalit e Knott (1989)
Kernel da TerraLib

TeOverlay
bool TeUnion(TePolygonSet& redPols, TePolygonSet& bluePols,
TePolygonSet& polsOut);
bool TeIntersection(TePolygonSet& redPols, TePolygonSet& bluePols,
TePolygonSet& polsOut);
bool TeDifference(TePolygonSet& redPols, TePolygonSet& bluePols,
TePolygonSet& polsOut);
Operações de Conjunto - TerraLib

Operação


dois polígonos simples podem gerar
diversos polígonos como resultado
buracos
Sobreposição de Mapas
TerraLib


Implementados sobre os operadores
presentes na classe TeOverlay
TeGeoProcessingFunctions



Layer


Geometrias + Atributos
+ alto nível  Functions
coleção de objetos geográficos (contexto)
Mapa


representação gráfica de um conjunto de objetos
do layer
TerraLib  Tema
Sobreposição de Mapas

Interseção

preserva apenas as entidades que sejam
comum aos dois
Sobreposição de Mapas

Sobreposição de Temas

não há recorte
ArcGIS: UNION
Pseudo-Código
Sobreposição de Temas(Tema A, Tema B) : Layer C
início
para cada Ai em A faça
selecionar os polígonos Bj candidatos a interceptarem Ai
para cada Bj faça
reportar(Interseção(Ai, Bj), atributos de Ai + Bj)
fim - para
BjUnido = união de todos os Bj
reportar(Diferença(Ai, BjUnido), atributos de Ai + (nulo nos
atributos de B))
fim - para
para cada Bj em B faça
selecionar os polígonos Ai candidatos a interceptarem Bj
AiUnido = união de todos os Ai
reportar(Diferença(Bj, AiUnido), (nulo nos atrinutos de A) +
atributos de Bj)
fim - para
fim
Voltando... Exemplo
X
limites das reservas indígenas
mapa de desmatamento
Desenvolvimento


C++, TerraLib 3.2.0, .NET 2003,
TerraView 3.2.0
Functions

TeGeoProcessingFunctions.cpp
bool sobreposicao(
TeLayer* newLayer,
TeTheme* theme,
TeTheme* themeOverlay,
TeSelectedObjects selObj,
TeSelectedObjects selObjOverlay,
TeAsciiFile* logFile
);
Importante

Remapeamento de cada polígon para a
mesma projeção


Caso os temas possuam projeções
diferentes
TeVectorRemap
if(!((*projTheme) == (*projOverlay))){
TePolygon pOut;
TeVectorRemap(polyTheme, projTheme, pOut, projOverlay);
pOut.objectId(polyTheme.objectId());
polyTheme = pOut;
}
TerraView / Plugins

TerraView


aplicativo geográfico construído sobre a
biblioteca TerraLib
Plugins



módulos de software construídos como
bibliotecas de ligação dinâmica
TerraLib / TerraView (fontes)
QT 3.3.4 ou superior

sistema multiplataforma para o
desenvolvimento de programas de interface
Funciona?!

...
Conclusão

Operações Espaciais


Dados Vetoriais
Operadores de Conjunto


Contribuição para o desenvolvimento da
biblioteca TerraLib



Sobreposição de Mapas
OO / Documentação
Modelo Conceitual  alto nível de abstração
Plugins

Adição de novas funcionalidades de forma simples
Download

Slides