Professional Documents
Culture Documents
Espaciais
Processamento Geomtrico
Bancos de Dados Espaciais
Sistemas de Informaes
Geogrficos (GIS)
Claudio Esperana
Objetivos do Curso
O
O
O
O
O
Multidimensionais x Unidimensionais
Noo de Forma x pontos ou tuplas
Ordenao parcial x Ordenao total
Relaes geomtricas x Relaes sobre grandeza
Frequentemente, os dois tipos so combinados em:
Sistemas de Informao Geogrficos
CAD
Computao Grfica
Espao de dados
est imerso
Modelagem de dados requer que se escolha um
espao apropriado
Frequentemente, mais de uma opo possvel
Exemplo: Cidade
Espao de cadeias de caracteres
Cdigo numrico (ex. CEP)
Ponto do planisfrio (Latitude e Longitude)
Conjunto de pontos (ex. delimitado por um
polgono)
Cada espao mais conveniente para um ou outro
tipo de processamento
Dimenso
Dimenso (cont.)
O Localizao
Existe uma cidade chamada So Paulo ?
o
o
Existe uma cidade em 39 2930 S, 65 5020
W?
O Vizinhana
Qual a cidade com nome subsequente a So
Paulo?
Qual a cidade mais prxima de So Paulo?
O Noo de mtrica
O Extenso (Dados Espaciais)
Qual o permetro de So Paulo?
Qual a rea de So Paulo?
Uso de ordenao
O Dados escalares
possvel estabelecer uma ordem total
Ordenao facilita operaes de localizao e
vizinhana
O Dados espaciais
impossvel estabelecer uma ordem total sem
romper com relaes de vizinhana
A imposio de uma ordem total conhecida
como linearizao do espao.Exemplo: ordenar
um conjunto de pontos lexicograficamente
Ordenao parcial, no entanto, pode facilitar
diversas operaes
O Estruturas de dados espelham ordenao
O Valores escalares
Inteiros de preciso fixa
O representao exata
O problema de discretizao (quantizao)
Inteiros de preciso varivel
O utilizam alocao dinmica de memria
O manipulao atravs de biblioteca (lento)
Ponto flutuante (simples / dupla preciso)
O representao inexata de nmeros reais
O sujeitos a problemas de preciso
Nmeros racionais (frao)
O Fraes (espao = 2 inteiros de preciso
fixa/varivel)
O Manipulao atravs de biblioteca
O Problema de unicidade (infinidade de
fraes c/ mesmo valor)
O Pontos e vetores
2 valores escalares
No confundir os dois
O Ponto denota posio
O Vetor denota deslocamento
O Usar programao geomtrica
P1
V
P2
V
P3
P1 + V = P2
P2 - P1 = V
P1 + 2V = P3
O Retas
Representao implcita
O ax+by+c=0
O 3 valores escalares
O possvel substituir 1 valor por um flag,
mas complica a representao
Representao paramtrica
O (x,y) = P + t V
O t o parmetro que permite caminhar
sobre a reta
O 4 valores escalares
O possvel substituir V por um ngulo, mas
complica a representao
Converso entre representaes
O Exerccio
O Segmentos de reta
Dois pontos (extremidades)
Representao paramtrica
O Assumir intervalo t = [0,1]
O Retngulos alinhados com os eixos coordenados
Usados extensivamente em estruturas de dados
espaciais
O Parties do espao
O Caixas Limitantes (bounding boxes)
Pontos extremos (min_x, min_y) (max_x,
max_y)
O max_x >= min_x e max_y >= min_y
Ponto mnimo e vetor extenso (min_x,
min_y)(tam_x,tam_y)
O tam_x e tam_y >= 0
O Polgonos
Usados para aproximar regies
Podem ser simples ou complexos
O Simples: topologicamente homeomorfos a
um disco
O Complexos: Podem possuir auto-intersees
e buracos
Simples
Auto-interseo
Buraco
O Polgonos (cont)
Lista de vrtices (pontos)
O Muitos algoritmos requerem uma circulao
predeterminada (sentido horrio ou antihorrio)
O Importante garantir (implicita ou
explicitamente) que primeiro vrtice =
ltimo vrtice
v3
v2
v4
v5
v1=v7
(sentido horrio)
v6
O Polgonos (cont.)
Polgonos complexos podem ser representados
por listas de vrtices inserindo-se novos vrtices
e/ou arestas
v3
v4
v2=v5
v6
v1=v7
v9
v2=v8
v6
v5
v3=v7
v4
v1=v11
v10
O Polgonos (cont.)
Triangulao
O Conjunto de tringulos que se interceptam
apenas segundo arestas e cuja unio
idntica ao polgono
O Poligono c/ N vrtices = N-2 tringulos
O Facilita uma srie de algoritmos
O Polgono pode ser triangulado em O(N)
v2
v5
v4
v3=v10
v6
v8
v7
v1=v9
contm(A,B): se A contm B
A B
O distncia(A,B) ou (,)
depende de uma mtrica (a,b)
( A, B ) =
min
a A,b B
(a , b)
E ( a , b) =
(a x b x ) + (a y b y )
2
( a , b ) = |a x b x | + |a y b y |
( a , b ) = max |a x b x | , |a y b y |
O distncia(A,B) (cont.)
lugar geomtrico de todos os pontos mesma
distncia de um dado ponto p caracterstica da
mtrica
Manhattan
Euclideana
p
Tabuleiro
de Xadrez
O Propriedades integrais
Permetro (comprimento da borda)
rea
Volume (3D)
Centro de massa (Centride)
O Operaes morfolgicas
Dilatao
Contrao
O Operaes booleanas
Unio
Interseo
Diferena
Caixas Limitantes
O Interseo
A B MBR(A) MBR(B)
MBR(A) MBR(B)= A B =
A MBR(B)= A B =
A B MBR(A) MBR(B)
A B A MBR(B)
O Distncia
(,) (MBR(A), MBR(B))
(,)
min aF(MBR(A)), bF(MBR(B)) { max(a,b) },
onde F(MBR(A)) e F(MBR(B)) so faces das
caixas limitantes de A e de B e max (S,T) a
distncia mxima entre os conjuntos S e T:
max (S,T) = max sS,tT { (s,t) }
(propriedade ligada ao fato que toda face de
uma caixa limitante contm ao menos um ponto
do conjunto limitado)
O Regras gerais
Usar testes preliminares contra caixas limitantes
se esses testes forem mais simples do que os
testes de interseo propriamente ditos (ex.
testes entre polgonos)
Procurar discernir entre interseo com o
interior e interseo com a fronteira (predicado
toca(A,B))
Usar classificao de ponto contra semi-espaos
para diagnstico precoce de no-interseo
Usar aritmtica inteira sempre que possvel
Usar estruturas de dados complicadas apenas
como ltimo recurso
O Ponto
P Q P x = Qx P y = Qy
O Reta
Seja L dado por a . x + b . y + c = 0
P L a . Px + b . Py + c = 0
O Segmento de Reta
Testar P contra a reta de suporte
Seja S dado parametricamente por Q + tV,
onde 0 t 1
Calcular tx ou ty , correspondentes interseo
do segmento com as retas x = Px ou y = Py
tx ou ty ? Escolher baseado no maior entre Vx e
Vy
O Retngulo alinhado c/ eixos
Seja R dado por seus pontos mnimo e mximo
P R Px minx Px maxx
Py miny Py maxy
Para teste contra o interior de R, substituir
por > e por <
O Polgono convexo
Seja G dado por uma lista de vrtices
g1, g2, gN enumerados segundo uma
circulao horria da fronteira de G
Seja a linha de suporte da aresta gi-gi+1 dada por
ai . x + bi . y + ci = 0, de tal forma que para
todos os pontos Q do interior do polgono
a i . Q x + b i . Q y + ci > 0
P R i=1N, ai . Px + bi . Py + ci 0
O Polgono qualquer
Teste da soma de ngulos
O A soma dos angulos formados entre P e
dois vrtices consecutivos gi e gi+1 de G
deve ser de 360
6
5
1
4
2
3
A 0 1 2
B
0
1
2
3
4
5
6
7
8
5 6
7 8
SR=
SR
Quadtrees de regio
e branco)
Assume uma imagem quadrada de lado igual a uma
potncia de 2 (2n 2n)
Cada diviso de um quadrado 2i 2i resulta em 4
quadrados 2i-1 2i-1
Critrio de subdiviso: dividir enquanto subregio
contiver pixels brancos e pretos; no subdividir se
subregio for uniformemente preta ou branca
Ns folha so rotulados brancos e pretos; ns
internos so chamados de cinza
NW
NE
SW
SE
O Espao de armazenamento:
Se numa rvore completa h K ns-folha, h
um total de
K + K/4 + K/16 + = floor (4 K / 3)
O resultado vale para qualquer rvore com K
ns folha
Pior caso (mximo nmero de ns-folha):
Imagem tipo tabuleiro de xadrez (todos os
quadrantes tm que ser divididos at o nvel de
pixel)
O Complexidade de algoritmos
Localizao de ponto (Cor de um pixel):
O(log n)
Converso de imagem matricial: O (n)
Vizinhana: O(log n)
O Algoritmo ingnuo
Criar uma quadtree trivial (imagem com todos
os pixels brancos)
Rotina PintaPixel:
O Dada a posio (x,y) de um pixel da
imagem e sua cor (c), modificar a quadtree
para refletir a mudana
Chamar a rotina PintaPixel para todos os
pixels da imagem
Independente da ordem em que os pixels so
pintados
Complexidade
O Para imagem n n: O(n2 log n)
O Subrvores podem ser criadas para ser logo
depois deletadas
O Desejvel: O(n2)
O Detalhes de implementao
Se a imagem no um quadrado cujo lado
uma potncia de 2,
O Assumir a menor potncia de 2 que contm
a imagem
O Ao acessar um pixel fora da imagem,
assumir cor branca
Ao criar uma representao quadtree com
ponteiros em memria
O no necessrio criar tantos ns brancos e
pretos quantos sejam o nmero de pixels da
imagem, bastam um n branco e um n
preto
O O valor de retorno de ConstroiN um
ponteiro
O ConstriN s constroi ns cinza
O Complexidade
ConstroiNo chamado apenas uma vez por n
O(n2)
Quadtree de pontos
O Propriedades gerais
Extenso multidimensional da rvore de busca
binria
Pontos so armazenados em ns internos
Depende da ordem de insero dos pontos
Para N pontos inseridos segundo uma
distribuio randmica uniforme, a altura
esperada da rvore O(log N)
Estrutura prpria para armazenamento em
memria
O Insero de pontos
Algoritmo ingnuo: Semelhante insero
em rvores binrias
Problema de balanceamento: Assegurar altura
logaritmica
Se os pontos so conhecidos de antemo,
orden-los segundo x ou y e escolher as
medianas como razes das subrvores
ponto
deletado
O Busca
Estrutura apropriada para consultas
envolvendo proximidade
Exemplo: todos os pontos que intersectam um
retngulo R
O As subrvores c/ raiz em filhos de P a
serem pesquisadas dependem da posio de
P com relao a R:
NW
NW e
NE
NW e
SW
todas
SW
SW e
SE
NE
NE e
SE
SE
K-D trees
O Propriedades gerais
K refere-se dimenso do espao de pontos
Cada ponto inserido corta o espao em duas
subregies segundo um hiperplano
perpendicular ao isimo eixo coordenado
(discriminante)
O eixo discriminante varia alternadamente
medida que se desce na rvore (x, y, x, y, etc)
Cada n s necessita de k valores para as as
coordenadas do ponto e mais dois ponteiros
para as subrvores. No necessrio armazenar
o discriminante
Tem caractersticas semelhantes quadtree de
pontos
O Apenas uma comparao necessria para
cada n da rvore
O Desvantajoso em arquiteturas paralelas
(pode-se testar K valores simultaneamente)
O Insero de pontos
Algoritmo ingnuo anlogo ao das rvores de
busca binria e ao das quadtrees de pontos
Problema de balanceamento tambm
solucionado de forma anloga
K-D tree adaptativa anloga pseudoquadtree de pontos (massa de dados esttica)
O Pontos so guardados nas folhas
O Ns internos correspondem a hiperplanos
que divide os pontos em subconjuntos de
cardinalidade aproximadamente igual
O Ns internos ocupam espao invariante em
relao a K
O Relaxa-se a alternncia de discriminantes
em favor de uma melhor distribuio
espacial entre os pontos
ex.: escolhe-se o hiperplano
perpendicular ao eixo de maior
dimenso do MBR de todos os pontos
O Deleo de pontos
Semelhante deleo em rvores binrias
Se o discriminante do n P a ser deletado x,
devemos substituir P pelo n Q direita de P
tal que Qx mnimo e, finalmente, deletar P
Porque no o n Q esquerda de P com valor
mximo Qx ? Pode haver mais de um, e a
conveno que ns esquerda de P tm
valores estritamente menores que Px
Se a subrvore direita de P vazia, escolhe-se
o n Q esquerda de P com Qx mnimo, trocase P por Q com a subrvore esquerda de P
agora posicionada direita de Q e deleta-se Q
de sua antiga posio recursivamente
P
Range Trees
35
85
50
25
25
35
80
50
60
90
80
85
90
60
HDGBCAFE
35
85
DBCA
HGFE
50
25
80
BA
5,45
25,35
90
DC
C
35,40
D
50,10
F E
E
60,75
F
80,65
HG
G
85,15
H
90,5
Lx
Rx
60
35
B
25
5,45
25,35
85
C
50
(35)
A
(45)
C
35,40
(40)
D
50,10
(65)
80
E
60,75
()
F
80,65
90
G
85,15
(15)
H
90,5
[Lx , Rx][Ly , )
Descer na rvore buscando Q, ancestral comum
mais prximo de LXP e RXP
O Seja P o n folha associado com o n sendo
examinado (T)
O Terminar se Py< Ly pois no h
descendentes de T com y > Ly
O Terminar se P nulo, pois subrvore j foi
toda examinada e/ou reportada
O Caso contrrio, reporte P se Px contido no
intervalo [Lx , Rx]
Uma vez encontrado Q, determine
recursivamente onde continuar a busca
O RIGHT(T) se T e RIGHT(T) no caminho
direita de Q at LXP
O LEFT(T) se T e LEFT(T) no caminho
esquerda de Q at RXP
O Seno, em ambos RIGHT(T) e LEFT(T)
O (log2 N + F) tempo para buscar N itens e F
respostas
O Variantes (cont.)
PR-quadtree
O Idntica Region quadtree exceto que no
h ns brancos e ns pretos correspondem a
pontos
O Subdiviso ocorre sempre que mais de um
ponto aparece num mesmo quadrante
PR-bintree (tambm chamada PR-k-d-tree)
O Semelhante a PR-quadtree, mas diviso
ocorre de forma binria alternando entre os
eixos
BD-tree (ou BANG file)
O PR-quadtree onde ns cinza com apenas um
filho so comprimidos
O Semelhantemente, uma BD-k-d tree usa
compresso em uma PR-bintree (PR-k-dtree)
O BD-bintree (BD-k-d-tree)
Tor
Buf
001101
Chi
Den
000
100
Oma
No
001101
Atl
Mob
Mia
Linear Hashing
hn(K) = K mod 2n
hn+1(K)
m-2n
2n -1
hn(K)
2n
2n <= m < 2n+1
hn+1(K)
m-1
O
O
O
so endereados por hn
Ao se usar linear hashing para armazenar pontos,
preciso utilizar um esquema de linearizao do
espao (bit interleaving, por exemplo), isto ,
K = f(x,y)
A criao de um novo bucket ocorre quando a taxa
de utilizao ultrapassa um limite pr estabelecido
Taxa de utilizao = nmero de pontos / nmero de
entradas vazias (tanto em buckets primrios quanto
em buckets de overflow)
Ao se criar um novo endereo (m), os pontos
residentes no primeiro endereo correspondente a
hn so reinseridos e buckets de overflow que se
tornem desnecessrios so desalocados
Se buckets de overflow so desalocados, a taxa de
utilizao pode crescer novamente e provocar a
criao de um novo endereo
4
6
38H = 56
0
0
1
1
0 0 1 1
0
1
0
0
1 0 0 0
0
chi
0%
0
chi
mob
tor
0
chi
mob
50%
1
0
mob
tor
75%
0
mob
tor
50%
100%
1
50%
2
chi
0
mob
tor
50%
2
chi
buf
2
chi
buf
67%
0
mob
tor
2
chi
buf
den
50%
50%
0
mob
tor
oma
0
chi
mob
2
chi
buf
den
0
mob
tor
oma
58%
2
chi
buf
den
atl
2
chi
buf
den
atl
0
mob
tor
67%
0
mob
tor
1
mia
2
chi
buf
den
atl
67%
57%
2
chi
buf
den
atl
4
oma
5
mia
4
oma
Grid File
O Mtodo de repositrio
O Espao dividido numa grade cujos hiperplanos
O
O
O
O
O
B
y2
E
y1
F
y0
x0
x1
x2
x3
y0
y1
y2
y3
Diretrio
Escalas Lineares
O Algoritmo de insero
Localizar, usando o diretrio e as escalas, a
clula onde o ponto deve ser inserido
Se o bucket apontado pela clula ainda tem
espao, inserir ponto e terminar.
Se o bucket com overflow atravessa alguma
fronteira das escalas lineares, ele
compartilhado por mais de uma clula.
O Criar um novo bucket
O Repartir os pontos entre os dois buckets
O Tentar a insero novamente
Se o bucket com overflow apontado por
somente uma clula
O Criar um novo hiperplano de subdiviso em
um dos eixos coordenados
O Atualizar a escala correspondente
O Partir todas as clulas atravessadas pelo
hiperplano e atualizar o diretrio
O Tentar a insero novamente
O Exemplo
EXCELL
R-tree
O
O
O
O
pares retngulo/apontador
Ns internos:
apontador para subrvore
retngulo o MBR de todos os objetos na
subrvore
Ns-folha
apontador para dado espacial
retngulo o MBR do objeto espacial
Se M a capacidade de um n (nmero mximo de
entradas), estabelece-se um limite mnimo
m <= M/2 para a ocupao de todos os ns da
rvore, exceto a raiz
Crescimento da rvore se d das folhas para a raiz,
que tem ao menos 2 filhos, a menos que seja um n
folha
Todos os ns-folha esto na mesma altura na rvore
R-trees (cont.)
3
C
F
I
H
1
R-trees (cont.)
R-trees (cont.)
R-trees (cont.)
R-trees (cont.)
O Diviso de Ns (cont.)
Algoritmo exaustivo
O tempo exponencial em M
O imprtico
Algoritmo quadrtico
O Escolher como sementes o par de entradas
(i,j) cujo MBR conjunto desperdia mais
rea com relao aos MBRs individuais
desperdcio = area (MBR (Ri,Rj))-area
area (MBR (Ri))-area(MBR(Rj))
custo = O(M2)
O [1] Escolher entre as entradas restantes a
que exibe maior preferncia por um dos
dois grupos
di = acrescimo de area requerido para
inserir entrada no grupo i.
escolher a entrada para a qual |di-dj|
maximo
O Repetir [1] ate que todas as entradas
estejam distribuidas ou ate que um grupo
esteja to vazio que requeira todas as
entradas restantes
R-trees (cont.)
O Diviso de Ns (cont.)
Algoritmo Linear
O Semelhante ao algoritmo quadratico
O Escolha das sementes: escolher o par a
maior separacao normalizada em qualquer
dos eixos
Ex.: separacao em x.
Assumir xmax(j) < xmin(i)
sep = (xmax(j)-xmin(i)) /
(xmax(i)-xmin(j))
O Escolha da proxima entrada a ser
distribuida em um dos grupos
Escolher qualquer uma
Inserir no grupo que ter menor
incremento de area
R*-trees
R*-trees (cont.)
R*-trees (cont.)
O Algoritmo modificado para escolher a subrvore onde
inserir uma dada entrada
Se o n sendo considerado aponta para ns-folha
O Escolher a folha que resultar em menor
incremento da rea total de interseo no n
pai
O Se empatar escolher a folha que resultar em
menor incremento de rea
O Se empatar escolher a folha com menor rea
Nos outros casos, agir como na R-tree
Algoritmo quadrtico, porm custo pode ser
reduzido se nem todos os retangulos forem
considerados
O ordenar os entradas por incremento de rea
O aplicar o algoritmo apenas s primeiras p
entradas (tipicamente 32)
Experimentos indicam melhor performance para
range queries com retngulos pequenosem massas
de dados com pequenos retngulos ou pontos
Obs.: Clculo da rea de overlap
overlap( E k ) =
area(E
i =1..k ,i k
Ei )
R*-tree(cont.)
Colees de Retngulos
Mtodos de Varredura
10 11
16
rvores de Segmentos
O
O
O
O
O
O
rvores de Segmentos
O Espao:O (N log N)
O Tempo para inserir um segmento: O (log N)
O Tempo para deletar um segmento: O (log N)
A: [6:36)
B: [34:38)
C: [21:36)
D: [23:27)
E: [3:8)
F: [15:19)
G: [11:14)
rvore de intervalos
a+b/2
L1R1
a
L1
R1R2
b
R1
L2
R2
O Estrutura secundria:
Cada n interno V aponta para os pontos mnimos (Li)
/ mximos (Ri) de cada segmento I para o qual V o
ancestral mais prximo encadeados em ordem
crescente/decrescente
O Estrutura terciria:
Cada n interno aponta para o n ativo mais prximo
da subrvore esquerda/direita
Um n ativo aquele que possui estrutura secundria
ou seus dois filhos tenham descendentes ativos
Curvas
O Importncia
Caracterizam fronteiras de dados
bidimensionais (ex.: regies)
Dados unidimensionais (ex.: rede de rios,
estradas, ferrovias, etc)
O Representao
exata (algbrica)
O Forma implcita (curva em 2D)
f (x,y) =0
O Forma implcita (curva em 3D)
f (x,y,z)=0
g (x,y,z)=0
O Forma paramtrica (curva em nD)
xi=fi (t)
aproximada
O linhas poligonais
O splines (conjunto de curvas mais simples
emendadas)
Strip Trees
Folhas
da rvore
interseo impossvel
interseo possvel
interseo certa
interseo possvel
Arc Trees
C2
C2
C1
C0
C1
C2
C2
BSPR trees
Line Quadtrees
O Mapa Poligonal
O
O
P
Vizinho direita de P
O exemplo:
SE
E
C
NE
D
SE
10
NW
13
O exemplo: vizinho NW do n 15
Busca do vizinho de E
segundo aresta W
A
SE
SW
C
E
SW
F
NE
13
SE
NW
15
10
PM quadtrees
O
O
PM1 -quadtrees
PM2 -quadtrees
PM3 -quadtrees
PMR-quadtrees
O
O
O
O
O
(buckets)
No h diferena entre vrtices e arestas. A
subdiviso se d visando obter buckets contendo
um nmero de objetos prximo de um limite timo
(ex.: tamanho de um bloco de disco)
Quando um bucket excede sua capacidade, os
objetos nele contidos so reinseridos nos quatro
subquadrantes, mas apenas uma vez
Se a subdiviso no for capaz de reduzir a
populao de um bucket para menos que o limite,
os dados excedentes so colocados em buckets de
overflow
Uma nova subdiviso ser tentada se um novo dado
for inserido naquele n
A regra de subdiviso visa obter uma subdiviso
probabilisticamente tima
A PMR-quadtree pode ser usada para representar
quaisquer objetos, no apenas mapas poligonais