Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio...

48
Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1

Transcript of Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio...

Page 1: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Sistemas de Informações Geográficas

Unidade 3.2: Estrutura de Dados Espaciais

Prof. Cláudio Baptista

2003.1

Page 2: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2 Estrutura 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

Page 3: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2 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

Page 4: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2 Estrutura de Dados Espaciais

Algumas estruturas de dados propostas: Grid quad-trees k-d-tree r-tree

Page 5: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

Acelera o acesso a dados num plano 2dTécnica bastante simplesO 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

Page 6: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

O índice é representado como uma árvore quaternária (cada nó interno tem 4 filhos, um por quadrante)

Cada folha é associada a uma página de disco

Cada retângulo aparece em todos os quadrantes folhas que o sobrepõem

Page 7: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

R

a[8,11,12,13] [3,4,7] d [9,10,13]

b c d

[1,2,5,6] [5,6,14] [2,3,6] [6]x y z t

Page 8: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad tree

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

Page 9: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

R

a[8,11,12,13] [3,4,7] d [9,10,13]

b c d

[1,2,5,6] [5,6,14] [2,3,6] [6]x y z t

P

Exemplo de Consulta Ponto P

Page 10: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

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

Page 11: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

Inserção em quadtrees (cont) 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.MBR (Minimum Bounding Rectangle)

Page 12: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.1 Quad trees

1 5 14

62

3

812

11

13

9

107

4

x y a

tz

b

c d

Inserção em Quadtree

15

16

m n

p q

Como ficará a árvore após as inserções de 15 e 16?

Page 13: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 k-d treeUsada para representar pontosárvore kd particiona o espaço em célulasé uma árvore de busca binária, reside em memória principal, de forma que os nós

interiores em cada nível contêm valores referentes a um único eixo, X ou Y, alternadamente

as folhas apontam para páginas físicas

várias folhas podem apontar para a mesma página física

Page 14: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 k-d tree

o valor armazenado na raiz divide o espaço em dois subespaços através de uma reta perpendicular ao eixo dos X, digamos;

o valor armazenado no filho à esquerda (ou direita) por sua vez divide o subespaço à esquerda (ou direita) em dois subespaços através de uma reta perpendicular ao eixo dos Y ; e assim por diante, alternando as dimensões.

Page 15: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-D-Tree

Page 16: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-D-Tree

A

B

C

D

Árvore para figura anterior

Page 17: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Outro ExemploSejam as cidades com coordenadas

Cidade (X,Y)

Mossoró (19,45)Natal (40,50)Campina Grande (38,38)João Pessoa (54,40)Monteiro (4,4)

Page 18: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 19: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Inserção de Mossoró

Inserção de Natal

Mossoró (19,45)

Mossoró (19,45)

Natal (40,50)

Page 20: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 21: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 22: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Inserção de Campina

Campina (38,38)

Mossoró (19,45)

Natal (40,50)

Page 23: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 24: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Inserção de João Pessoa:

Campina(38,38)

Mossoró (19,45)

Natal (40,50)

JP(54,40)

Page 25: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 26: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Inserção de Monteiro:

Campina(38,38)

Mossoró (19,45)

Natal (40,50)

JP(54,40)

Monteiro(4,4)

Page 27: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.2 K-d Tree

Monteiro

Campina GrandeJoão Pessoa

NatalMossoró

Page 28: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

É uma árvore similar a uma B+-tree, com índices para dados nas folhas

Nós correspondem à páginas de discoA estrutura é projetada de forma que uma

pesquisa espacial requer visitar um número pequeno de nós

Um BD espacial consiste de tuplas representando objetos espaciais, onde cada tupla possui um identificador

Page 29: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Nós folhas contêm entradas da forma: (R, TId) Onde: R contém o retângulo que encobre a área

da tupla identificada por TId. Este retângulo é conhecido por Minimum

Bounding Box ou Minimum Bounding Rectangle

Ex.

Page 30: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Nós não-folhas contêm entradas da forma: (R, Filho) Onde R é o retângulo que envolve todos os

retângulos dos descendentes deste nó e Filho é o endereço do nó filho

Page 31: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Definição: Sejam M e m o número máximo e mínimo de entradas de um nó respectivamente, tal que m <= M/2 Uma R-tree satisfaz às seguintes propriedades: P1. Cada nó contém entre M e m entradas, exceto a

raiz P2. Para cada nó folha (R, TId), R é o menor retângulo

que espacialmente contém os objetos espaciais n-dimensionais representados pela tupla TId

Page 32: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Definição (cont) P3. Para cada entrada (R, filho) num nó não

folha, T é o menor retângulo que espacialmente contém os retângulos descendentes

P4. O nó raiz tem pelo menos dois filhos a menos que seja um nó folha

P5. Todas as folhas aparecem num mesmo nível

Page 33: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Page 34: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Page 35: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

PointQuery (consulta ponto)RTPointQuery (p: Point): set (oid)begin

result = {};// Passo 1: Atravessar a árvore da raiz, e computar // SL, o conjunto de folhas cujo TId contém P SL = RTTraversal(root, P);// Passo 2: percorra as folhas e acrescente ao // resultado àquelas que contiverem P for each L in SL do

// Percorra as entradas da folha L

for each e in L doif (e.mbb contém P) then result += e.oid;

return result;end

Page 36: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

PointQuery (consulta ponto)

RTTraversal(oid: Node, P:point) : set of folhasbegin

result = {};// Obtém a página N = readPage(oid);if (ehFolha(N)) return N;

// Scan as entradas de N e visitar àquelas que contém Pfor each e in N do

if (e.mbb contém P) then result += RTTraversal(e.oid, P);

return result;end

Page 37: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Inserção A árvore é percorrida top-down, a partir da raiz. Em

cada nível, verifica-se qual mbb contém o mbb do objeto a ser inserido e desce naquela sub-árvore

Caso não exista nenhum nó não folha que contenha o objeto a ser inserido, então um nó é escolhido para ter seu mbb estendido de forma a conter o objeto a ser inserido. O nó escolhido será aquele que precisa crescer menos seu mbb.

O processo é repetido até se encontrar um nó folha.

Page 38: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Inserção Se o nó folha não estiver cheio, uma nova

entrada [mbb, oid] é adicionada à página associada com a folha. Observação: se houver crescimento no mbb da folha, este deve se progagar para cima na árvore.

Se o nó folha f estiver cheio, uma divisão de nó ocorrerá: uma nova folha f’ é criada, e M+1 entradas são distribuidas entre f e f’.

Page 39: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

InserçãoInserir (e: Nodo)begin

// Inicializa a busca pela raiz nodo = raiz;// Escolha um caminho descendo para folhawhile (nãoEhFolha(nodo)) do

nodo = EscolherSubÁrvore(nodo, e);//Insira na folhaInserirEmFolha(nodo, e);// Divide e ajusta a árvore se a folha estiver cheia, // senão ajusta o caminhoif (ehCheio(nodo)) then

DividirEAjustar(nodo);else AjustarCaminho(nodo);

end

Page 40: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Inserção

A função EscolherSubÁrvore(node, e) pega a entrada do node cujo node.mbb contém e.mbb ou precisa de menor crescimento

A função AjustarCaminho(node) propaga o crecimento do mbb para cima na árvore. Este processo pára quando não precisar mais fazer crescimento ou se alcançar a raiz. Esta função está descrita a seguir.

Page 41: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Inserção

AjustarCaminho (nodo: Node)begin

if (ehRaiz(nodo)) return;//Encontrar o pai do nodopai = getPai(nodo);// Ajuste a entrada do nodo no paiif (AjustarEntrada(pai, nodo)) then

// Entrada foi modificada, ajuste o caminho // para o paiAjustarCaminho(pai);

end

Page 42: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

InserçãoDividirEAjustar (nodo: Node)begin

//Cria um novo nodo e distribui as entradasnovoNodo = Dividir(nodo);if (ehRaiz(nodo)) then

CriarNovaRaiz(nodo, novoNodo);else// Obter pai do nópai = getPai(nodo);//Ajustar entrada do nodo e seus paisAjustarEntrada(pai, nodo)// Inserir novo nodo no paiInserirNodo(pai, novoNodo);if (ehCheio(pai)) then

DividirEAjustar(pai);else

AjusteCaminho(pai);end

Page 43: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Inserção

A função AjustarEntrada(pai, filho) compara pai.mbb e filho.mbb. Se for preciso o pai.mbb é estendido e a função retorna TRUE, caso contrário retorna FALSE

Page 44: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-TreeDivisão de Nó

Para adicionar uma nova entrada a um nó cheio é necessário dividir as entradas em dois nós

A divisão deve ser feita de modo que seja improvável que ambos nós sejam examinados em pesquisas subsequentes

Uma vez que a decisão de visitar um nó depende se seu retângulo sobrepõe a área sendo pesquisada, a área total dos dois retângulos deve ser minimizada

Page 45: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

3.2.3 R-Tree

Veja que a área do Bad Split é muito maior do que a área de Good Split

Page 46: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Remoção

A remoção é feita em 3 passos: Encontrar o nodo folha F que contém a entrada e Remover e de F Reorganizar a árvore se houver underflow.

Obs.: Uma abordagem simples na reorganização é remover o nodo inteiro e re-inserir as m-1 entradas restantes.

Page 47: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Remoção

Remoção (e: Objeto)begin

//Encontrar a folha contendo eF = EncontrarFolha(e);// Remover entradas e reorganizar árvore// o resultado é um conjunto de nodos QQ = Reorganizar(F,e);// Reinserir as entradas dos nodos de QReinserir(Q);

end

Page 48: Sistemas de Informações Geográficas Unidade 3.2: Estrutura de Dados Espaciais Prof. Cláudio Baptista 2003.1.

Remoção

Reorganizar (N: nodo, e: objeto): {objetos de nodo}begin

Q = {}; // conjunto de nodos//Remover e de NN = N - e;if (not ehRaiz(N)) then

if (N.numNodos < m) thenQ = Q U N;// Obtém o pai e reorganiza-oF = getPai(N);

Q = Q U Reorganizar(F, entrada de N em F)else// N foi modificado: ajuste o caminho

AjustarCaminho(N); end