Banco de Dados Geográficos

Documentos relacionados
Sistemas de Informação Geográfica e Banco de Dados Geográficos

SGBD COM EXTENSÕES ESPACIAIS

IMPLEMENTAÇÃO DE BANCOS DE DADOS GEOGRÁFICOS

Bancos de Dados Geográficos Projeto Físico de BDG. Clodoveu Davis. Clodoveu Davis

UFMG Instituto de Geociências Departamento de Cartografia Av. Antônio Carlos, 6627 Pampulha Belo Horizonte

Guia de boas práticas para o gerenciamento de dados vetoriais no Oracle Spatial

Erika Vanessa Xavier Silva Utilização do Oracle Spatial para auxílio a consultas espaciais em Sistemas de Transporte Coletivo

Spatial Database Systems. Karine Reis Ferreira

SIG SIG. WKT Postgis (SQL) Alisson Fernando Coelho do Carmo

Projeto Físico de BDG

Lista de Exercícios 04 (ListEx4).

Introdução ao PostgreSQL

SIG: Sistemas de Informações Geográficas. Adaptado de Gilberto Câmara

Operadores topológicos SQL ST_RELATE

Spatial Database Systems. Karine Reis Ferreira

Estendendo GeoDWCASE para Oracle Spatial e MySQL

O Impacto da Mudança do Referencial Geodésico para Usuários de SIG Urbano

Banco de Dados I Introdução SQL

INTERFACE PARA OPERAÇÕES ESPACIAIS EM BANCO DE DADOS GEOGRÁFICOS

Banco de Dados Geográficos. Gilberto Ribeiro de Queiroz Karine Reis Ferreira

Utilizando o Postgres - comandos SQL para a manipulação de dados

Arquitetura de Software para Construção de Bancos de Dados Geográficos com SGBD Objeto-Relacionais

EXTENSÃO DO SGBD POSTGRESQL COM OPERADORES ESPACIAIS

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

PostGIS. Lubia Vinhas

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

ORACLE GEORASTER. André Cavalcante Hora Banco de Dados Geográficos Universidade Federal de Minas Gerais

Uma solução possível para garantir, em ambiente APEX, a consistência duma estrutura ISA, total e disjuntiva.

Comandos de Manipulação

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

SFS Simple Feature SQL

Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS

BANCO DE DADOS GEOGRÁFICOS E WEBMAPPING. Prof. Angelo Augusto Frozza, M.Sc.

SQL. Prof. Roger Cristhian Gomes

ALTERANDO O NOME DA TABELA ALTER TABLE DEPTO RENAME TO TAB_DEPARTAMENTO

Banco de Dados. Professora: Luciana Faria

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

BCD29008 Banco de dados

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

Administração de Banco de Dados

SISTEMAS DE INFORMAÇÃO

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

Manipulação de Dados com SQL

AULA 8 EXEMPLOS CRIAR AS TABELAS PROPOSTAS NA AULA E INSERIR OS REGISTROS SUGERIDOS

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

10g PRINCIPAIS SERVIDORES UNIVERSAIS

Dados Geográfico PostGIS

Banco de Dados Espaciais

SQL - Structured Query Language. Karine Reis Ferreira

Administração de Banco de Dados

Rápida revisão do Modelo Relacional

Parte I (correspondente à matéria do 1º teste)

Monitoria GDI. Aula Prática. OR (Aula 1)

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados 2005/2006. Aula 5

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Fundamentos de Banco de Dados Postgre com Sql

BANCO DE DADOS. Vinícius Pádua

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Programação em Banco de dados

ARQUITETURA DE SOFTWARE PARA CONSTRUÇÃO DE BANCOS DE DADOS GEOGRÁFICOS COM SGBD OBJETO- RELACIONAIS

Banco de Dados SQL injection

Comandos SQL. Exercícios com o MySQL ou MaridaDB. Prof. Emiliano S. Monteiro

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'pessoas';

Oracle Database 12c: Introdução ao SQL Ed. 2

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

BANCO DE DADOS PARA WEB

Nesta parte da aula estamos interessados na representação vetorial dos dados.

Oracle Database 11g: Introdução à Linguagem SQL Novo

Planificação Anual. Departamento Expressões e Tecnologias

Administração de Banco de Dados

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

A U L A 9 F U N Ç Õ E S A G R E G A D A S E C Á L C U L O S

Roteiro. Elementos de SIG. Elementos de SIG. Elementos de SIG. Metodologia para Criação de SIG. Clodoveu Davis 3

Bancos de Dados Geográficos

Tabelas. Banco de Dados I MySQL

ANÁLISE E PROJETO DE BANCO DE DADOS

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

SQL-99: Esquema de BD EMPRESA

AULA 8 CRIANDO UMA CLASSE EM PHP INTERAGINDO COM BANCO DE DADOS - COM RELACIONAMENTO ENTRE TABELAS

Marcos Alexandruk Marcos Alexandruk

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Banco de Dados. Maurício Edgar Stivanello

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

MySql. Introdução a MySQL. Andréa Garcia Trindade

Prova de Tecnologia da Informação

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Modelagem Física e SQL

Transcrição:

Agosto, 2007 Banco de Dados Geográficos Oracle Spatial Karine Reis Ferreira karine@dpi.inpe.br Gilberto Ribeiro de Queiroz gribeiro@dpi.inpe.br Gilberto Câmara gilberto@dpi.inpe.br Disponível em http://www.dpi.inpe.br/cursos/ser303

Oracle Spatial Extensão espacial desenvolvida sobre o modelo objetorelacional do SGDB Oracle Baseada nas especificações do OpenGIS Formado pelos seguintes componentes: Modelo de dados (chamado MDSYS) que define tipos de dados espaciais Mecanismo de indexação espacial Um conjunto de operadores e funções para realizar consultas, junção espacial e outras operações de análise espacial Aplicativos administrativos

Oracle Spatial - Tipos de Dados Espaciais Elementos: tipos de dados espaciais primitivos

Oracle Spatial - Tipos de Dados Espaciais Geometrias: formada por um único elemento ou por um conjunto homogêneo (multipontos, multilinhas ou multipolígonos) ou heterogêneo (coleção) de elementos. Plano Geometria Plano de informação: formado por um conjunto de geometrias que possuem um mesmo conjunto de atributos. Elemento

Oracle Spatial SDO_GEOMETRY CREATE TYPE SDO_GEOMETRY AS OBJECT ( SDO_GTYPE NUMBER, SDO_SRID NUMBER, SDO_POINT SDO_POINT_TYPE, SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, SDO_ORDINATES SDO_ORDINATE_ARRAY); Plano Geometria Elemento

Oracle Spatial SDO_GEOMETRY SDO_GTYPE: tipo da geometria SDO_GTYPE=2003: polígono bidimensional SDO_GTYPE=2002: linha bidimensional SDO_GTYPE=2001: ponto bidimensional GTYPE 2D 3D 4D 0 UNKNOWN_GEOMETRY 2000 3000 4000 1 POINT 2001 3001 4001 2 LINESTRING 2002 3002 4002 3 POLYGON 2003 3003 4003 4 COLLECTION 2004 3004 4004 5 MULTIPOINT 2005 3005 4005 6 MULTILINESTRING 2006 3006 4006 7 MULTIPOLYGON 2007 3007 4007

Oracle Spatial SDO_GEOMETRY SDO_SRID: sistema de coordenadas NULL se não especificado. Valor contido em MDSYS.CS_SRS => inserir esse valor em USER_SDO_GEOM_METADATA. Todas as geometrias em uma mesma coluna devem ter o mesmo SRID SDO_POINT: tipo SDO_POINT_TYPE X, Y e Z: coordenadas de um ponto Somente é preenchido se a geometria for do tipo ponto, ou seja, se os dois últimos números do SDO_GTYPE forem iguais a 01 ;

Oracle Spatial SDO_GEOMETRY SDO_ELEMENT_INFO: vetor que armazena as informações de cada elemento que compõe a geometria: SDO_STARTING_OFFSET: qual a posição da primeira coordenada do elemento no SDO_ORDINATES SDO_ETYPE: indica o tipo do elemento SDO_INTERPRETATION: indica como o elemento deve ser interpretado juntamente com o SDO_ETYPE

Oracle Spatial SDO_GEOMETRY SDO_ELEMENT_INFO: SDO_ETYPE SDO_INTERPRETATION Descrição 1 1 ponto 2 1 Linha formada por vértices conectados por segmentos retos 1003 ou 2003 1 Polígono simples composto por vértices conectados por segmentos retos Os anéis externos de um polígono (SDO_ETYPE=1003) devem estar no sentido anti-horário e os internos (SDO_ETYPE=2003), no sentido horário.

Oracle Spatial SDO_GEOMETRY SDO_ORDINATES: é um vetor de tamanho variável que armazena os valores das coordenadas da geometria

Oracle Spatial - Tipos de Dados Espaciais Criação de tabelas com tipos de dados espaciais: Distritos de São Paulo: CREATE TABLE distritossp ( cod NUMBER(32) NOT NULL, sigla VARCHAR2(20), denominacao VARCHAR2(200), spatial_data MDSYS.SDO_GEOMETRY, PRIMARY KEY (cod))

Oracle Spatial - Tipos de Dados Espaciais Inserção de dados em tabelas com tipos de dados espaciais: Geometria: um polígono com buraco Pol (0,0 10,0 10,10 0,10 0,0) (5,5 5,6 6,6 6,5 5,5 ) INSERT INTO DistritosSP (cod, sigla, denominacao, spatial_data) VALUES (1, 'VMR', 'VILA MARIA, MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1,6,2003,1), MDSYS.SDO_ORDINATE_ARRAY(0,0,10,0,10,10,0,10, 0,0,5,5,5,6,6,6,6,5,5,5)))

Oracle Spatial - Tipos de Dados Espaciais Exercício SQLPlus: DESC MDSYS.SDO_GEOMETRY; SELECT * FROM polygons1 WHERE object_id = 1 ;

Oracle Spatial Metadados MDSYS.CS_SRS SC_NAME VARCHAR2(68) SRID AUTH_SRID AUTH_NAME WKTEXT SC_BOUDS NUMBER(38) NUMBER(38) VARCHAR2(256) VARCHAR2(2046) USER_SDO_GEOM_METADATA TABLE_NAME VARCHAR2(32) COLUMN_NAME DIMINFO SRID VARCHAR2(32) SDO_DIM_ARRAY NUMBER SDO_GEOMETRY USER_SDO_INDEX_INFO SDO_INDEX_OWNER VARCHAR2(32) INDEX_NAME TABLE_NAME COLUMN_NAME SDO_INDEX_TYPE SDO_INDEX_TABLE SDO_INDEX_STATUS VARCHAR2(32) VARCHAR2(32) VARCHAR2(32) VARCHAR2(32) VARCHAR2(32) VARCHAR2(32)

Oracle Spatial Metadados Inserindo metadados: INSERT INTO USER_SDO_GEOM_METADATA VALUES ('distritossp','spatial_data', MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT('X',275.9670,429.567,0.0005), MDSYS.SDO_DIM_ELEMENT('Y',833.0355,582.15,0.0005)), NULL);

Oracle Spatial Metadados Exercício SQLPlus: DESC USER_SDO_GEOM_METADATA; SELECT * FROM USER_SDO_GEOM_METADATA WHERE table_name = POLYGONS1 ;

Oracle Spatial Indexação Espacial Criando índices espaciais (RTree): Distritos de São Paulo: CREATE INDEX DistritosSP_IDX ON DistritosSP(SPATIAL_DATA) INDEXTYPE IS MDSYS.SPATIAL_INDEX

Oracle Spatial Indexação Espacial Indexação espacial (RTree): Funções para avaliar a performance dos índices: SDO_TUNE.QUALITY_DEGRADATION Funções para reconstruí-lo: ALTER INDEX REBUILD Após a criação de índices espaciais, a extensão atualiza, automaticamente, as tabelas de metadados sobre indexação. Essas tabelas são mantidas pela extensão e não devem ser alteradas pelos usuários

Oracle Spatial Consultas Espaciais O Oracle Spatial fornece um conjunto de operadores e funções para manipular e consultar dados espaciais As consultas são executadas em duas etapas:

Oracle Spatial Consultas Espaciais Operadores Utilizados na cláusula WHERE de uma consulta SQL Utiliza indexação espacial Operadores SDO_FILTER SDO_RELATE (SDO_TOUCH, SDO_ON, SDO_INSIDE) SDO_WITHIN_DISTANCE SDO_NN Descrição Implementa o primeiro filtro do modelo de consulta (baseado nos MBR) Avalia se as geometrias possuem uma determinada relação topológica Verifica se duas geometrias estão dentro de uma determinada distância. Identifica os n vizinhos mais próximos de uma geometria

Oracle Spatial Consultas Espaciais SDO_RELATE: computa uma ou uma combinação (OR) de relações topológicas EQUAL DISJOINT ANYINTERACT TOUCH INSIDE ON CONTAINS COVERS - COVERREDBY OVERLAPBDYINTERSECT OVERLAPBDYDISJOINT

Oracle Spatial Consultas Espaciais Funções: Definidas como subprogramas PL/SQL Usados na cláusula WHERE ou em SUBCONSULTAS Podem ser utilizadas sobre colunas espaciais não indexadas Funções SDO_INTERSECTION, SDO_UNION SDO_DIFFERENCE, SDO_XOR SDO_BUFFER, SDO_CENTROID, SDO_CONVEXHULL SDO_AREA, SDO_ LENGTH, SDO_DISTANCE Descrição Operações de conjunto Operações que geram novas geometrias Operações métricas

Consulta 1 Recuperar o nome de todos os municípios da grande São Paulo que são vizinhos ao município de São Paulo. SELECT a1.nomemunicp FROM (Polygons6 p1 INNER JOIN GrandeSP a1 ON p1.object_id = a1.object_id_6), (Polygons6 p2 INNER JOIN GrandeSP a2 ON p2.object_id = a2.object_id_6) WHERE SDO_RELATE(p1.spatial_data,p2.spatial_data, 'mask=touch') = 'TRUE' AND a2.nomemunicp = 'SAO PAULO'

Consulta 1 Recuperar o nome de todos os municípios da grande São Paulo que são vizinhos ao município de São Paulo. SELECT a1.nomemunicp FROM (Polygons6 p1 INNER JOIN GrandeSP a1 ON p1.object_id = a1.object_id_6), (Polygons6 p2 INNER JOIN GrandeSP a2 ON p2.object_id = a2.object_id_6) WHERE SDO_TOUCH(p1.spatial_data,p2.spatial_data) = 'TRUE' AND a2.nomemunicp = 'SAO PAULO'

Consulta 2 Recuperar o nome de todos os municípios da grande São Paulo que são vizinhos ao distrito Anhanguera da cidade de São Paulo SELECT a1.nomemunicp FROM (Polygons6 p1 INNER JOIN GrandeSP a1 ON p1.object_id = a1.object_id_6), (Polygons2 p2 INNER JOIN Mapa_Distritos a2 ON p2.object_id = a2.object_id_2) WHERE SDO_RELATE(p1.spatial_data,p2.spatial_data, 'mask=touch') = 'TRUE' AND a2.deno = 'ANHANGUERA'

Consulta 3 Recuperar o número de bairros contidos no distrito Grajau SELECT COUNT(*) FROM Points4 p1, (Polygons2 p2 INNER JOIN Mapa_Distritos a1 ON p2.object_id = a1.object_id_2) WHERE SDO_INSIDE (p1.spatial_data, p2.spatial_data) = 'TRUE' AND a1.deno = 'GRAJAU'

Consulta 4 Recuperar todos os distritos que estão num raio de 3Km de um determinado rio SELECT a1.deno FROM (Polygons2 p1 INNER JOIN Mapa_Distritos a1 ON p1.object_id = a1.object_id_2), Lines5 p2, user_sdo_geom_metadata m WHERE SDO_RELATE (p1.spatial_data, SDO_GEOM.SDO_BUFFER(p2.spatial_data, m.diminfo, 3000), 'mask=anyinteract') = 'TRUE' AND m.table_name = 'LINES5' AND m.column_name = 'SPATIAL_DATA' AND p2.object_id = '59'

Consulta 5 Recuperar todos os bairros que estejam a menos de 3Km do bairro Boacava. SELECT DISTINCT a1.bairro FROM (Points4 p1 INNER JOIN Bairros_pt a1 ON p1.object_id = a1.object_id_4), (Points4 p2 INNER JOIN Bairros_pt a2 ON p2.object_id = a2.object_id_4) WHERE SDO_GEOM.SDO_DISTANCE (p1.spatial_data, p2.spatial_data, 0.00005) < 3000 AND a2.bairro = 'BOACAVA' AND a1.bairro <> 'BOACAVA'

Oracle Spatial Consultas Espaciais Para executar as consultas dos próximos exercícios considere as tabelas já criadas: Bairros de Belo Horizonte: Geometria: Polygons1 Atributos: Bairros_pol Ocorrências de crime em Belo Horizonte: Geometria: Points2 Atributos: Ocorrencias_Ago2003_pt

Oracle Spatial Consultas Espaciais 1. Selecionar os bairros vizinhos (adjacentes) do bairro Centro (object_id =1); 2. Selecionar os crimes que ocorreram no bairro Centro ; 3. Para cada bairro, selecionar quantos crimes ocorreram dentro dele; 4. Selecione todos os crimes que ocorreram a uma distância de 1.000 metros do crime de identificador 45 (object_id = 45)

y Oracle Spatial Exercícios Considerando os lotes abaixo: 13 11 9 7 L4 L3 5 3 L1 L2 1 1 3 5 7 9 11 13 15 17 19 21 x

Oracle Spatial Exercícios 1. Criar uma tabela chamada nomealuno_ft_lotes para armazenar dos lotes; 2. Registrá-la na tabela de metadados (USER_SDO_GEOM_METADATA); 3. Inserir os lotes L1 e L2 usando o SDO_GEOMETRY; 4. Inserir os lotes L3 e L4 usando o formato WKT; 5. Criar um índice espacial (RTree) chamado nomealuno _ft_lotes_idx ; 6. Selecionar todos os lotes que são vizinhos (adjacentes) do lote L2;