A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Bancos de Dados Espaciais

Apresentações semelhantes


Apresentação em tema: "Bancos de Dados Espaciais"— Transcrição da apresentação:

1 Bancos de Dados Espaciais

2 Bancos de Dados Espaciais
São capazes de armazenar dados espaciais (geométricos) e realizar consultas baseadas em predicados espaciais.

3 Bancos de Dados Espaciais
Arquitetura Dual Uma base para dados Alfanuméricos Uma base para dados Espaciais Arquitetura Unificada Modelo Relacional Campos Normalizados Campos CLOB e BLOB Modelo Orientado a Objeto Modelo Relacional-Objeto SQL

4 Dados Espaciais Modelo Relacional
Criação Tabela Inclusão de Registros Create Table TB_PONTOS( ID_PONTO NUMBER ,COORD_X NUMBER ,COORD_Y NUMBER ,CONSTRAINT TB_PONTOS_PK PRIMARY KEY (ID_PONTO) ); Insert into TB_PONTOS( ID_PONTO ,COORD_X ,COORD_Y) VALUES( 1 ,10 ,5 ); Insert into TB_PONTOS 2 ,-3 ,7

5 Dados Espaciais Modelo Relacional

6 Bancos de Dados Espaciais
Orientado a Objeto Relacional Objeto

7 Bancos de Dados Espaciais
Oracle – Spatial Teradata – Geospatial Informix – Spatial Datablade DB2 – Spatial Extender PostgreSQL – PostGis MySQL SQL Server

8 Armazenamento de Dados Espaciais
Armazenamento Geométrico Armazenamento Topológico

9 Primitivas Espaciais Oracle Spatial

10 MDSYS.SDO_GEOMETRY CREATE TYPE sdo_geometry AS OBJECT ( SDO_GTYPE NUMBER, indica o tipo de geometria SDO_SRID NUMBER, indica o sistema de coordenadas utilizado SDO_POINT SDO_POINT_TYPE, coordenadas quando a forma é um ponto SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY, ajuda na interpretação do atributo SDO_ORDINATES SDO_ORDINATES SDO_ORDINATE_ARRAY Coordenadas );

11 Oracle Spatial Inclusão de um Registro
Criação de uma tabela com atributo Espacial Inclusão de um Registro INSERT INTO TB_RETANGULOS_TESTE( ID_RENTANGULO ,RETANGULO) VALUES( 1 ,SDO_GEOMETRY(2003, -- Retângulo Bidimensional NULL, -- sem sistema de coordenadas NULL, -- não é um ponto SDO_ELEM_INFO_ARRAY(1,1003,3), -- 1º par, polígono externo, fechado SDO_ORDINATE_ARRAY( X Canto Inferior esquerdo , Y Canto Inferior esquerdo , X Canto Superior Direito , X Canto Superior Direito ) )); CREATE TABLE TB_RETANGULOS_TESTE (ID_RENTANGULO NUMBER, RETANGULO MDSYS.SDO_GEOMETRY, CONSTRAINT RETANGULOS_PK PRIMARY KEY (ID_RETANGULO) ); CREATE INDEX IDX_RETANGULO ON TB_RETANGULOS_TESTE (RETANGULO) INDEXTYPE IS MDSYS.SPATIAL_INDEX ;

12 Alguns Operadores Espaciais
SDO_FILTER: usada para identificar se um grupo de objetos interage espacialmente com um objeto ou uma área de interesse SDO_NN: usada para identificar os vizinhos mais próximos de uma geometria. SDO_WITHIN_DISTANCE: retorna os objetos que estão a uma determinada distância de um objeto SDO_GEOM.SDO_AREA: retorna a área de um polígono bidimensional. SDO_GEOM.SDO_CENTROID: retorna a centróide, também conhecida como centro de gravidade, de um polígono, ponto ou conjunto de pontos. SDO_GEOM.SDO_DISTANCE: retorna a distância entre dois objetos geométricos. A distância é calculada como sendo a distância entre os dois pontos, ou segmentos mais próximos entre os objetos.

13 Consultas com Predicados Espaciais
SELECT ID_RENTANGULO, RETANGULO FROM TB_RETANGULOS_TESTE WHERE SDO_FILTER( RETANGULO , MDSYS.SDO_GEOMETRY(2003, NULL, NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(0,0,300,300) ) ,'querytype=window') = 'TRUE'; SELECT ID_RENTANGULO, RETANGULO FROM TB_RETANGULOS_TESTE WHERE SDO_WITHIN_DISTANCE( RETANGULO, sdo_geometry(2001 ,NULL ,sdo_point_type(10,7,NULL) ,NULL), 'distance=100') = 'TRUE';

14 Consultas com Predicados Espaciais
SELECT SAMPA.DENO BAIRRO ,SUM(CASE WHEN ACD.ANO_ACIDENTE = 2007 THEN ELSE END) TOTAL_ ,SUM(CASE WHEN ACD.ANO_ACIDENTE = 2008 THEN ELSE END) TOTAL_ ,SUM(CASE WHEN ACD.ANO_ACIDENTE = 2009 THEN ELSE END) TOTAL_2009 FROM TB_FAT_ACIDENTE ACD ,TB_DISTRITOS_SAOPAULO SAMPA WHERE SDO_RELATE(ACD.geom_loc_acidente, SAMPA.DISTRITOS_GEOM, 'mask=inside') = 'TRUE' GROUP BY SAMPA.DENO ORDER BY COUNT(ACD.ID_ACIDENTE) DESC

15 Topologia no Oracle Spatial
Elementos Básicos Par de coordenadas associado Fronteira Delimitada por um nó final e um nó inicial (direção) e uma linha associada Face Representada por um polígono composto por fronteiras.

16 Topologia no Oracle Spatial
-- Create the topology. (Null SRID in this example.) EXECUTE SDO_TOPO.CREATE_TOPOLOGY('LAND_USE_HIER', ); -- Create feature tables. CREATE TABLE land_parcels ( -- Land parcels (selected faces) feature_name VARCHAR2(30) PRIMARY KEY, feature SDO_TOPO_GEOMETRY); CREATE TABLE block_groups ( CREATE TABLE tracts ( CREATE TABLE counties ( CREATE TABLE states ( -- Associate feature tables with the topology; include hierarchy information. DECLARE land_parcels_id NUMBER; block_groups_id NUMBER; tracts_id NUMBER; counties_id NUMBER; BEGIN SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'LAND_PARCELS', 'FEATURE','POLYGON'); SELECT tg_layer_id INTO land_parcels_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'LAND_PARCELS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'BLOCK_GROUPS', 'FEATURE','POLYGON', NULL, land_parcels_id); SELECT tg_layer_id INTO block_groups_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'BLOCK_GROUPS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'TRACTS', 'FEATURE','POLYGON', NULL, block_groups_id); SELECT tg_layer_id INTO tracts_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'TRACTS'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'COUNTIES', 'FEATURE','POLYGON', NULL, tracts_id); SELECT tg_layer_id INTO counties_id FROM user_sdo_topo_info WHERE topology = 'LAND_USE_HIER' AND table_name = 'COUNTIES'; SDO_TOPO.ADD_TOPO_GEOMETRY_LAYER('LAND_USE_HIER', 'STATES', 'FEATURE','POLYGON', NULL, counties_id); END;/


Carregar ppt "Bancos de Dados Espaciais"

Apresentações semelhantes


Anúncios Google