• Nenhum resultado encontrado

Unidade5

N/A
N/A
Protected

Academic year: 2021

Share "Unidade5"

Copied!
135
0
0

Texto

(1)

Arquitetura de SIG e Banco de Dados

Espaciais - Introdução

(2)

Definição:

Um banco de dados espacial é aquele que armazena

dados cadastrais e convencionais num único lugar: uma

tabela por exemplo.

Introdução

(3)

Definição:

Um banco de dados espacial é aquele que armazena

dados cadastrais e convencionais num único lugar: uma

tabela por exemplo.

O dado espacial passa a ser um tipo de dado, assim

como é um integer, então podemos criar uma coluna

numa tabela do tipo SPATIAL.

Introdução

(4)

Definição

Um banco de dados espacial é aquele que armazena dados

cadastrais e convencionais num único lugar: uma tabela por

exemplo.

O dado espacial passa a ser um tipo de dado, assim como é

um integer, então podemos criar uma coluna numa tabela

do tipo SPATIAL.

Provê:

Total integração dos dados

API de acesso único aos dados através de SQL

Não dependência de fabricante: pode ser ESRI, Google

Maps, MapInfo, qualquer aplicação!

Introdução

(5)

Introdução

(6)

SIG: Arquitetura em Camadas

• Separar as camadas de

– Armazenamento

– Manipulação

(7)
(8)

Arquitetura em Camadas

• Primeira camada trata da Visualização e

Manipulação:

– Visualização

• oferece funções básicas para visualização de objetos tradicionais e georeferenciados

– Manipulação

• oferece funções para denição e manipulação destes objetos.

(9)

Arquitetura em Camadas

• Segunda Camada corresponde ao nível de

representação do modelo

– oferece separadamente serviços de

manipulação de alto nível para atributos

convencionais

– representação raster

– representação vetorial

(10)

Arquitetura em Camadas

• Terceira Camada engloba os subsistemas que

oferecem serviços de armazenamento

– Armazenamento de dados não-espaciais

– Armazenamento de dados em formato raster

– Armazenamento de dados em formato vector

– Fazem uso do subsistema de Armazenamento

(11)

Arquitetura de SIG

• Existem diferentes estratégias de implementação

para a arquitetura de SIG baseadas em sistemas

de gerência de bancos de dados com grau

crescente de funcionalidade

• Estudaremos as estratégias:

– Relacional

– Dual

(12)

Estratégias de Implementação

• Relacional

– Representação de temas por relações. Um

objeto geográfico é uma tupla de uma relação

– Atributos são tipos simples

– Permite uso de SQL para consulta aos dados

– Não há implementação de SV, SAM, SMM

(13)

Estratégias de Implementação

• Relacional

– Representação de temas por relações. Um

(14)

Estratégias de Implementação

• Relacional

– Representação de temas por relações. Um

objeto geográfico é uma tupla de uma relação

(15)

Estratégias de Implementação

• Relacional

– Representação de temas por relações. Um

objeto geográfico é uma tupla de uma relação

– Atributos são tipos simples

(16)

Estratégias de Implementação

• Relacional

– Representação de temas por relações. Um

objeto geográfico é uma tupla de uma relação

– Atributos são tipos simples

– Permite uso de SQL para consulta aos dados

(17)

Estratégias de Implementação

• Relacional - Exemplo

Nome Capital População BordasID

Alemanha Berlin 78.5 B1

França Paris 58 B2

…. …. ….

Id_Contorno Ponto_num pontoId

C1 2 P1 BordaID contornoId B1 C1 B2 C2 B2 C3 B3 C4 B3 C5 PontoID X Y P1 452 1000 Ponto Borda Contorno País

(18)

Estratégias de Implementação

• Relacional - Exemplo

Consulta: “Obtenha os contornos da França” select Borda.contornoId, X, Y

from Pais, Borda, Contorno, Ponto where nome = „França‟

and Pais.bordaId = Borda.BordaID

and Borda.ContornoID = Contorno.contornoID and Contorno.pontoID = Ponto. pontoID

(19)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

(20)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

(21)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

• Baixa performance (muitas junções!)

(22)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

• Baixa performance (muitas junções!)

• Não amigável, tem que se manipular pontos sempre

(23)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

• Baixa performance (muitas junções!)

• Não amigável, tem que se manipular pontos sempre • Dificuldade de definir tipos espaciais

• Impossibilidade de expressar consultas espaciais (SMV e SMM)

(24)

Estratégias de Implementação

• Relacional

– Desvantagens

• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)

• Baixa performance (muitas junções!)

• Não amigável, tem que se manipular pontos sempre • Dificuldade de definir tipos espaciais

• Impossibilidade de expressar consultas espaciais (SMV e SMM)

(25)

Estratégias de Implementação

• DUAL ou Híbrida

(26)

Estratégias de Implementação

• DUAL ou Híbrida

– Um SIG usando a arquitetura DUAL possui:

• um SGBD relacional para armazenar em tabelas a componente convencional de todos os objetos (dados não espaciais)

(27)

Estratégias de Implementação

• DUAL ou Híbrida

– Um SIG usando a arquitetura DUAL possui:

• um SGBD relacional para armazenar em tabelas a componente convencional de todos os objetos (dados não espaciais)

• arquivos normais para a componente espacial dos objetos.

(28)

Estratégias de Implementação

• DUAL ou Híbrida

– Um SIG usando a arquitetura DUAL possui:

• um SGBD relacional para armazenar em tabelas a componente convencional de todos os objetos (dados não espaciais)

• arquivos normais para a componente espacial dos objetos.

– Em termos da arquitetura proposta:

(29)

Estratégias de Implementação

• DUAL ou Híbrida

– Um SIG usando a arquitetura DUAL possui:

• um SGBD relacional para armazenar em tabelas a componente convencional de todos os objetos (dados não espaciais)

• arquivos normais para a componente espacial dos objetos.

(30)

Estratégias de Implementação

• DUAL

• Estratégia seguida pela grande parte de fabricantes de SIG:

– ARC/Info – Geomedia – MapInfo – Autodesk

(31)

Estratégias de Implementação

• DUAL

– Consulta

• A execução de uma consulta em um ambiente dual

tipicamente segue um plano bem rígido: a componente convencional da consulta é processada pelo sgbd

relacional, em separado das restrições espaciais, que são deixadas a cargo do smm e do smv; os resultados parciais são posteriormente combinados pelo sm para gerar o resultado nal da consulta.

(32)

Estratégias de Implementação

• DUAL

– Consulta

• A execução de uma consulta em um ambiente dual

tipicamente segue um plano bem rígido: a componente convencional da consulta é processada pelo sgbd

relacional, em separado das restrições espaciais, que são deixadas a cargo do smm e do smv; os resultados parciais são posteriormente combinados pelo sm para gerar o resultado nal da consulta.

• => redução da possibilidade de otimização da consulta com um todo!! ( reduz performance)

(33)

Estratégias de Implementação

• DUAL

– Problemas:

• Requer treinamento em dois mundos distintos (SGBD + SIG)

(34)

Estratégias de Implementação

• DUAL

– Problemas:

• Requer treinamento em dois mundos distintos (SGBD + SIG)

• Não utiliza recursos de SGBD (concorrência,

tolerância a falhas, otimização, integridade) para os dados espaciais

(35)

Estratégias de Implementação

• DUAL

– Problemas:

• Requer treinamento em dois mundos distintos (SGBD + SIG)

• Não utiliza recursos de SGBD (concorrência,

tolerância a falhas, otimização, integridade) para os dados espaciais

• SAM e SAV só usam as funcionalidades de sistema de arquivo (pobre)

(36)

Estratégias de Implementação

• DUAL

– Problemas:

• Requer treinamento em dois mundos distintos (SGBD + SIG)

• Não utiliza recursos de SGBD (concorrência,

tolerância a falhas, otimização, integridade) para os dados espaciais

• SAM e SAV só usam as funcionalidades de sistema de arquivo (pobre)

• Problema de integridade: se removermos um

objeto espacial, quem garante que os respectivos dados convencionais também serão removidos???

(37)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Esta estratégia baseia-se no uso de SGBDs

relacionais com suporte para campos longos,

nos quais são armazenadas as componentes

espaciais dos objetos

(38)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Esta estratégia baseia-se no uso de SGBDs

relacionais com suporte para campos longos,

nos quais são armazenadas as componentes

espaciais dos objetos

(39)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Esta estratégia baseia-se no uso de SGBDs

relacionais com suporte para campos longos,

nos quais são armazenadas as componentes

espaciais dos objetos

– Então, SMC, SAC, SAV e SAM estão no SGBD

(40)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Esta estratégia baseia-se no uso de SGBDs

relacionais com suporte para campos longos,

nos quais são armazenadas as componentes

espaciais dos objetos

– Então, SMC, SAC, SAV e SAM estão no SGBD

– Porém, SMM e SMV ainda estão fora do SGBD

(41)

Exemplo:Arquitetura BLOB

• Atributos no BD

• Geometrias no BD

mas em formato

proprietário

• IT pode acessar as

geometrias apenas

via API privada

(42)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Vantagens

• uso de um SGBD para representação de dados convencionais e espacias, fazendo uso de toda funcionalidade de um SGBD

(43)

Estratégias de Implementação

• Campos Longos (BLOBS)

– Vantagens

• uso de um SGBD para representação de dados convencionais e espacias, fazendo uso de toda funcionalidade de um SGBD

– Desvantagens

• Um BLOB é uma caixa preta (binário) em que se pode acessar todo o objeto ou parte deste, mas sem conhecer a semântica do objeto

(44)

Estratégias de Implementação

• Integrada

– uso de um SGBD estensível (Orientado -a

objeto ou Objeto -Relacional) que disponha

de mecanismos que permitam implementar

o tratamento das componentes espaciais

através de extensões ao seu ambiente

– Exemplos: PostgresQL, Oracle 11g,

Mircosoft SQLServer, Informix Universal

Server, IBM DB2 Universal Server, MySQL

(45)

Estratégias de Implementação

• Integrada

– uso de um SGBD estensível (Orientado -a

objeto ou Objeto -Relacional) que disponha

de mecanismos que permitam implementar

o tratamento das componentes espaciais

através de extensões ao seu ambiente

– Exemplos: PostgresQL, Oracle 11g,

(46)

Estratégias de Implementação

• Integrada

– SGBD’s estensíveis permitem adicionar novos

tipos de dados e operações voltadas para as

funcionalidades espaciais.

(47)

Estratégias de Implementação

• Integrada

– SGBD’s estensíveis permitem adicionar novos

tipos de dados e operações voltadas para as

funcionalidades espaciais.

– DDL e DML são estendidas para usar estes

novos tipos e operações

(48)

Estratégias de Implementação

• Integrada

– SGBD’s estensíveis permitem adicionar novos

tipos de dados e operações voltadas para as

funcionalidades espaciais.

– DDL e DML são estendidas para usar estes

novos tipos e operações

– Mecanismos de indexação espacial (Rtree)

podem ser criados e o SGBD saberá como

otimizar consultas usando estes novos

(49)

Estratégias de Implementação

• Integrada

– Vantagens:

• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD

(50)

Estratégias de Implementação

• Integrada

– Vantagens:

• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD

(51)

Estratégias de Implementação

• Integrada

– Vantagens:

• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD

• Semântica de dados espaciais conhecida

(52)

Estratégias de Implementação

• Integrada

– Vantagens:

• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD

• Semântica de dados espaciais conhecida

• smm, sam, smv e o sav como extensões do sgbd

(53)

Arquitetura Integrada

• Spatial é nativo ao SGBD

• Atributos e geometrias

integrados no SGBD

• Suportado pelos vendores

de SIG

• Suportado de aplicações

de eBusiness

(54)

Gis versus gIS

(55)
(56)

• O ISO/IEC 13249 SQL/MM é um esforço para se

padronizar extensões dos SGBDs para dados

multimídia: imagens, texto e espacial

• A parte referente aos dados espaciais é

– ISO/IEC 13249-3 SQL/MM Part 3: Spatial

• Foi inspirado no OGC Simple Features

Specification (ver próximo slide)

Introdução

(57)

• OGC Simple Features Specification

Introdução

(58)

• O padrão SQL/MM

Introdução

(59)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains

(reflexivo inside), meet, equal, cover( reflexivo

covered_by)

(60)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains

(reflexivo inside), meet, equal, cover( reflexivo

covered_by)

– Direcional: left, right, above, below, north,

south, east, west, northeast, northwest,

southest, southwest

(61)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains

(reflexivo inside), meet, equal, cover( reflexivo

covered_by)

– Direcional: left, right, above, below, north,

south, east, west, northeast, northwest,

southest, southwest

– Métrico: area, perimeter, length, distance, far,

near, buffer

(62)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains

(reflexivo inside), meet, equal, cover( reflexivo

covered_by)

– Direcional: left, right, above, below, north,

south, east, west, northeast, northwest,

southest, southwest

– Métrico: area, perimeter, length, distance, far,

near, buffer

(63)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains (reflexivo

inside), meet, equal, cover( reflexivo covered_by)

– Direcional: left, right, above, below, north, south,

east, west, northeast, northwest, southest,

southwest

– Métrico: area, perimeter, length, distance, far,

near, buffer

(64)

Relacionamentos Espaciais

• Vários tipos

– Topológico: disjoint, overlap, contains (reflexivo

inside), meet, equal, cover( reflexivo covered_by)

– Direcional: left, right, above, below, north, south,

east, west, northeast, northwest, southest,

southwest

– Métrico: area, perimeter, length, distance, far,

near, buffer

– Rede: connected, next, previous, shortest_path

– Conjunto: intersection, union, difference, equals

(65)

Operadores Espaciais

(66)

Relacionamentos Espaciais

Disjoint Contain Equal

(67)

Consultas espaciais

• Exemplos de esquemas

(68)

Consultas espaciais

• Exemplos de esquemas

• 2) Rodovias entre cidades

(69)

Consultas espaciais

• Exemplos de esquemas

• 3) Uso da Terra (Land Use)

– cada pedaço de terra no mapa represnta um

tema:

• agricultura • habitação • floresta

(70)

Consultas espaciais

• Consultas de referência

• Tipos

– Alfanumérico

– Espacial

– Interativa

(71)

Consultas espaciais

• Consultas de referância

– Alfa_ADM1: Número de habitantes da cidade de

Campina Grande

(72)

Consultas espaciais

• Consultas de referância

– Alfa_ADM1: Número de habitantes da cidade de

Campina Grande

– Alfa_AMD2. Lista das cidades do estado da

Paraíba

(73)

Consultas espaciais

• Consultas de referância

– Alfa_ADM1: Número de habitantes da cidade de

Campina Grande

– Alfa_AMD2. Lista das cidades do estado da

Paraíba

(74)

Consultas espaciais

• Consultas de referância

– Alfa_ADM1: Número de habitantes da cidade de

Campina Grande

– Alfa_AMD2. Lista das cidades do estado da

Paraíba

– Alfa_ADM3. Número de habitantes no Brasil

– Alfa_Rodovia1: Número de linhas na primeira

seção da BR 230

– Alfa_Rodovia2: Nome de todas as seções que

constituem BR-116.

(75)

Consultas espaciais

• Consultas de referância

– Alfa_ADM1: Número de habitantes da cidade de

Campina Grande

– Alfa_AMD2. Lista das cidades do estado da

Paraíba

– Alfa_ADM3. Número de habitantes no Brasil

– Alfa_Rodovia1: Número de linhas na primeira

(76)

Consultas espaciais

• Consultas de referância

– Espac-ADM4. Cidades adjacentes à cidade

Cajazeiras num mesmo estado

– Espac_ADM5. Mostre o estado da Paraíba

– Espac_ADM6. Cidades maiores do que a maior

cidade da Paraíba

– Espac_Rodov3. Tamanho da rodovia BR-230

– Espac_ADM_Rodo1. Mostre as rodovias que

(77)

Consultas espaciais

• Consultas de referência

– Espac_ADM_UT1. Mostre todas as áreas

residenciais na cidade de Recife

– Espac_ADM_UT2. Faça um overlay dos temas de

unidades administrativas e uso da terra

– INTER_ADM7. Descrição da cidade apontada na

tela

(78)

Consultas espaciais

• Consultas de referência

– INTER_ADM9. Partes de cidades dentro de um

dado retângulo na tela

– INTER_Rodo5. Descrição de uma seção apontada

na tela

– INTER_Rodo6. Descrição da rodovia cuja seção

está sendo apontada na tela

(79)

Estendendo Modelo de Dados com

TDA Espaciais

• Conceitos básicos:

– Com TDA (Tipo Abstrato de Dados) Espaciais, uma

objeto espacial, é considerado como uma lista de

operações que podemos executar neste

independente de sua representação interna.

– Exemplo: Interseção de dois objetos

(80)

Estendendo Modelo de Dados com

TDA Espaciais

• Escolha de tipos apropriados

(81)

Estendendo Modelo de Dados com

TDA Espaciais

• Definindo Operações sobre TDA Espaciais

– O resultado de uma operação espacial pode ser

um tipo atômico (integer, real, boolean) ou um

dos três tipos espaciais: ponto, linha, polígono

(82)

Estendendo Modelo de Dados com

TDA Espaciais

• Ex. Interseção entre objetos espaciais

A

B

AB = 2 Polígonos;ou 2 polígonos e 1 linha; ou 2 polígonos, 1 ponto e 1 linha

(83)

Estendendo Modelo de Dados com

TDA Espaciais

• API do TDA Região:

– PointInRegion (região, ponto): boolean (testa se um

ponto pertence a uma região)

– Overlaps(região, região):boolean ( testa se duas

regiões interceptam

– Clipping(região, retângulo): região (computa a

interseção de uma região e um retângulo

retornando uma região (possivelmente vazia))

– Intersection(região, regiào): região (retorna a

(84)

Estendendo Modelo de Dados com

TDA Espaciais

• API do TDA Região:

– Meets (região, região): boolean (testa a

adjacência de duas regiões)

– Area( região) : real (retorna a área da região)

– União (set{região}) : região (recebe um

conjunto de regiões e retorna uma região que

representa a união das regiões de entrada.

(85)

Estendendo Modelo de Dados com

TDA Espaciais

• API do TDA Linha:

– pointInLine(linha, ponto): boolean (testa a

interseção entre a linha e um ponto

– length(linha):real (computa o comprimento de

uma linha)

– overlapsLinhaRegião(linha, região): boolean

(testa a interseção entre uma linha e uma

(86)

Estendendo Modelo de Dados com

TDA Espaciais

• API do TDA Ponto:

– distance(region, ponto): real (computa a

distância entre um ponto e as bordas de uma

região)

– distance(ponto, ponto): real (computa a

distância entre dois pontos)

(87)

Projetando TDA Espaciais

• Operações Unárias com resultado Boolean.

• Testam um objeto espacial com relação a uma

propriedade dada. Exemplo teste de conectividade

• Operações Unárias com resultado escalar

• computar uma área, um comprimento, perímetro de um objeto espacial

• Operações Unárias com resultado Espacial

(88)

Projetando TDA Espaciais

• Operações Unárias com resultado Boolean.

• Testam um objeto espacial com relação a uma

propriedade dada. Exemplo teste de conectividade

• Operações Unárias com resultado escalar

• computar uma área, um comprimento, perímetro de um objeto espacial

• Operações Unárias com resultado Espacial

• transformações topológicas (preservam os

relacionamentos topológicos) : rotação, translação, mudança de escala, simetria.

(89)

Projetando TDA Espaciais

• Operações Binárias com resultado espacial

• operações de conjunto: interseção, união, diferença • Ex. Parte das rodovias dentro do estado da Pb

• Operações Binárias com resultado Boolean

• usados seleção e junção espacial

• Predicados topológicos: intersects, contains, adjacent, enclosed_by, windowing

(90)

Projetando TDA Espaciais

• Operações Binárias com resultado escalar

– distância entre uma rodovia e uma cidade

• Algumas observações importantes:

• A interseção de dois polígono é um conjunto de poligonos

• A interseção de uma linha e uma região retorna vários pontos (não necessariamente uma linha) • A união de dois linestrings (polylines) não é um

linestring

• A diferença de dois polígonos sem buracos pode ser um polígono com buraco

(91)

Explorando relacionamentos entre

Objetos espaciais

• Uma definição formal dos relacionamentos

espacias se faz necessária para clarificar os

vários entendimentos destes relacionamentos

entre usuários

• Enfocaremos relacionamentos topológicos

entre dois objetos no plano.

(92)

Explorando relacionamentos entre

Objetos espaciais

b(A) b(B) i(A)i(B) b(A)i(B) i(A)b(B) Relacionamento

{} {} {} {} A disjoint B ~{} {} {} {} A meets B ~{} ~{} {} {} A equals B {} ~{} ~{} {} A inside B ~{} ~{} ~{} {} B covers A {} ~{} {} ~{} B inside A ~{} ~{} {} ~{} A covers B ~{} ~{} ~{} ~{} A overlaps B

Onde: {} representa conjunto vazio e ~{} representa conjunto não-vazio

(93)

Uso do modelo OR para

funcionalidade espacial

– Usando SGBDOR (Objeto-Relacional) permite

usuários não só usar os tipos definidos pelo

SGBD como também definir e usar TADs.

– Criando o BD para aplicação Administrativa

Create table Pais ( create table Estado ( codigo integer, codigo integer,

nome varchar(30), nome varchar(30), geometria polígono, codPais int,

(94)

Uso do modelo OR para

funcionalidade espacial

Create table Cidade ( codigo integer,

nome varchar(30), populacao: int,

codEstado int,

geometria polígono, primary key (codigo),

foreign key(codEstado) references Estado(codigo) );

Obs. Poderiamos ter apenas a geometria em cidades e ai derivaríamos para estado e país, porém é muito custoso computar a geometria de um estado através da união de todos as cidades e assim por diante!

(95)

Uso do modelo OR para

funcionalidade espacial

Aplicação de Rodovias

Create table Rodovia ( create table Secao( codigo int, codigo int,

nome varchar(5), nome varchar(4), tipo varchar(2), númeroLinhas int, primary key(2) cidadeIni varchar(30), ); cidadeFim varchar(30),

geometria line,

create table SeçãoRodovia ( primary key(codigo),

codSecao int, foreign key(cidadeIni) references Cidade, numeroSecao int, foreign key(cidadeFim) references Cidade); codRodovia int,

(96)

Uso do modelo OR para

funcionalidade espacial

Aplicação de Rodovias

create table Secao( codigo int, nome varchar(4), númeroLinhas int, cidadeIni varchar(30), cidadeFim varchar(30), geometria line, primary key(codigo),

foreign key(cidadeIni) references Cidade, foreign key(cidadeFim) references Cidade); create table cidade (

nome varchar(30), populacao int,

(97)

Uso do modelo OR para

funcionalidade espacial

Aplicação Uso da Terra

create table UsoTerra (

nomeRegiao varchar(30), tipoUsoTerra varchar(30)m geometria poligono,

primary key(nomeRegiao) );

(98)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ALFA_ADM1: Número de habitantes do estado da Paraíba select populacao

from Estado

where nome = ‘Paraiba’

ALFA_ADM2: Liste os nomes das cidades no estado da Paraiba select nome

from Estado e, Cidade c

(99)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ALFA_ADM3. Número de habitantes do Brasil select sum(c.populacao)

from Pais p, Estado e, Cidade c

where p.nome = ‘Brasil’ and e.codigo = c.codEstado and p.codigo = e.codPais

ALFA_R1: Número de linhas na primeira seção da BR-230 select s.numeroLinhas

(100)

Uso do modelo OR para

funcionalidade espacial

Consultas :

Alfa_R2. Nomes de seções que constituem a BR230 select s.nome

from RodoviaSecao rs, Rodovia r, Secao s

where r.nome = „BR230‟ and r.codigo = rs.codRodovia and rs.codSecao = s.codigo

ESPAC_ADM4. Cidades adjacentes à cidade de Cajazeiras no mesmo estado

select c1.nome

from Cidade c1, Cidade c2 where c2.nome = „Cajazeiras‟

and c1.codEstado = c2.codEstado

(101)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ESPAC_ADM5. Mostre o estado da Paraíba select geometria

from Estado

where nome = „Paraiba‟

SE a geometria tivesse sido armazenada apenas nas cidades a query anterior ficaria

select RegionUnion(c.geometria) from Cidade c, Estado

(102)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ESPAC_ADM6: Cidades maiores do que a maior cidade da Paraíba select nome

from Cidade

where Area(geometria) >

(select max (Area(c.geometria)) from Cidade c, Estado e

(103)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ESPAC_R3. Comprimento da rodovia BR230 select sum(Length(s.geometria))

from Rodovia r, RodoviaSecao rs, Secao s

where r.nome = „BR230‟ and r.codigo = rs.codRodovia and rs.codSecao = s.codigo

ESPAC_ADMR1. Todas as rodovias que passam pela Paraíba select distinct r.nome

(104)

Uso do modelo OR para

funcionalidade espacial

Consultas :

ESPAC_ADM_UT1. Mostre todas as áreas residenciais na cidade de Recife

select Intersection(u.geometria, c.geometria) from Cidade c, UsoTerra u

where c.nome = ‘Recife’

and u.tipoUsoTerra = ‘area residencial’ and Overlaps(u.geometria, c.geometria)

(105)

Uso do modelo OR para

funcionalidade espacial

Consultas :

INTER_ADM7. Descrição da cidade apontada na tela select nome, populacao

from Cidade

where PointInRegion(geometria, @point)

INTER_ADM8. Cidades que interceptam um dado retângulo na tela

select nome from Cidade

(106)

Uso do modelo OR para

funcionalidade espacial

Consultas :

INTER_ADM9. Partes de cidade que estão dentro de um dado retângulo na tela

select Clipping(geometria, @rectangle) from Cidade

where Overlaps(geometria, @rectangle)

INTER_R5. Descrição da seção apontada na tela select nome, numeroLinhas

from Secao

(107)

Uso do modelo OR para

funcionalidade espacial

Consultas :

INTER_R6. Descrição das rodovias cuja seção está apontada na tela

select r.nome, r.tipo

from RodoviaSecao rs, Rodovia r, Secao s where rs.codRodovia = r.codigo

and rs.codSecao = s.codigo

(108)

Operações Espaciais: buffer zones

• região dentro de distância ‘x’

units

• buffer em qualquer objeto:

ponto, linha ou polígono

Exemplos

• buffer de 200 metros ao redor

de uma propriedade

• buffer de 100 ft de um rio

limitando desenvolvimento

• buffer de zona de 3 km dos

limites de uma cidade

mostrando a sua área distrital

• usado para definir (ou excluir)

áreas como opção para futura análise polygon buffer line buffer point buffers

(109)

•ERASE - apaga as features do mapa que sobrepõe com os poligonos da região selecianada

para o erase.

•CLIP - extrai as features do mapa que

sobrepõe com região selecianada para o clip.

Exemplo: Spatial Matching:

(110)

PostGIS-PostgreSQL

• PostGIS é uma extensão espacial para o PostgreSQL que implementa a especificação padrão OGC

(111)

PostGIS-PostgreSQL

• Esses tipos possuem a seguinte representação textual: • Point: (0 0 0) • LineString: (0 0, 1 1, 2 2) • Polygon: ((0 0 0, 4 0 0, 4 4 0, 0 4 0, 0 0 0), ( 1 0 0, ...), ...) • MultiPoint: (0 0 0, 4 4 0) • MultiLineString: ((0 0 0, 1 1 0, 2 2 0), (4 4 0, 5 5 0, 6 6 0)) • MultiPolygon: (((0 0 0, 4 0 0, 4 4 0, 0 4 0, 0 0 0), (...), ...), ...) • GeometryCollection: (POINT(2 2 0), LINESTRING((4 4 0, 9 9 0))

(112)

PostGIS-PostgreSQL

• Estudo de Caso:

– Distritos da cidade de São Paulo

– Drenagem da cidade de São Paulo

– Bairros da cidade de São Paulo

(113)

PostGIS-PostgreSQL

(114)

PostGIS-PostgreSQL

• Drenagem da cidade de

São Paulo

(115)

PostGIS-PostgreSQL

• Bairros da cidade de

São Paulo

(116)

PostGIS-PostgreSQL

Dos distritos de São Paulo,

CREATE TABLE distritossp

( cod SERIAL, sigla VARCHAR(10), denominacao

VARCHAR(50),

PRIMARY KEY (cod) );

SELECT AddGeometryColumn(‘BDEspacial', 'distritossp',

'spatial_data', -1, 'POLYGON', 2);

(117)

PostGIS-PostgreSQL

• Adicione uma coluna espacial à tabela usando a função OpenGIS "AddGeometryColumn".

• A sintaxe é:

AddGeometryColumn(<schema_name>, <table_name>, <column_name>, <srid>, <type>,<dimension>)

• Ou, usando o esquema corrente:

AddGeometryColumn(<table_name>, <column_name>, <srid>, <type>,<dimension>)

• Exemplo1: SELECT AddGeometryColumn(’public’, ’roads_geom’,

(118)

PostGIS-PostgreSQL

• Dos bairros de São Paulo

CREATE TABLE bairrossp

( cod SERIAL,

bairro VARCHAR(40),

distr VARCHAR(40),

PRIMARY KEY (cod));

SELECT AddGeometryColumn(‘BDEspacial',

'bairrossp', 'spatial_data', -1, 'POINT', 2);

(119)

PostGIS-PostgreSQL

• Do mapa de drenagem

CREATE TABLE drenagemsp

( cod SERIAL,

classe VARCHAR(255) NULL,

PRIMARY KEY (cod)

);

SELECT AddGeometryColumn(‘BDEspacial', 'drenagemsp',

'spatial_data', -1, 'LINESTRING', 2);

(120)

PostGIS-PostgreSQL

(121)

• The Well-Known Text representation of the Spatial Reference System. An example of a WKTnSRS representation is:

PROJCS["NAD83 / UTM Zone 10N", GEOGCS["NAD83", DATUM["North_American_Datum_1983", SPHEROID["GRS 1980",6378137,298.257222101] ], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433] ], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",-123], PARAMETER["scale_factor",0.9996], PARAMETER["false_easting",500000],

(122)

PostGIS-PostgreSQL

(123)

PostGIS-PostgreSQL – Inserção de Dados

INSERT INTO bairrossp (bairro, spatial_data) VALUES('JARDIM DOS EUCALIPTOS',

GeometryFromText('POINT(321588.628426 7351166.969244)', -1));

INSERT INTO drenagemsp (classe, spatial_data)VALUES('RIOS',

GeometryFromText('LINESTRING(344467.895137 7401824.476217, 344481.584686 7401824.518728, 344492.194756 7401825.716359, …)’, -1));

INSERT INTO distritossp (denominacao, sigla, spatial_data) VALUES('MARSILAC', ‘MAR’,

(124)

PostGIS-PostgreSQL – Inserção de Dados

Carregando dados de um Shapefile:

# shp2pgsql shaperoads myschema.roadstable |

psql -d roadsdb

(125)

PostGIS-PostgreSQL – Index

• Sintaxe: CREATE INDEX sp_idx_name ON nome_tabela

USING GIST (coluna_geometrica GIST_GEOMETRY_OPS);

• Exemplos:

CREATE INDEX sp_idx_bairros ON bairrossp USING GIST

(SPATIAL_DATA GIST_GEOMETRY_OPS)

CREATE INDEX sp_idx_bairros ON distritossp USING GIST

(SPATIAL_DATA GIST_GEOMETRY_OPS)

(126)

PostGIS-PostgreSQL – Index

• Forçando o uso do index numa consulta através do

operador &&::

SELECT * FROM grande_sp

WHERE 'BOX3D(438164.882699 7435582.150681,

275421.967006 7337341.000355)'::box3d

(127)

PostGIS-PostgreSQL –

Consultas

• Operadores topológicos conforme a Matriz de

9-Interseções :

– equals(geometry, geometry) – disjoint(geometry, geometry) – intersects(geometry, geometry) – touches(geometry, geometry) – crosses(geometry, geometry) – within(geometry, geometry) – overlaps(geometry, geometry) – contains(geometry, geometry)

(128)

PostGIS-PostgreSQL –

Consultas

• Operador de construção de mapas de distância:

buffer(geometry, double, [integer])

• Operador para construção do Fecho Convexo:

convexhull(geometry)

• Operadores de conjunto:

– intersection(geometry, geometry) – geomUnion(geometry, geometry) – difference(geometry, geometry)

(129)

PostGIS-PostgreSQL –

Consultas

• Operadores Métricos:

– distance(geometry,geometry) – area(geometry)

• Centróide de geometrias:

– Centroid(geometry)

• •Validação (verifica se a geometria possui

auto-interseções):

(130)

PostGIS-PostgreSQL –

Consultas

• 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 d2.nomemunicp

FROM grande_sp d1, grande_sp d2

WHERE touches(d1.spatial_data, d2.spatial_data)

AND (d2.nomemunicp <> 'SAO PAULO')

(131)

PostGIS-PostgreSQL –

Consultas

• Consulta 1: Usando o índice espacial

SELECT d2.nomemunicp

FROM distritossp d1, distritossp d2

WHERE touches(d1.spatial_data, d2.spatial_data)

AND (d2.nomemunicp <> 'SAO PAULO')

AND (d1.spatial_data && d2.spatial_data)

AND (d1.nomemunicp = 'SAO PAULO');

(132)

PostGIS-PostgreSQL –

Consultas

• 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 grande_sp.nomemunicp

FROM distritossp, grande_sp

WHERE touches(distritossp.spatial_data,

grande_sp.spatial_data)

AND (distritossp.spatial_data &&

grande_sp.spatial_data)

(133)

PostGIS-PostgreSQL –

Consultas

• Consulta 3:

Recuperar o número de bairros contidos

no distrito Grajaú

SELECT COUNT(*)

FROM bairrossp pt, distritossp pol

WHERE contains(pol.spatial_data, pt.spatial_data)

AND (pol.spatial_data && pt.spatial_data)

(134)

PostGIS-PostgreSQL – Consultas

• Consulta 4:

Recuperar todos

os distritos do município de

São Paulo que estão num

raio de 3km de um

determinado rio

SELECT distritossp.denominacao

FROM distritossp, drenagemsp

WHERE

intersects(buffer(drenagemsp.

spatial_data, 3000),

distritossp.spatial_data)

AND drenagemsp.cod = 59;

(135)

PostGIS-PostgreSQL –

Consultas

• Consulta 5:

Recuperar todos os bairros que estejam a

menos de 3 Km do bairro Boacava

SELECT b1.bairro

FROM bairrossp b1, bairrossp b2

WHERE (distance(b1.spatial_data, b2.spatial_data)

< 3000)

Referências

Documentos relacionados

Nos tempos atuais, ao nos referirmos à profissão docente, ao ser professor, o que pensamos Uma profissão indesejada por muitos, social e economicamente desvalorizada Podemos dizer que

Como a tendência, pela primazia das eleições majoritárias, seria de concentração de força em dois ou três partidos, e esse espaço já está ocupado por PT, PMDB e PSDB,

A Sociedade gerencia suas relações com o meio ambiente como fator estratégico, tendo como premissa o pleno atendimento da legislação aplicável, e as diretrizes e normas internas.

Considerando-se que os principais fatores que contribuem para o controle das lesões malignas são constituídos pelo binômio prevenção e diagnóstico precoce, é

Pacientes em pós-operatório imediato de câncer de mama foram incluídas em outro ensaio clínico randomizado, com protocolo de exercícios de membros superiores livres ou

A revisão realizada por ERDMAN (1988a) mostrou que, nos dezessete experimentos em que a silagem de milho foi a única fonte de volumoso oferecida a vacas leiteiras no início

Resposta experimental (linha contínua) e simulada (linha traço e ponto) dos níveis h1 e h2 ao degrau nas respectivas referências (linha tracejada) do sistema em malha fechada em

O produto a ser ofertado pela MultiFit Gourmet será um tipo de alimentação voltada para pessoas que fazem musculação, que precisam se alimentar de maneira