Arquitetura de SIG e Banco de Dados
Espaciais - Introdução
•
Definição:
•
Um banco de dados espacial é aquele que armazena
dados cadastrais e convencionais num único lugar: uma
tabela por exemplo.
Introdução
•
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
•
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
Introdução
SIG: Arquitetura em Camadas
• Separar as camadas de
– Armazenamento
– Manipulação
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.
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
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
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
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
Estratégias de Implementação
• Relacional
– Representação de temas por relações. Um
Estratégias de Implementação
• Relacional
– Representação de temas por relações. Um
objeto geográfico é uma tupla de uma relação
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
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
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
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
Estratégias de Implementação
• Relacional
– Desvantagens
• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)
Estratégias de Implementação
• Relacional
– Desvantagens
• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)
Estratégias de Implementação
• Relacional
– Desvantagens
• Dificuldade em elaborar consultas (princípio de independência de dados é quebrado)
• Baixa performance (muitas junções!)
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
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)
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)
Estratégias de Implementação
• DUAL ou Híbrida
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)
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.
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:
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.
Estratégias de Implementação
• DUAL
• Estratégia seguida pela grande parte de fabricantes de SIG:
– ARC/Info – Geomedia – MapInfo – Autodesk
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.
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)
Estratégias de Implementação
• DUAL
– Problemas:
• Requer treinamento em dois mundos distintos (SGBD + SIG)
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
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)
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???
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
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
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
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
Exemplo:Arquitetura BLOB
• Atributos no BD
• Geometrias no BD
mas em formato
proprietário
• IT pode acessar as
geometrias apenas
via API privada
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
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
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
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,
Estratégias de Implementação
• Integrada
– SGBD’s estensíveis permitem adicionar novos
tipos de dados e operações voltadas para as
funcionalidades espaciais.
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
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
Estratégias de Implementação
• Integrada
– Vantagens:
• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD
Estratégias de Implementação
• Integrada
– Vantagens:
• Total integração de dados convencionais com espaciais, inclusive usando toda funcionalidade provida por um SGBD
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
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
Arquitetura Integrada
• Spatial é nativo ao SGBD
• Atributos e geometrias
integrados no SGBD
• Suportado pelos vendores
de SIG
• Suportado de aplicações
de eBusiness
Gis versus gIS
• 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
• OGC Simple Features Specification
Introdução• O padrão SQL/MM
Introdução
Relacionamentos Espaciais
• Vários tipos
– Topológico: disjoint, overlap, contains
(reflexivo inside), meet, equal, cover( reflexivo
covered_by)
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
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
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
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
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
Operadores Espaciais
Relacionamentos Espaciais
Disjoint Contain Equal
Consultas espaciais
• Exemplos de esquemas
Consultas espaciais
• Exemplos de esquemas
• 2) Rodovias entre cidades
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
Consultas espaciais
• Consultas de referência
• Tipos
– Alfanumérico
– Espacial
– Interativa
Consultas espaciais
• Consultas de referância
– Alfa_ADM1: Número de habitantes da cidade de
Campina Grande
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
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
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.
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
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
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
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
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
Estendendo Modelo de Dados com
TDA Espaciais
• Escolha de tipos apropriados
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
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
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
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.
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
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)
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
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.
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
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
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.
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
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,
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!
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,
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,
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) );
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
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
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
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
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
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
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)
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
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
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
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
•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:
PostGIS-PostgreSQL
• PostGIS é uma extensão espacial para o PostgreSQL que implementa a especificação padrão OGC
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))
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
PostGIS-PostgreSQL
PostGIS-PostgreSQL
• Drenagem da cidade de
São Paulo
PostGIS-PostgreSQL
• Bairros da cidade de
São Paulo
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);
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’,
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);
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);
PostGIS-PostgreSQL
• 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],
PostGIS-PostgreSQL
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’,
PostGIS-PostgreSQL – Inserção de Dados
Carregando dados de um Shapefile:
# shp2pgsql shaperoads myschema.roadstable |
psql -d roadsdb
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)
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
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)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)