operadores topológicos – sql st relatesertie.fct.unesp.br › wp-content › uploads › 2017 ›...

Post on 28-Jun-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

SIGSIG

Operadores topológicos – SQLST_RELATE

Alisson Fernando Coelho do Carmo

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Arquitetura integradaArquitetura integrada

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

PostGIS + PostgreSQLPostGIS + PostgreSQL

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

Tipos de dados PostGIS:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Tipos de dadosTipos de dados

Esses tipos possuem a seguinte representação textual:

Point: (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))

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Passos para construçãoPassos para construção

Construção do Banco de dados espacial

1- Planejamento do banco de dados

Esquematização (papel e lápis)

Definição das entidades e relacionamentos2 – Implementação do modelo (SQL)

Create table..., Foreign Key..., Primary key3 – Adição dos atributos espaciais

SELECT addGeometryColumn(....)4 – Inserção de dados

INSERT INTO...5 – Consulta e manipulação dos dados

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Planejamento do banco de dadosPlanejamento do banco de dados

Ex) Banco de dados para:

Registrar os dados e geometrias dos lotes

Registrar os dados e geometrias dos bairros

Definição dos atributos e tipos de dados

Esquematização lógica do banco de dados

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Implementação do modelo (SQL)Implementação do modelo (SQL)

Para instalar a extensão espacial POSTGIS:

– Download do instalador POSTGIS

– Instalar POSTGIS

– Criar a extensão no banco de dados:• CREATE EXTENSION POSTGIS;

Utilizar as funções do POSTGIS (instalado no public):

– SET SEARCH_PATH TO nome_usu, public;

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Consulta e manipulação dos dadosConsulta e manipulação dos dados

Operadores topológicos conforme a Matriz de 9-Interseções :

st_equals(geometry, geometry)

st_disjoint(geometry, geometry)

st_intersects(geometry, geometry)

st_touches(geometry, geometry)

st_crosses(geometry, geometry)

st_within(geometry, geometry)

st_overlaps(geometry, geometry)

st_contains(geometry, geometry)

Retornam a matriz de intersecção.

st_relate(geometry, geometry):

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Operadores topológicos (Todos)Operadores topológicos (Todos)

boolean ST_Relate(geometry geomA, geometry geomB, text intersectionMatrixPattern);

text ST_Relate(geometry geomA, geometry geomB);

SELECT ST_Relate(

ST_GeometryFromText('POINT(1 2)'),

ST_Buffer(ST_GeometryFromText('POINT(1 2)'),2)

);

0FFFFF212

SELECT ST_Relate(

ST_GeometryFromText('POINT(1 2)'),

ST_Buffer(ST_GeometryFromText('POINT(1 2)'),2),

'0FFFFF212');

t

DIMENSÕES0 => ponto1 => linha2 => áreaT => {0,1,2}F => vazio* => Qualquer

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Padrões da Padrões da DE-9IMDE-9IM

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Operadores topológicos (Todos)Operadores topológicos (Todos)

RESULTADO(RELATE)212101212

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Dados geométricosDados geométricos

A

B

(0,0) (10, 0) 20, 0 (27, 0)

(10, 0)

(20, 0) A(2, 18)(13, 18)(13, 7)(2, 7)

B(13, 18)(21, 18)(21, 2)(13, 2)

Fazer a DE-9IM:Interior, fronteira, exterior

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Inserção dos dadosInserção dos dados

Definição das coordenadas (sistema local)

A: (2, 18), (13, 18), (13, 7), (2, 7)

B: (13, 18), (21, 18), (21, 2), (13, 2)

Definição do SQL

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((2 18, 13 18, 13 7, 2 7, 2 18))'),

ST_GeomFromText('POLYGON((13 18, 21 18, 21 2, 13 2, 13 18))')

);

"FF2F11212"

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((2 2, 8 2, 8 4, 2 4, 2 2))'),

ST_GeomFromText('LINESTRING(1 1, 6 1)')

);

(2, 2)

(8, 4)

(1,1) (6,1)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((2 2, 8 2, 8 4, 2 4, 2 2))'),

ST_GeomFromText('LINESTRING(1 1, 6 1)')

);

(2, 2)

(8, 4)

(1,1) (6,1)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((1 1, 5 1, 5 4, 1 5, 1 1))'),

ST_GeomFromText('POLYGON((3 2, 9 2, 9 5, 3 5, 3 2))')

);

(1, 1)

(9, 5)

(5, 4)

(3, 2)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((1 1, 5 1, 5 4, 1 5, 1 1))'),

ST_GeomFromText('POLYGON((3 2, 9 2, 9 5, 3 5, 3 2))')

);

(1, 1)

(9, 5)

(5, 4)

(3, 2)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 7 , 3 ) ) ,

ST MakeBox2D ( ST Point ( 3 , 3 ) , ST Point ( 9 , 5 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 7 , 3 ) ) ,

ST MakeBox2D ( ST Point ( 3 , 3 ) , ST Point ( 9 , 5 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 9 , 5 ) ) ,

ST MakeBox2D ( ST Point ( 2 , 2 ) , ST Point ( 8 , 4 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 9 , 5 ) ) ,

ST MakeBox2D ( ST Point ( 2 , 2 ) , ST Point ( 8 , 4 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 4 , 3 ) ) ,

ST MakeBox2D ( ST Point ( 6 , 3 ) , ST Point ( 9 , 5 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

ST MakeBox2D ( ST Point ( 1 , 1 ) , ST Point ( 4 , 3 ) ) ,

ST MakeBox2D ( ST Point ( 6 , 3 ) , ST Point ( 9 , 5 ) )

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((2 2, 8 2, 8 4, 2 4, 2 2))'),

ST_GeomFromText('point(5 1)')

);

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Exemplos – operador topológicoExemplos – operador topológico

SELECT ST_RELATE(

ST_GeomFromText('POLYGON((2 2, 8 2, 8 4, 2 4, 2 2))'),

ST_GeomFromText('point(5 1)')

);

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Operadores topológicosOperadores topológicos

EXEMPLO com o TOCAR

boolean ST_Touches(geometry g1, geometry g2);

SELECT ST_Touches(

ST_GeomFromText('LINESTRING(0 0, 1 1, 0 2)'),

ST_GeomFromText('POINT(2 2)')

);

f

SELECT ST_Touches(

ST_GeomFromText('LINESTRING(0 0, 1 1, 0 2)'),

ST_GeomFromText('POINT(0 2)')

);

t

FALSE

TRUE

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

SFS – Simple Feature Specification

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Funções PostGIS - SFSFunções PostGIS - SFS

Especificação definida e bem documentada

Padrão OGC

É uma especificação criada pelo OGC que trata das seguintes

questões:

Armazenamento da componente espacial vetorial de dados geográficosem bancos de dados

Fornecimento de interface de acesso a esses dados:• SQL, CORBA e COM

• Versões: 1.1.0 e 1.2.0

Na prática:• SQL: PostgreSQL/PostGIS ou Oracle Spatial

• SQL + Linguagem: TerraLib+MySQL ou ARCSDE+SQLServer

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Funções PostGIS - SFSFunções PostGIS - SFS

Simple Feature Access - Part 1: Common Architecture

http://www.opengeospatial.org/standards/sfa

Modelo Geométrico

Operadores Espaciais

Simple Feature Access - Part 2: SQL Option

http://www.opengeospatial.org/standards/sfs

SQL

CORBA

COM

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Funções PostGIS - SFSFunções PostGIS - SFS

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Funções PostGIS - SFSFunções PostGIS - SFS

Dimensionalidade da figura geométrica:

0-dimensional: ponto

1-dimensional: linha

2-dimensional: polígono

Dimensionalidade do espaço onde está inserida a figura

geométrica:

2D: plano cartesiano

3D: espaço tridimensional

2D+M: plano cartesiano com uma medida associada

3D+M: espaço tridimensional com uma medida associada

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Tipos de dados espaciaisTipos de dados espaciais

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade das geometriasIntegridade das geometrias

De acordo com SFS:

Todas as geometrias devem ser simples e válidas

(0-dim e 1-dim) Uma geometria é simples se:• Não possuir pontos anômalos

• Auto-intersecções

• Auto-tangência

Ponto:– É inerentemente simples (0-dim)

Multipoint:– Não possuir dois pontos iguais (mesma coord.)

– (2-dim) Verificar se uma geometria é válida

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade das geometriasIntegridade das geometrias

LINESTRING

Não passa sobre o mesmo ponto (exceto extremos)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade de geometriasIntegridade de geometrias

MULTILINESTRING

Todas as linhas devem ser simples

Não existem Intersecções entre as linhas (exceto nos extremos)

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade das geometriasIntegridade das geometrias

POLYGON

A fronteira pode interceptar apenas em ponto (não linhas)

Os anéis internos não podem se sobrepor

Anéis internos devem estar inteiramente contido no anel externo

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade das geometriasIntegridade das geometrias

MULTIPOLYGON

Todos os polígonos devem ser válidos

Interior de dois polígonos não se interceptam

As fronteiras podem se tocar, mas apenas em pontos finitos

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Funções PostGIS - SFSFunções PostGIS - SFS

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Observação importante: a especificação é clara ao dizer que ainda que estejam previstas as geometrias no espaço tridimensional (3D), os operadores só são definidos no espaço bidimensional (2D). É deixado a cargo de cada implementador a definição dos operadores no espaço 3D

Funções 3D ainda não estão totalmente desenvolvidas

Manipulação não tão madura quanto as implementações 2D

Especificação <> Implementação

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade dos dadosIntegridade dos dados

Validando geometrias antes de inseri-las no BDGeoST_ISVALID()

Valida as coordenadas de uma geometria

Exemplo:

SELECT ST_ ISVALID ('LINESTRING(0 0, 1 1)'), t

ST_ISVALID ('LINESTRING(0 0,0 0)'); f

Opção default é não validar a entrada das geometrias

Para validar deve-se adicionar uma restrição à tabela

ALTER TABLE parks ADD CONSTRAINT geo_valid_chk

CHECK (ST_ISVALID ( park_geom)) ;

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Contato:alisondocarmo@gmail.com

SIGSIG

top related