Seminário de Banco de Dados II Banco de Dados Espaciais Alunos: Bráulio Miranda Veloso Vítor Mangaravite Professor: Guilherme Tavares de Assis Sumário ● Introdução ● SGBDs Espaciais ● Aplicações ● Tipos de Dados ● Representação dos Dados ● Tipos de Consultas Espaciais ● Representação Interna dos Dados ● Aplicações SGBDs Espaciais Introdução ● O que é um SGBD Espacial – – Sistema que gerencia, além dos dados convencionais, os dados espaciais (localização, forma e relações topológicas); Armazena e provê operações para a manipulação dos dados espaciais diretamente. Introdução ● O que são dados espaciais – – – Atributos espaciais: localização e representação de um objeto geométrico em um determinado sistema de referência; Relacionamento espacial: relacionamentos de vizinhança (topologia, distância e ordem) Podem ser agregados a mais informações não espaciais, que descreve qualitativamente ou quantitativamente a entidade espacial. SGBDs Espaciais Aplicações ● Antes dos SGBD Espacial Aplicações ● Com SGBD Espacial Tipos de Dados Representação dos Dados ● Matricial ● Vetorial Ponto ● ● Menor unidade possível para representar um objeto espacial Definição no PostgresSQL: – point(double x, double y); – ex.: point(23.4, -44.5). Segmento de Reta ● Linha unida entre dois pontos. ● Definição no PostgresSQL: – lseg(point, point); – ex.: lseg(point '(-1,0)', point '(1,0)'). Caminho ● Sequência aberta ou fechada de linhas ● Definição no PostgresSQL: – path ( [point, …, point] ); ● – path ( (point, …, point) ); ● – Aberto Fechado ex.: path( [(0,0), (0,1), (2,2), (3,2)] ). Polígono ● Sequência fechada de linhas ● Definição no PostgresSQL: – polygon ( (point, … , point) ); – ex.: point((0,0), (0,1), (2,2), (3,2), (0,0)). Caixa ● ● Polígono retangular, definido por dois vértices opostos Definição no PostgresSQL: – box ( point, point ); – ex.: box( (0,0), (1,1) ). Circulo ● ● Polígono circular, definido pelo ponto central e um raio Definição no PostgresSQL: – circle ( < ( point, point ), r > ); – ex.: circle( < ( 0, 0 ), 2 >) ). Exemplo de Dados Espaciais Municípios como polígonos Rios como caminhos e Escolas como pontos Tipos de Consultas Espaciais ● Consultas espaciais usando SQL: – Relacionamentos espaciais: ● ● ● – de distância; de ordem; Topológicos. Operações espaciais: ● ● ● ● área (area) comprimento (length) intersecção (intersection) união (union) Tipos de Consultas Espaciais ● Exact Match Query – Dado um objeto o’ com atributo espacial o’.G ⊆ Ed, encontre todos os objetos o que possuam as mesmas coordenadas que o’, ou seja, que possuam a mesma extensão e localização no espaço – EMQ (o’, dataset) = { o | o ∈ dataset ∧ o.G = o’.G } Tipos de Consultas Espaciais ● Partial Match Query – Dado um objeto o’ com atributo espacial o’.G ⊆ Ed, encontre todos os objetos o que possuam, em uma dada dimensão, a mesma extensão e localização no espaço que o’ Tipos de Consultas Espaciais ● Point Query – ● O objeto contem o ponto? – ● Dado um ponto p ∈ Ed, encontre todos os objetos o que sobrepõem p SELECT circle '((0,0),2)' @> point '(3,3)'; O ponto está no objeto? – SELECT point '(1,1)' <@ circle '((0,0),2)'; Tipos de Consultas Espaciais ● Range Query – Intersection Range Query: dado um retângulo d-dimensional iso--oriented R ⊆ Ed, encontre todos os objetos o que tenham pelo menos um ponto em comum com R – SELECT lseg '((-1,0),(1,0))' ?# box '((-2,-2), (2,2))'; Tipos de Consultas Espaciais ● Range Query – Containment Range Query: dado um retângulo d-dimensional iso-oriented ⊆ Ed, encontre todos os objetos contidos em R – O objeto1 está dentro do objeto2? – SELECT box '((0,0),(10,10))' @> box '((0,0),(2,2))'; Tipos de Consultas Espaciais ● Range Query – Enclosure Range Query: dado um retângulo d--dimensional iso--oriented R ⊆ Ed, encontre todos os objetos que o englobam R – O objeto2 está dentro do objeto1? – SELECT box '((0,0),(10,10))' <@ box '((0,0),(2,2))'; Tipos de Consultas Espaciais ● Adjacency Query – Dado um objeto o’ com atributo espacial o’.G ⊆ Ed, encontre todos os objetos o que são adjacentes a o’ – Está horizontalmente alinhado? ● – SELECT point '(1,0)' ?- point '(0,0)'; Está verticalmente alinhado? ● SELECT point '(0,1)' ?| point '(0,0)'; Tipos de Consultas Espaciais ● ● Nearest Neighbor Query – k-Nearest Neighbor Query: dado um objeto o’ com atributo espacial o’.G ⊆ Ed, encontre os k objetos o mais próximos de o’ – SELECT ps.p FROM points AS ps ORDER BY ps.p <-> p_analisado LIMIT k; Tipos de Consultas Espaciais ● Direction Query – Dado um objeto espacial o’ com atributo espacial o’.G ⊆ Ed, encontre todos os objetos o posicionados na direção s com relação ao objeto o’ – Valores válidos para a direção s incluem: ao norte de, ao sul de, a leste de e a oeste de. Tipos de Consultas Espaciais ● Direction Query – Está estritamente a esquerda? ● – Está estritamente a direita? ● – SELECT circle '((5,0),1)' >> circle '((0,0),1)'; Não se estende acima? ● – SELECT circle '((0,0),1)' << circle '((5,0),1)'; SELECT box '((0,0),(1,1))' &<| box '((0,0), (2,2))'; Não se estende abaixo? ● SELECT box '((0,0),(3,3))' |&> box '((0,0), (2,2))'; Tipos de Consultas Espaciais ● Direction Query – Está estritamente a esquerda? ● – Está estritamente a direita? ● – SELECT circle '((5,0),1)' >> circle '((0,0),1)'; Não se estende acima? ● – SELECT circle '((0,0),1)' << circle '((5,0),1)'; SELECT box '((0,0),(1,1))' &<| box '((0,0), (2,2))'; Não se estende abaixo? ● SELECT box '((0,0),(3,3))' |&> box '((0,0), (2,2))'; Tipos de Consultas Espaciais ● Distance Query – Dado um objeto o’ com atributo espacial o’.G ⊆ Ed, encontre todos os objetos o cuja distância com relação ao o’ seja no máximo q – SELECT cs.circle FROM objects AS cs WHERE cs.circle <-> circulo_analisado <= q; Representação Interna dos Dados ● Árvores Balanceadas ● R-tree ● Quad-tree ● Grid Representação Interna dos Dados ● Quad-tree – Divisão de quadrantes até obter quadros com somente um ponto. Aplicações SGBDs Espaciais ● SIG – Sistema de Informação Geográfica; ● Serviços de Mapas na Web; ● ● ● ● Mineração de Dados / Registros Multidimensionais; Very-large-scale-integration (VLSI); CAD - Computer Aided Design (desenho auxiliado por computador); CAM-Computer Aided Manufacturing (Fabricação Assistida por Computador). Aplicações SGBDs Espaciais Aplicações SGBDs Espaciais Bibliografia ● ● ● ● Marco Casanova, Gilberto Câmara, Clodoveu Davis, Lúbia Vinhas, Gilberto Ribeiro de Queiroz. Bancos de Dados Geográficos. MundoGEO, 2005. (disponível em http://www.dpi.inpe.br/gilberto/livro/bdados/capitulos.html) Ricardo Rodrigues Ciferri. Banco de Dados Espacias, 2010. Lúbia Vinhas. Banco de Dados Geográficos - 2013 The PostgresSQL Global Development Group. PostgreSQL: Documentation: 9.1: Geometric Functions and Operators, 2013. (http://www.postgresql.org/docs/9.1/static/functionsgeometry.html)