ESTRUTURAS DE DADOS ESPACIAIS - decom.ufop.br · resulta numa lista de ponteiros para o arquivo de...
Transcript of ESTRUTURAS DE DADOS ESPACIAIS - decom.ufop.br · resulta numa lista de ponteiros para o arquivo de...
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
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 2
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 3
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 4
Relações entre dado e espaço • Localização
• Existe uma cidade chamada “São Paulo” ?
• Existe uma cidade em 39o29’30” S, 65
o50’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 5
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 6
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 7
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 8
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 9
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 10
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 11
Como Processar este tipo de consulta de
forma eficiente?
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
Para esses sistemas existe
uma classe de métodos
conhecidos como métodos de
acesso multidimensionais.
Consultas
• Considere 2 tipos de consultas:
• Consultas de pontos
• Consultas de intervalo
Universidade Federal de Ouro Preto - Estruturas de
Dados II - Estrutura de Dados Espaciais 14
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 15
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 16
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 17
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 18
De 1 para 2 dimensões
• Exemplos de consultas
• 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 19
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 20
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 21
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 22
Índice
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 23
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
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 24
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 25
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 26
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 27
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 28
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 29
Quadtree
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 30
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 31
Quadtree
• Exemplo de Consulta Ponto P
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 32
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 33
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 34
Quadtree
• Inserção em 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 35
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 36
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 37
Quadtree
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: 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 40
Bancos de Dados com Estruturas de
Dados Espaciais
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 41
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 42
Aplicações Quadtree
• 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 43
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 44
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 45
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 46
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 47
Simulação Quadtree
• http://closure-library.googlecode.com/git/closure/goog/demos/quadtree.html
Universidade Federal de Ouro Preto - Estruturas de Dados II - Estrutura de Dados Espaciais 48