











Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este documento aborda métodos de acesso espacial a dados, especificamente k-d trees, grid files, quad-trees e r-trees. Os métodos de acesso espacial são utilizados para indexar grandes conjuntos de dados, geralmente definidos sobre aproximações das geometrias dos objetos. O texto discute as estruturas de árvores de pesquisa, como árvores binárias e b+, e apresenta a classe de métodos multidimensionais, que são importantes para bancos de dados espaciais. As consultas espaciais, como consulta por apontamento, consultas por região e consultas com predicados topológicos, são realizadas usando aproximações e métodos de acesso espaciais.
Tipologia: Notas de estudo
1 / 19
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Clodoveu A. Davis Jr. Gilberto Ribeiro de Queiroz
6.1 Introdução
Este capítulo aborda alguns dos métodos de acesso espacial mais tradicionais, denominados k-d trees, grid files, quad-trees e R-trees.
Métodos de acesso espacial, ou índices espaciais, são estruturas de dados auxiliares, mas essenciais para o processamento eficiente de consultas espaciais. De fato, normalmente uma consulta espacial envolve apenas uma pequena parcela do banco de dados. Neste caso, percorrer todo o banco pode ser bastante ineficiente. Portanto, um plano de execução para a consulta tipicamente começa com uma fase de filtragem, que identifica quais objetos podem satisfazer a qualificação da consulta. Esta fase depende da existência de índices espaciais, em geral definidos sobre aproximações das geometrias dos objetos.
6.2 Preliminares sobre métodos de acesso
Uma forma comum de indexarmos um conjunto de dados é através do uso de árvores de pesquisa. As mais simples e conhecidas são as árvores binárias, como: AVL, Red Black e Splay Tree (Cormen et al., 1990), que são árvores balanceadas, ou seja, todos os caminhos desde a raiz até as folhas possuem o mesmo comprimento. Essas estruturas permitem que algumas operações, como a localização de um elemento, sejam executadas em tempo logarítmico – O(log n). A Figura 6.1 ilustra a representação de uma árvore binária balanceada, onde as cidades estão organizadas segundo a ordem alfabética de seus nomes. Esse tipo de estrutura é empregado para uso em memória principal.
202 6 Métodos de acesso para dados espaciais
Figura 6.1 – Árvore binária balanceada.
No caso de grandes bancos de dados onde a memória principal pode não ser suficiente para armazenar todos os nós da árvore, é comum armazená-la em disco. Nesse caso utilizamos uma representação que procura minimizar o acesso a disco. A forma mais comum, e mais largamente empregada pelos sistemas comerciais atuais, é a representação do índice através de uma árvore B+^ (Comer, 1979). Conforme podemos observar na Figura 6.2, essa estrutura tenta minimizar o número de acessos a disco durante o processo de pesquisa agrupando várias chaves em um único nó, denominado de página.
Figura 6.2 – Índice unidimensional B-Tree. Fonte: adaptada de Garcia-Molina et al., (2001).
Em comum, tanto a árvore binária quanto a B+, são estruturas unidimensionais, isto é, elas pressupõem que a chave de pesquisa seja
204 6 Métodos de acesso para dados espaciais
6.3 k-d Tree
A k-d tree é uma árvore binária, ou seja, cada nó interno possui dois descendentes não importando a dimensionalidade k do espaço envolvido. Originalmente, esta árvore é apresentada em Bentley (1975), como uma alternativa a um problema mais genérico do que o geométrico dos bancos de dados espaciais: o de busca baseado em vários atributos.
Em um banco de dados tradicional, uma consulta como: “encontrar todos os empregados nascidos entre 1950 e 1955 que recebem entre R$3.000,00 e R$5.000,00”, poderia ser vista como uma pesquisa em duas dimensões, considerando cada atributo, neste caso data de nascimento e salário, como uma das componentes do espaço (Figura 6.4a). No caso dos sistemas de bancos de dados espaciais, essa consulta equivale a encontrar todos os pontos no interior do retângulo definido pelos intervalos (3000:5000)x(1950:1955) (Figura 6.4b).
Figura 6.4 – Busca em dois atributos (a) Interpretação geométrica da busca (b).
Dada uma chave formada por k atributos (k dimensões), onde ki é o valor da i-ésima componente da chave, a idéia básica da k-d tree é a seguinte:
k-d Tree 205
Figura 6.5 – Sedes de alguns municípios do Estado de Minas Gerais.
Assim, se adotarmos uma ordem arbitrária de entrada dos pontos correspondentes às sedes municipais, podemos construir a árvore da Figura 6.6 da seguinte forma:
k-d Tree 207
Figura 6.7 – Representação planar para as sedes da Figura 6.5.
Um dos problemas que podemos observar na k-d tree da Figura 6.6 é que ela depende da ordem em que os nós são inseridos. No pior caso, podemos acabar obtendo uma árvore completamente desbalanceada, que apresenta a mesma profundidade do número de elementos inseridos. Uma forma de contornar este problema é adotar um método que otimize a construção da árvore. Uma forma de construir a árvore mais balanceada é escolher o elemento que ocupa a posição média ao longo da componente em divisão. A Figura 6.8 ilustra uma árvore construída tomando-se o elemento central em relação à componente em cada nível da divisão.
Figura 6.8 – Representação em árvore (balanceada) para as sedes.
208 6 Métodos de acesso para dados espaciais
Na Figura 6.9, podemos observar que Itapajipe possui o mesmo número de elementos do lado esquerdo e direito e por isso foi tomada como o primeiro elemento a ser inserido na árvore da Figura 6.8. Limeira do Oeste pode ser tomada como elemento médio entre os elementos à esquerda de Itapajipe quando comparamos ao longo do eixo y.
Figura 6.9 – Representação planar para as sedes da Figura 6.5.
A pesquisa por intervalos na 2-d tree do exemplo anterior pode ser realizada da seguinte forma:
210 6 Métodos de acesso para dados espaciais
Figura 6.10 – Hashing.
O método de indexação chamado grid file (Nievergelt et al., 1984). estende o conceito de hashing para duas dimensões. Ou seja, em vez de n buckets, teremos uma grade regular que cobre todo o espaço de pesquisa. O método foi originalmente concebido para possibilitar pesquisas convencionais, como no caso do hashing, porém utilizando duas variáveis distintas. No caso geográfico, é natural imaginar quadrados sobre a superfície da Terra, que funcionam como os buckets do hashing (Figura 6.11). A partir de cada elemento da grade (que pode ser modelada na memória com o uso de uma matriz no lugar do vetor utilizado no hashing) são organizadas listas lineares contendo os identificadores dos objetos que estão localizados naquela área.
Figura 6.11 – Grid File.
A Q X
S K
V O I
Z
...
C N
1
n
4
3
2
Grid File 211
Alguns tipos de pesquisas podem ser feitas com muita facilidade utilizando grid files. Por exemplo, deseja-se saber quais pontos estão a menos de M metros de um determinado ponto P. Para isto, basta calcular as coordenadas de dois pontos auxiliares, um deles subtraindo M de ambas as coordenadas, e no outro somando:
x 1 = xP - M y 1 = yP - M x 2 = xP - M y 2 = yP - M Depois, determina-se qual é a linha e a coluna dos quadrados que contêm os pontos x 1 e x 2. Todos os pontos procurados estarão nos quadrados compreendidos entre os limites expressos pelas linhas e colunas encontradas. Naturalmente, deve-se calcular a distância de cada ponto encontrado a P, para verificar o atendimento à restrição de distância, pois a pesquisa na realidade foi feita usando um quadrilátero, e não com um círculo.
Figura 6.12 – Localização de pontos por proximidade.
P
M
(x1, y1)
(x2, y2)
Tiling 213
Esta subdivisão poderá continuar indefinidamente, de forma recursiva: basta considerar um quadrado do nível C como sendo o quadrado A1, e reaplicar o processo. Observe-se que o resultado final será uma árvore que terá um número variável de níveis, de acordo com a região geográfica: regiões mais densas formarão mais níveis, e regiões menos densas terão menos níveis.
O processamento de consultas por região (janela ou retângulo) nessa estrutura inicia-se a partir da raiz, selecionando apenas as ramificações cujos quadrados estiverem em contato com o retângulo da região. Se nenhuma estiver, todas as ramificações abaixo daquele nó são descartadas. Se alguma estiver, toda a ramificação abaixo daquele ponto é selecionada, e sucessivamente testada, até que se alcance os objetos geográficos.
6.6 Tiling
Este processo é semelhante ao anterior, com a diferença de que as subdivisões não prosseguem indefinidamente.
O processo consiste em, conhecendo-se a priori os limites geográficos da base de dados, criar camadas de “tiles”, ou ladrilhos, quadrados, de dimensões fixas. O número de camadas e a largura dos ladrilhos de cada camada são determinados pelo usuário, de modo a corresponder da melhor maneira possível à variedade de dimensões dos objetos geográficos que serão encontrados na base de dados. O número total de ladrilhos endereçáveis é limitado pelo sistema, para melhorar sua performance.
Cada objeto será associado a um ladrilho, que será o menor ladrilho que contiver inteiramente o objeto. Assim, a cada ladrilho, de cada camada, serão associados diversos objetos, formando uma lista. No momento do display, testa-se os limites da janela de visualização contra a lista de ladrilhos, selecionando aqueles que tenham pelo menos uma extremidade contida no retângulo. Os objetos associados a cada um destes ladrilhos serão, então, recuperados na base de dados para apresentação.
214 6 Métodos de acesso para dados espaciais
Camada 0: toda a base de dados
Camada 1: largura 10000
Camada 2: largura 5000
Camada 3: largura 1000
Com estes limites previamente calculados, evita-se percorrer freqüentemente uma estrutura de dados como a quad-tree, que geralmente tem que ser mantida em disco.
A Figura 6.15 ilustra a estrutura básica do tiling.
Figura 6.15 – Tiling.
6.7 R-tree
A R-tree, ou árvore-R, é uma estrutura de dados hierárquica derivada da árvore-B. As diferenças estão centradas na natureza das chaves: valores numéricos ou alfanuméricos simples, no caso das árvores-B, e pontos extremos de retângulos, no caso das árvores-R (Guttman, 1984).
O que a árvore-R busca organizar não é exatamente o contorno ou a forma gráfica do objeto, e sim o seu retângulo envolvente mínimo (minimum bounding rectangle, MBR). Este retângulo é formado a partir da observação dos limites geométricos mínimo e máximo do contorno do objeto, e é expresso pelas coordenadas dos seus pontos inferior esquerdo e superior direito (Figura 6.16). No caso de objetos puntuais, estes extremos vão coincidir com as coordenadas do próprio objeto (portanto formando um retângulo nulo), mas isto não compromete o método.
216 6 Métodos de acesso para dados espaciais
A
B
C D
E
F G
Q
I
H
J
A I E J B C D H F G
R3 R4 R5 R
R1 R
R1 R
R
R
R
R
Figura 6.17 – Árvore-R e retângulos correspondentes.
Pesquisas na árvore-R são relativamente simples de serem executadas. O único problema é que um grande número de nós pode ter que ser examinado, pois um retângulo pode estar contido em vários outros, mesmo que o objeto esteja contido em apenas um nó folha. Por exemplo, na Figura 6.17 a identificação do retângulo que contém o ponto Q deverá varrer a árvore nível a nível. Inicialmente, inspecionamos a raiz e constatamos que Q pode estar tanto em R1 quanto em R2, e portanto devemos prosseguir a pesquisa em ambas as direções no segundo nível. Pesquisando os filhos de R1, verificamos que Q só pode estar contido em R3. Continuando a pesquisa, não chegamos a conclusão alguma, uma vez que Q está dentro do retângulo D, que tem apenas uma parte dentro de R3, e não é acessado por ele. Continuando a pesquisa a partir de R2,
Leituras suplementares 217
verificamos que Q somente poderia estar dentro de R5. Pesquisando R5, encontramos D, o único MBR que contém Q efetivamente. Observe-se, no entanto, que Q pode não estar dentro do objeto cujo MBR é D: esta constatação depende ainda de um teste adicional, que verificará se o ponto pertence ao polígono do objeto, agora sim levando em consideração a geometria deste.
Existem diversas variações das árvores-R, cada uma tentando aperfeiçoar um aspecto diferente. No entanto, muitas vezes estas variações introduzem desvantagens, ou uma maior complexidade de implementação, fazendo com que a árvore-R original acabe sendo a opção mais usual.
6.8 Leituras suplementares
Uma fonte importante de leitura complementar são os trabalhos de Gaede e Günther (1998) e, mais recentemente, Vitter (2001), que apresentam uma revisão detalhada da maioria dos índices existentes.
Há inúmeras variantes de R-trees, sendo a R*-tree a mais popular (Beckmann et al., 1990). Uma comparação entre os métodos de acesso espacial mais comum pode ser encontrada em (Kriegel et al., 1990).
Por fim, as TV-trees (Lin et al., 1994) e as X-trees (Berchtold et al.,
Referências 219
SIGMOD international conference on Management of data. ACM Press, Washington, 1981. p.
SAMET, H., 1984. The Quadtree and Related Hierarchical Data Structures. ACM Computing Surveys, v. 16, p. 187-260. VITTER, J.S. External Memory Algorithms and Data Structures. ACM Computing Surveys, v.33, n. 2, p. 209-271, 2001.