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