41
Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 SIG SIG Operadores topológicos – SQL ST_RELATE Alisson Fernando Coelho do Carmo

Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

SIGSIG

Operadores topológicos – SQLST_RELATE

Alisson Fernando Coelho do Carmo

Page 2: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Arquitetura integradaArquitetura integrada

Page 3: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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:

Page 4: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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))

Page 5: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 6: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 7: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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;

Page 8: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 9: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 10: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

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

Page 11: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

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

RESULTADO(RELATE)212101212

Page 12: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 13: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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"

Page 14: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)

Page 15: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)

Page 16: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)

Page 17: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)

Page 18: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 19: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 20: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 21: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 22: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 23: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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 ) )

Page 24: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)')

);

Page 25: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)')

);

Page 26: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 27: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

SFS – Simple Feature Specification

Page 28: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 29: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 30: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

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

Page 31: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 32: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Tipos de dados espaciaisTipos de dados espaciais

Page 33: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 34: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Integridade das geometriasIntegridade das geometrias

LINESTRING

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

Page 35: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)

Page 36: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 37: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 38: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

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

Page 39: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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

Page 40: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

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)) ;

Page 41: Operadores topológicos – SQL ST RELATEsertie.fct.unesp.br › wp-content › uploads › 2017 › 10 › 18... · Alisson FCC Alisson FCC SIG - 2017 SIG - 2017 Observação importante:

Alisson FCCAlisson FCC

SIG - 2017SIG - 2017

Contato:[email protected]

SIGSIG