ESTRUTURAS DE DADOS ESPACIAIS Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM Estrutura de Dados II
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 2 Dados Espaciais x Dados Escalares Multidimensionais x Unidimensionais Noção de Forma x pontos ou tuplas Ordenação parcial x Ordenação total Relações geométricas x Relações sobre grandeza Frequentemente, os dois tipos são combinados em: Sistemas de Informação Geográficos Computação Gráfica
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 3 Espaço de dados Qualquer tipo de dado supõe um espaço onde ele está imerso Modelagem de dados requer que se escolha um espaço apropriado Frequentemente, mais de uma opção é possível Exemplo: Cidade Espaço de cadeias de caracteres Código numérico (ex. CEP) Ponto do planisfério (Latitude e Longitude) Conjunto de pontos (ex. delimitado por um polígono) Cada espaço é mais conveniente para um ou outro tipo de processamento
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 4 Dimensão Dados escalares (não espaciais) são modelados como pontos em um espaço unidimensional Dados espaciais são modelados como pontos ou conjuntos de pontos em espaço multidimensional
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 5 Relações entre dado e espaço Localização Existe uma cidade chamada São Paulo? Existe uma cidade em 39 o 29 30 S, 65 o 50 20 W? Vizinhança Qual a cidade com nome subsequente a São Paulo? Qual a cidade mais próxima de São Paulo? Noção de métrica Extensão (Dados Espaciais) Qual o perímetro de São Paulo? Qual a área de São Paulo?
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 6 Uso de ordenação Dados escalares É possível estabelecer uma ordem total Ordenação facilita operações de localização e vizinhança Dados espaciais É impossível estabelecer uma ordem total sem romper com relações de vizinhança A imposição de uma ordem total é conhecida como linearização do espaço. Exemplo: ordenar um conjunto de pontos lexicograficamente Ordenação parcial, no entanto, pode facilitar diversas operações Estruturas de dados espelham ordenação
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 7 Estruturas de dados para dados escalares Visam essencialmente facilitar operações de localização e de vizinhança Exemplos: Tabelas organizadas por cálculo de endereço (Hash Tables) Usadas em localização de dados Podem ser baseadas em memória ou disco Árvores binárias balanceadas Localização de dados: O(log n) Vizinhança: O(log n) Primariamente baseadas em memória principal
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 8 Estruturas de dados para dados escalares Árvores B e suas variantes Localização de dados: O(log n) Vizinhança: O(log n) Otimizadas para utilização em memória secundária (disco) Asseguram alta taxa de utilização (garantidamente > 50%)
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 9 Idéia geral de estruturas de dados espaciais Precisam suportar grande número de operações Não existe estrutura de dados espacial que garantidamente seja eficiente para atender todos os tipos de operação Aplicações em bancos de dados espaciais: Utiliza-se estruturas de dados gerais que têm eficiencia razoável no caso médio. Ex.: PMR-quadtrees, Grid files, R-trees e suas variantes Aplicações em CAD, Computação gráfica: Frequentemente estruturas de dados gerais dão bons resultados Em casos especificos, estruturas de dados especializadas podem ser indicadas.: Ex.: Diagramas de Voronoi
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 10 Bancos de Dados Espaciais Um dos requisitos fundamentais para os sistemas de bancos de dados atuais e saber manipular dados espaciais: SIG (Cartografia); CAD (Computer-Aided Design); Visão Computacional (Computer Vision); Robótica; Bancos tradicionais, em que um registro com k atributos corresponde a um ponto no espaço k-d; Bancos de dados temporais, onde o tempo pode ser considerado uma dimensão a mais; Bancos de dados científicos, com dados espaço-temporais.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 11 Banco de Dados Espaciais Necessidade de indexação dos dados espaciais de modo a reduzir o tempo de acesso aos mesmos Métodos de indexação tradicionais não são indicados para dados espaciais Hash: não atende a consultas de faixa (range queries) B-Tree: trata apenas uma dimensão
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 12 Como Processar este tipo de consulta de forma eficiente?
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 13 Como Processar este tipo de consulta de forma eficiente? Para esses sistemas existe uma classe de métodos conhecidos como métodos de acesso multidimensionais.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 14 Considere 2 tipos de consultas: Consultas de pontos Consultas de intervalo Consultas
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 15 De 1 para 2 dimensões Consultas de pontos: recupera as tuplas com referência espacial localizada numa dada coordenada
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 16 De 1 para 2 dimensões Consultas de intervalos: recupera todas as tuplas com referências espaciais dentro de uma dada faixa. A faixa normalmente é uma área retangular especificada pelas coordenadas de dois vértices opostos ou um círculo identificado pelo centro e raio.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 17 De 1 para 2 dimensões Dados espaciais são expressos no espaço Euclidiano Por exemplo, considere a tabela a seguir
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 18
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 19 Exemplos de consultas De 1 para 2 dimensões 1. (Não Espacial): recupere a localização de Trentham Gardens 2. (consulta de ponto espacial): recupere qualquer local em (37, 43) 3. (consulta de intervalo espacial): recupere qualquer local com vértices sudoeste e nordeste (20,20), 40,50) respectivamente
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 20 De 1 para 2 dimensões Algoritmo linear para consulta de ponto 1. Open Potteries file 2. while existem registros a examinar do 3. Leia o próximo registro r 4. if r.east = 37 then 5. if r.north=43 then 6. Recupere o nome do local deste registro
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 21 De 1 para 2 dimensões Algoritmo linear para consulta de intervalo 1. Open Potteries file 2. while existem registros a examinar do 3. Leia o próximo registro r 4. if r.east está na faixa [20,40] then 5. if r.north está na faixa [20,50] then 6. Recupere o nome do local deste registro
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 22 De 1 para 2 dimensões Desempenho dos algoritmos lineares ficam ruins a medida que a tabela de consulta cresce Precisamos indexar os dados. Usando um índice convencional de BD, poderíamos indexar as colunas East e North obtendo a tabela a seguir:
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 23 Índice East Site North Site 14 Newcastle Museum 00 Trentham Gardens 17 Westport Lake 23 Gladstone Pottery Museum 18 New Victoria Theater 25 Beswick Pottery 20 Trentham Gardens 36 Coalport Pottery 31 Waterworld 39 Minton Pottery 31 Royal Doulton Pottery 43 Spode pottery 36 Minton Pottery 44 Park Hall Country Park 37 Spode Pottery 55 New Victoria Theater 41 City Museum 58 Newcastle Museum 53 Ford Green Hall 62 City Museum 54 Coalport Pottery 65 Waterworld 66 Beswick Pottery 87 Royal Doulton Pottery 74 Gladstone Pottery Museum 92 Westport Lake 86 Park Hall Country Park 99 Ford Green Hall
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 24 De 1 para 2 dimensões Consulta de ponto podemos percorrer o índice east para localizar os locais que têm primeira coordenada 37. Daí vai-se aos dados para ver das tuplas localizadas quais que têm segunda coordenada igual a 43. (Spode Pottery) Consulta de intervalo pode-se fazer uma busca por faixa [20,40] no primeiro índice, que resulta numa lista de ponteiros para o arquivo de dados. Então, para cada ponteiro na lista, acessa-se sua tupla e verifica-se se a segunda coordenada está na faixa [20,50]; caso positivo, a tupla é retornada ao resultado
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 25 De 1 para 2 dimensões Problemas com indexação convencional: Apenas um índice é usado por vez. Precisamos de índices multidimensionais que consigam tirar proveito do espaço, principalmente em consultas de intervalos. As tuplas vão estar ordenadas tuplas que estão próximas no espaço deverão estar próximas no índice
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 26 Estrutura de Dados Espaciais Operação comum com dados espaciais é a pesquisa de objetos que estão numa determinada área Ex.: Encontre todos os hospitais que estão a no máximo 20Km deste ponto Algumas estruturas de dados propostas: Quad-trees Grid k-d-tree r-tree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 27 Quad Tree Propriedades gerais Extensão multidimensional da árvore de busca binária Pontos são armazenados em nós internos Depende da ordem de inserção dos pontos Para N pontos inseridos segundo uma distribuição randômica uniforme, a altura esperada da árvore é O(log N) Estrutura própria para armazenamento em memória Pode ser usada para representar: Pontos, polígonos, volumes, imagens
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 28 QuadTree Acelera o acesso a dados num plano 2d Técnica bastante simples O espaço de busca é recursivamente decomposto em quadrantes até que o número de retângulos sobrepondo cada quadrante é menor do que a capacidade da página. Os quadrantes são nomeados: Noroeste, Nordeste, Sudeste e Sudoeste
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 29 Quadtree O índice é representado como uma árvore quaternária (cada nó interno tem 4 filhos, um por quadrante) Cada retângulo aparece em todos os quadrantes folhas que o sobrepõem
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 30 Quadtree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 31 Quadtree Consulta de ponto (point query) é simples em quad tree. Um único path (caminho) é percorrido da raiz até a folha Em cada nível, é escolhido um dos quadrantes que contém o ponto da consulta
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 32 Exemplo de Consulta Ponto P Quadtree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 33 Quadtree Inserção em quadtrees um retângulo será inserido em cada quadrante folha que o sobrepõe então todos os caminhos para as folhas que sobrepõem o retângulo a ser inserido são percorridos a página P associada com cada folha é lida Se P não está cheio, então insere o novo retângulo
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 34 Quadtree Inserção em quadtrees Se P estiver cheio, O quadrante deve ser dividido em quatro quadrantes e 3 novas páginas são alocadas As entradas da página antiga mais a página nova são divididas nas quatro páginas Uma entrada E é adicionada a toda página cujo quadrante intercepta E
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 35 Inserção em Quadtree Quadtree Como ficará a árvore após as inserções de 15 e 16?
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 36 Quadtree Deleção de pontos Idéia do algoritmo análogo em árvores binárias não pode ser usada: nem sempre existem nós-folha que podem substituir o nó sendo deletado Solução ingênua : reinserir todos os pontos da subárvore cuja raiz é o nó deletado Solução melhorada: descobrir um bom nó-folha candidato e reinserir apenas os nós que tornariam a quadtree inválida
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 37 Quadtree Deleção de pontos A escolha do ponto substituto 4 candidatos naturais (1 em cada quadrante) Para achar o candidato do quadrante NW de P, caminhar sempre para SE do filho NW de P Para escolher Q, o melhor dos 4 candidatos: Critério 1: escolhendo Q nenhum dos outros 3 candidatos precisariam ser reinseridos Problema de deleção pode ser aliviado com o uso de uma pseudo-quadtree Pontos são armazenados nas folhas Nós internos são pontos que não fazem parte da massa de dados
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 38 Quadtree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 39 Quadtree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 40 Quadtree: Variantes Existem diversas variantes da Quad tree: MX-CIF Quad tree: objetos com extensão (retângulos); PM-Quad trees: Mapas; Linear-Quad trees (Space Filling Curves): mapeamento de um espaço dimensional superior (ex: 2D) para um espaço inferior (1-D); Estratégia empregada pela Oracle, nas versões anteriores a 10g.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 41 Bancos de Dados com Estruturas de Dados Espaciais
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 42 Aplicações Quadtree A decomposição da quadtree é uma técnica simples usada para obter uma representação da imagem em diferentes níveis de resolução. Esta representação pode ser útil para uma variedade de opções para processamento de imagens e algoritmos de compressão de imagens. Algumas aplicações utilizando a quadtree: 3D Studio MAX 3 (um dos mais populares softwares para animação e renderização de imagens 3D): utiliza a quadtree para fazer o controle da profundidade de cor para sombras RayTrace. Codec para Video-Phone: A última meta de uma baixa taxa de codificação da imagem é reduzir a redundância, em ambos os domínios (espaço e temporal), e assim reduz a taxa de transmissão.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais Aplicações Quadtree 43 Corrigir deformações de cores nas fotos. Como por exemplo, quando se tira uma foto e a pessoa está com os olhos avermelhados, podendo isso ser corrigido utilizando a quadtree. Muito utilizado na medicina para ecografias (facilitando a localização de tumores em um determinado órgão do corpo). Compactação de imagens.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 44 Vantagens Quadtree A vantagem mais óbvia no uso de quadtrees na codificação de imagens é que o gráfico pode ser armazenado de uma forma compacta. Facilidade para rotacionar imagens, principalmente para rotações em ângulos de 90º graus. Sendo necessário para isso a utilização de outro tipo de caminhamento.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 45 Vantagens Quadtree Em comparação com outras árvores, como a árvore binária, a quadtree fornece uma estrutura de árvore num formato muito mais compacto e robusto. Atualizações constantes não afetam a performance da quadtree, o desempenho da árvore R é muito afetada por atualizações
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 46 Desvantagens Quadtree Se a imagem tem grandes áreas com uma única cor (como por exemplo: o preto ou branco) haverá um grande ganho em espaço e uma árvore bastante compacta, mas se a imagem tiver grandes áreas com diferentes cores (como por exemplo: azul, amarelo, verde, etc...) a árvore resultante será muito maior não proporcionando um ganho considerável em espaço.
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 47 Desvantagens Quadtree Um considerável consumo de CPU quando se trabalha com imagens complexas (diversas cores, formas irregulares como curvas e triângulos, etc) na geração da árvore. Não há balanceamento. Somente duas dimensões podem ser indexadas. A R-tree trabalha com 4 dimensões
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 48 Simulação Quadtree http://closure-library.googlecode.com/git/closure/goog/demos/quadtree.html