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