Corso Storia Basi di Dati...

23
Università degli Studi di Udine 1 Corso Corso di di Basi di Dati Spaziali Basi di Dati Spaziali Angelo Montanari Angelo Montanari Donatella Gubiani Donatella Gubiani Estensione spaziale di SQL Estensione spaziale di SQL (i sistemi PostgreSQL (i sistemi PostgreSQL e Oracle Spatial) e Oracle Spatial) Università degli Studi di Udine 2 Storia Storia Storia: Storia: 1974: prima proposta SEQUEL 1974: prima proposta SEQUEL 1981: prime implementazioni 1981: prime implementazioni 1983: standard di fatto 1983: standard di fatto 1986, 1989, 1992 e 1999: 1986, 1989, 1992 e 1999: standard standard Università degli Studi di Udine 3 Funzionalità Funzionalità Insieme di linguaggi con varie Insieme di linguaggi con varie funzionalità: funzionalità: DDL DDL DML DML aggiornamento aggiornamento interrogazione interrogazione Università degli Studi di Udine 4 Per trattare dati spaziali… Per trattare dati spaziali… Estensione SQL con nuovi Estensione SQL con nuovi costrutti per trattare i tipi di costrutti per trattare i tipi di dato spaziale introdotti dato spaziale introdotti DDL: definizione DDL: definizione DML: aggiornamento e DML: aggiornamento e interrogazione interrogazione Università degli Studi di Udine 5 Componente DDL Componente DDL Permette di creare schemi di basi Permette di creare schemi di basi di dati: domini, tabelle, indici, di dati: domini, tabelle, indici, asserzioni, viste, privilegi asserzioni, viste, privilegi Meccanismi standard SQL Meccanismi standard SQL Università degli Studi di Udine 6 Domini e Domini e definizione di tabelle definizione di tabelle Gli attributi di una tabella possono Gli attributi di una tabella possono essere associati, oltre ai tipi di essere associati, oltre ai tipi di dato tradizionali, ad uno dei tipi di dato tradizionali, ad uno dei tipi di dato spaziale dato spaziale Point Point Line Line Polygon Polygon

Transcript of Corso Storia Basi di Dati...

Page 1: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 1

Corso Corso di di

Basi di Dati SpazialiBasi di Dati Spaziali

Angelo MontanariAngelo MontanariDonatella GubianiDonatella Gubiani

Estensione spaziale di SQL Estensione spaziale di SQL (i sistemi PostgreSQL (i sistemi PostgreSQL

e Oracle Spatial)e Oracle Spatial)

Università degli Studi di Udine 2

StoriaStoria

• Storia:Storia:–1974: prima proposta SEQUEL1974: prima proposta SEQUEL–1981: prime implementazioni1981: prime implementazioni–1983: standard di fatto1983: standard di fatto–1986, 1989, 1992 e 1999: 1986, 1989, 1992 e 1999: standardstandard

Università degli Studi di Udine 3

Funzionalità Funzionalità

• Insieme di linguaggi con varie Insieme di linguaggi con varie funzionalità: funzionalità: –DDLDDL–DMLDML•aggiornamentoaggiornamento• interrogazioneinterrogazione

Università degli Studi di Udine 4

Per trattare dati spaziali… Per trattare dati spaziali…

• Estensione SQL con nuovi Estensione SQL con nuovi costrutti per trattare i tipi di costrutti per trattare i tipi di dato spaziale introdottidato spaziale introdotti–DDL: definizioneDDL: definizione–DML: aggiornamento e DML: aggiornamento e interrogazioneinterrogazione

Università degli Studi di Udine 5

Componente DDL Componente DDL

• Permette di creare schemi di basi Permette di creare schemi di basi di dati: domini, tabelle, indici, di dati: domini, tabelle, indici, asserzioni, viste, privilegiasserzioni, viste, privilegi

• Meccanismi standard SQLMeccanismi standard SQL

Università degli Studi di Udine 6

Domini e Domini e definizione di tabelle definizione di tabelle

• Gli attributi di una tabella possono Gli attributi di una tabella possono essere associati, oltre ai tipi di essere associati, oltre ai tipi di dato tradizionali, ad uno dei tipi di dato tradizionali, ad uno dei tipi di dato spazialedato spaziale– PointPoint– LineLine– PolygonPolygon

Page 2: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 7

Definizione di tabellaDefinizione di tabella

CREATE TABLE NAZIONE(Nome VARCHAR(20) PRIMARY KEY,

NumAbitanti INTEGER NOT NULL, Geometria POLYGON NOT NULL

)

CREATE TABLE FIUME(Nome VARCHAR(20) PRIMARY KEY,

Geometria LINE NOT NULL)

Università degli Studi di Udine 8

Definizione degli indiciDefinizione degli indici

• Oltre ai tradizionali indici, Oltre ai tradizionali indici, rivestono un ruolo rivestono un ruolo fondamentale gli indici spazialifondamentale gli indici spaziali

Università degli Studi di Udine 9

DML: Componente di DML: Componente di interrogazione interrogazione

• Permette di accedere Permette di accedere all’informazione presente in una all’informazione presente in una base dei dati (ma non consente di base dei dati (ma non consente di modificarla)modificarla)

Università degli Studi di Udine 10

Tipi di interrogazioneTipi di interrogazione

• L’estensione spaziale SQL permette di L’estensione spaziale SQL permette di rispondere, oltre a interrogazioni con rispondere, oltre a interrogazioni con criteri alfanumerici, a interrogazioni criteri alfanumerici, a interrogazioni basate su criteri spazialibasate su criteri spaziali– Selezioni basate su relazioni spaziali rispetto Selezioni basate su relazioni spaziali rispetto a valori geometrici costanti o query a valori geometrici costanti o query interattiveinterattive

– Interrogazioni con criteri spaziali o join Interrogazioni con criteri spaziali o join spazialispaziali

Università degli Studi di Udine 11

Costrutti fondamentaliCostrutti fondamentali

• SELECT:SELECT: specifica la lista degli specifica la lista degli attributi che si vuole siano restituiti attributi che si vuole siano restituiti (anche funzioni aggregate)(anche funzioni aggregate)

• FROM: FROM: specifica le tabelle alle quali specifica le tabelle alle quali bisogna accedere per rispondere bisogna accedere per rispondere all’interrogazioneall’interrogazione

• WHERE: WHERE: specifica le condizioni che specifica le condizioni che devono essere soddisfatte dalle righe devono essere soddisfatte dalle righe coinvolte nell’interrogazione per poter coinvolte nell’interrogazione per poter partecipare alla soluzione finalepartecipare alla soluzione finale

Università degli Studi di Udine 12

Interrogazioni spazialiInterrogazioni spaziali

• Utilizzano funzioni e relazioni su Utilizzano funzioni e relazioni su tipi di dato spazialetipi di dato spaziale– Predicati utilizzati nella clausola Predicati utilizzati nella clausola WHERE (relazioni spaziali)WHERE (relazioni spaziali)

– Funzioni applicate alle tuple del Funzioni applicate alle tuple del risultato (clausola SELECT)risultato (clausola SELECT)

Page 3: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 13

Interrogazioni con criteri Interrogazioni con criteri spaziali – 1spaziali – 1

Esempio.Esempio. Selezionare le nazioni Selezionare le nazioni confinanti con la (adiacenti alla) Franciaconfinanti con la (adiacenti alla) Francia

SELECT N1.NomeFROM NAZIONE N1, NAZIONE N2WHERE N2.Nome=“Francia” and Touch(N1.Geometria,N2.Geometria)

Università degli Studi di Udine 14

Interrogazioni con criteri Interrogazioni con criteri spaziali – 2spaziali – 2

Esempio.Esempio. Determinare i fiumi che Determinare i fiumi che attraversano la Germaniaattraversano la Germania

SELECT F.NomeFROM FIUME F, NAZIONE NWHERE N.Nome=“Germania” and Cross(F.Geometria,N.Geometria)

Università degli Studi di Udine 15

Interrogazioni con criteri Interrogazioni con criteri spaziali – 3spaziali – 3

Esempio.Esempio. Determinare l’area delle Determinare l’area delle nazioni attraversate dal fiume Donnazioni attraversate dal fiume Don

SELECT N.Nome, Area(N.Geometria)FROM Nazione N, Fiume FWHERE F.Nome=“Don” and

Cross(F.Geometria,N.Geometria)

Università degli Studi di Udine 16

Interrogazioni con criteri Interrogazioni con criteri spaziali – 4spaziali – 4

Esempio.Esempio. Determinare la lunghezza Determinare la lunghezza totale dei fiumi che attraversano l’Italiatotale dei fiumi che attraversano l’Italia

SELECT Sum(Length(F.Geometria))FROM FIUME F, NAZIONE NWHERE N.Nome=“Italia” and Cross(F.Geometria,N.Geometria)

Università degli Studi di Udine 17

Interrogazioni con criteri Interrogazioni con criteri spaziali – 5spaziali – 5

Esempio.Esempio. Determinare le nazioni Determinare le nazioni contenute nel rettangolo @rectanglecontenute nel rettangolo @rectangle

SELECT NomeFROM NAZIONEWHERE In(Geometria,@rectangle)

Università degli Studi di Udine 18

DML: Componente di DML: Componente di aggiornamentoaggiornamento

• Permette di operare sulle tabelle: Permette di operare sulle tabelle: inserire, modificare e cancellare i dati di inserire, modificare e cancellare i dati di una base dei datiuna base dei dati

• Operazioni diOperazioni di– inserimento: insertinserimento: insert– eliminazione: deleteeliminazione: delete– modifica: updatemodifica: update

di una o più tuple di una relazione sulla di una o più tuple di una relazione sulla base di una condizione che può base di una condizione che può coinvolgere anche altre relazionicoinvolgere anche altre relazioni

Page 4: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 19

PostgreSQLPostgreSQL

• 1996 è diventato un progetto open 1996 è diventato un progetto open sourcesource

• Supporta un modello Supporta un modello object-object-

relational relational che gestisce i tipi di dato che gestisce i tipi di dato spazialespaziale

Università degli Studi di Udine 20

Estensione spazialeEstensione spaziale

• Uno dei primi sistemi a prevedere Uno dei primi sistemi a prevedere un’estenzione spazialeun’estenzione spaziale– un insieme di tipi geometriciun insieme di tipi geometrici– un insieme di operatori e funzioni sui un insieme di operatori e funzioni sui tipi geometricitipi geometrici

– un’estensione SQL integrata con un’estensione SQL integrata con operatori spazialioperatori spaziali

Università degli Studi di Udine 21

Tipi di dato spazialeTipi di dato spazialeTipo geometrico Rappresentazione Descrizione

point (x,y) Punto

line ((x1,y1),(x2,y2)) Retta infinita

lseg ((x1,y1),(x2,y2)) Segmento

box ((x1,y1),(x2,y2)) Rettangolo

path ((x1,y1),…,(xn,yn)) Linea chiusa

path [(x1,y1),…,(xn,yn)] Linea (aperta)

polygon ((x1,y1),…,(xn,yn)) Poligono

circle <(x,y),r> Cerchio

Università degli Studi di Udine 22

Rappresentazione dei dati in PostgreSQL - 1

Alcune rappresentazioni sono ambigue (non identificano il corrispondente tipo di datospaziale). Per tale ragione, il tipo di dato viene indicato in modo esplicito:

'<rappresentazione>'::tipo

Esempio. Un rettangolo è rappresentato da:'((0,0),(1,1))':: box

mentre un segmento è rappresentato da:'((0,0),(1,1))':: lseg

Università degli Studi di Udine 23

Rappresentazione dei dati in PostgreSQL - 2

La sintassi usata per definire un poligono è molto simile (differisce solo nel nome del tipo di dato spaziale) a quella impiegata per definireuna poli-linea chiusa

Poligoni e poli-linee chiuse differiscono in:

• funzioni che possono essere applicate

• modalità di memorizzazione

Università degli Studi di Udine 24

Rappresentazione dei dati in PostgreSQL - 3

Il modello spaziale di PostgreSQL non contienené il tipo di dato regione, inteso come insieme dipoligoni (anziché singolo poligono), né il tipo di dato linea, inteso come insieme di linee/spezzate

Conseguenze:• non è definita l'intersezione di poligoni, perchépotrebbe generare un insieme di poligoni

anziché un singolo poligono (non è chiusa)• non è definita l'intersezione di linee e poligoni, perché potrebbe generare un insieme di lineeanziché una singola linea (non è chiusa)

Page 5: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 25

Rappresentazione dei dati in PostgreSQL - 4

Predicati vs. funzioni: gli operatori spaziali diPostegreSQL sono per la maggior partepredicati spaziali, anziché funzioni, e nonpermettono di costruire nuovi oggetti

Alcune operazioni sono polimorfe: possonoessere applicate ad argomenti di diverso tipo(spaziale).In tutte le situazioni in cui il tipo dell’operando èun qualsiasi tipo di dato spaziale, viene usatoil tipo generico geom

Università degli Studi di Udine 26

Operatori spaziali - 1Operatori spaziali - 1Operatore Descrizione Sintassi

+ Trasla un rettangolo boxXpoint�box

* Scala un rettangolo boxXpoint�box

# Calcola l’intersezione di due

segmenti

lsegXlseg�point

# Restituisce il numero di vertici di

un poligono

polygon�integer

&& Determina se due poligoni sono

sovrapposti

polygonXpolygon�

bool

<< Verifica se è a destra geomXgeom�bool

>> Verifica se è a sinistra geomXgeom�bool

Università degli Studi di Udine 27

Operatori spaziali - 2Operatori spaziali - 2Operatore Descrizione Sintassi

<^ Verifica se è sopra geomXgeom�bool

>^ Verifica se è sotto geomXgeom�bool

?# Stabilisci se due linee o una linea

e un poligono si intersecano

pathXgeom�bool

?- Stabilisci se due punti defini-

scono un segmento orizzontale

pointXpoint�bool

?-- Stabilisci se due punti defini-

scono un segmento verticale

pointXpoint�bool

?- Stabilisci se due segmenti sono

perpendicolari

lsegXlseg�bool

Università degli Studi di Udine 28

Operatori spaziali - 3Operatori spaziali - 3Operatore Descrizione Sintassi

?|| Stabilisci se due segmenti sono

paralleli

lsegXlseg�bool

@ Stabilisci se un punto è contenuto

in una geometria

pointXgeom�bool

~= Stabilisci se due poligoni sono

uguali

polygonXpolygon�

bool

Università degli Studi di Udine 29

Funzioni spazialiFunzioni spazialiFunzione Descrizione Output

Area(object) Calcola l’area di un oggetto double precision

Box_intersect

(box,box)

Determina il rettangolo di

intersezione fra due rettangoli

box

Center(object) Determina il baricentro di un

oggetto

point

Diameter(circle) Calcola il diametro di un

cerchio

double precision

Height(box) Calcola l’altezza di un

rettangolo

double precision

Length(object) Calcola la lunghezza di un

oggetto

double precision

Università degli Studi di Udine 30

DDL: Creazione di tabelleDDL: Creazione di tabelle

• Utilizza la sintassi standard SQL Utilizza la sintassi standard SQL con la possibilità di definire con la possibilità di definire attributi di tipo geometricoattributi di tipo geometrico

Page 6: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 31

DDL: esempio tabelle DDL: esempio tabelle

CREATE TABLE Terreno(nome varchar(15);utilizzo varchar(10);geometria polygon;PRIMARY KEY (nome));

CREATE TABLE Strade(nome varchar(15);geometria path;PRIMARY KEY (nome));

Università degli Studi di Udine 32

DDL: Creazione di indici DDL: Creazione di indici spazialispaziali

• Creazione di indici spaziali di tipo Creazione di indici spaziali di tipo R-Tree sugli attributi spazialiR-Tree sugli attributi spaziali

CREATE INDEX RtrTerreno ON TERRENO USING RTREE(geometria);

Università degli Studi di Udine 33

DML: aggiornamentoDML: aggiornamento

• L’inserimento, la modifica e L’inserimento, la modifica e l’aggiornamento vengono effettuati l’aggiornamento vengono effettuati utilizzando la sintassi standard SQL, utilizzando la sintassi standard SQL, tenendo conto della specifica sintassi tenendo conto della specifica sintassi dei diversi tipidei diversi tipi

INSERT INTO TERRENO(nome, utilizzo, geometria) VALUES (‘P1’, ‘prato’, ‘((1,1),(2,3),(5,2))’);

Università degli Studi di Udine 34

DML: interrogazione - 1DML: interrogazione - 1

Esempio.Esempio. Determinare le strade che Determinare le strade che intersecano il terreno ‘P1’intersecano il terreno ‘P1’

SELECT S.nomeFROM STRADA S, TERRENO TWHERE T.nome=‘P1’ and

S.geometria?#T.geometria;

Università degli Studi di Udine 35

DML: interrogazione - 2DML: interrogazione - 2

Esempio.Esempio. Determinare i terreni che Determinare i terreni che stanno a destra del terreno ‘P2’stanno a destra del terreno ‘P2’

SELECT T1.nomeFROM TERRENO T1, TERRENO T2WHERE T2.nome=‘P2’ and

T2.geometria<<T1.geometria;

Università degli Studi di Udine 36

DML: interrogazione - 3DML: interrogazione - 3

Esempio.Esempio. Determinare i terreni che Determinare i terreni che si sovrappongono al poligono con si sovrappongono al poligono con vertici (1,2),(9,5),(4,6),(2,5)vertici (1,2),(9,5),(4,6),(2,5)

SELECT nameFROM TERRENOWHERE ‘((1,2),(9,5),(4,6),(2,5)(1,2),(9,5),(4,6),(2,5))’::polygon

&& geometria;

Page 7: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 37

DML: interrogazione - 4DML: interrogazione - 4

Esempio.Esempio. Determinare il terreno Determinare il terreno che contiene il punto (4,3) e la che contiene il punto (4,3) e la relativa arearelativa area

SELECT name, area(geometria)FROM TERRENOWHERE ‘(4,3)’::point @ geometria;

Università degli Studi di Udine 38

ORACLE SPATIALORACLE SPATIAL

• L’estensione L’estensione SpatialSpatial permette di permette di memorizzare dati spazialimemorizzare dati spaziali

• Supporta il modello Supporta il modello Object-RelationalObject-Relational per gestire i per gestire i diversi tipi di dato spazialediversi tipi di dato spaziale

Università degli Studi di Udine 39

Sistema di riferimento spazialeSistema di riferimento spaziale

• Oracle Spatial assume le coordinate Oracle Spatial assume le coordinate cartesiane come defaultcartesiane come default

• Possono essere utilizzati altri sistemi:Possono essere utilizzati altri sistemi:– coordinate geodetichecoordinate geodetiche– coordinate proiettatecoordinate proiettate– coordinate localicoordinate locali

• È possibile utilizzare dei sistemi di È possibile utilizzare dei sistemi di riferimento definiti dall‘utenteriferimento definiti dall‘utente

Università degli Studi di Udine 40

I tipi di dato spazialeI tipi di dato spaziale

• Due tipi di dato:Due tipi di dato:– SDO_GEOMETRY SDO_GEOMETRY – SDO_GEORASTERSDO_GEORASTER

Università degli Studi di Udine 41

SDO_GEOMETRYSDO_GEOMETRY

• La geometria che descrive un oggetto La geometria che descrive un oggetto spaziale è memorizzata in una spaziale è memorizzata in una colonna che assume valori di tipo colonna che assume valori di tipo SDO_GEOMETRYSDO_GEOMETRY

• Tabelle di questo tipo sono chiamate Tabelle di questo tipo sono chiamate tabelle geometrichetabelle geometriche

Università degli Studi di Udine 42

SDO_GEORASTERSDO_GEORASTER

• Nuovo tipo di dato introdotto in Nuovo tipo di dato introdotto in Oracle 10gOracle 10g

• Una griglia raster (o un‘immagine) Una griglia raster (o un‘immagine) è memorizzata in una colonna che è memorizzata in una colonna che assume valori di tipo assume valori di tipo SDO_GEORASTERSDO_GEORASTER

• Tabelle di questo tipo sono Tabelle di questo tipo sono chiamate chiamate tabelle GeoRastertabelle GeoRaster

Page 8: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 43

Concentriamoci sulla Concentriamoci sulla rappresentazione rappresentazione vettoriale e quindi vettoriale e quindi

sull’oggetto sull’oggetto SDO_GEOMETRYSDO_GEOMETRY

Università degli Studi di Udine 44

Modello dei datiModello dei dati

• La rappresentazione dei dati spaziali La rappresentazione dei dati spaziali corrisponde a una struttura gerarchicacorrisponde a una struttura gerarchica– elementi:elementi: blocco base che costituisce una blocco base che costituisce una geometria; i tipi di elementi spaziali supportati geometria; i tipi di elementi spaziali supportati sono i punti, le linee e i poligonisono i punti, le linee e i poligoni

– geometrie:geometrie: rappresentazione di un valore rappresentazione di un valore geometrico come un insieme ordinato di geometrico come un insieme ordinato di elementielementi

– layer: layer: collezione di geometrie che hanno lo collezione di geometrie che hanno lo stesso insieme di attributistesso insieme di attributi

Università degli Studi di Udine 45

Oggetto SDO_GEOMETRYOggetto SDO_GEOMETRY

CREATE TYPE SDO_GEOMETRY AS OBJECT(SDO_GTYPE NUMBER,SDO_SRID NUMBER,SDO_POINT SDO_POINT_TYPE,SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY,SDO_ORDINATES SDO_ORDINATE_ARRAY);

Università degli Studi di Udine 46

SDO_GTYPESDO_GTYPE

• Indica il tipo di geometriaIndica il tipo di geometria• È composto da 4 cifre nel formato È composto da 4 cifre nel formato dlttdltt– dd identifica il numero di dimensioni (2, 3, o 4) identifica il numero di dimensioni (2, 3, o 4)– ll identifica la misura di riferimento lineare per identifica la misura di riferimento lineare per una geometria 3-dimensionale LRS (Linear una geometria 3-dimensionale LRS (Linear Referencing System)Referencing System)

– tttt identifica il tipo geometrico (da 00 a 07) identifica il tipo geometrico (da 00 a 07)

Università degli Studi di Udine 47

Esempi di valori geometriciEsempi di valori geometrici

Università degli Studi di Udine 48

Valori validi per SDO_GTYPEValori validi per SDO_GTYPE

Valore Tipo di geometria Descrizione

dl00 UNKNOWN_GEOMETRY Spatial ignora questa geometria

dl01 POINT Un punto

dl02 LINE o CURVE Stringa di linee (segmenti retti o

archi circolari)

dl03 POLYGON Poligoni con o senza buchi

dl04 COLLECTION Collezione eterogenea di oggetti

dl05 MULTIPOINT Uno o più punti

dl06 MULTILINE o

MULTICURVE

Una o più stringhe di linee

dl07 MULTIPOLYGON Poligoni multipli o disgiunti

Page 9: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 49

SDO_SRIDSDO_SRID

• Può essere usato per identificare un Può essere usato per identificare un sistema di coordinate associato alla sistema di coordinate associato alla geometriageometria

• nullnull indica che nessun sistema di indica che nessun sistema di coordinate è associato alla geometria (e coordinate è associato alla geometria (e quindi si assume il sistema di default)quindi si assume il sistema di default)

• Tutte le geometrie di una colonna Tutte le geometrie di una colonna devono avere lo stesso SDO_SRIDdevono avere lo stesso SDO_SRID

Università degli Studi di Udine 50

SDO_POINTSDO_POINT

• Identifica i punti, altrimenti è Identifica i punti, altrimenti è nullnull

• Non è Non è nullnull se i vettori SDO_ELEM_INFO se i vettori SDO_ELEM_INFO e SDO_ORDINATES sono entrambi e SDO_ORDINATES sono entrambi nullnull

• È definito usando un oggetto con È definito usando un oggetto con attributi X, Y e Zattributi X, Y e Z– X e Y sono le coordinate di una geometria di X e Y sono le coordinate di una geometria di tipo punto nello spazio bidimensionaletipo punto nello spazio bidimensionale

NOTA: il punto può essere descritto sia NOTA: il punto può essere descritto sia utilizzando SDO_POINT che utilizzando SDO_POINT che i vettori i vettori SDO_ELEM_INFO e SDO_ORDINATESSDO_ELEM_INFO e SDO_ORDINATES

Università degli Studi di Udine 51

SDO_ELEM_INFOSDO_ELEM_INFO• Permette di interpretare le coordinate Permette di interpretare le coordinate memorizzate in SDO_ORDINATESmemorizzate in SDO_ORDINATES

• È un vettore di lunghezza variabile di È un vettore di lunghezza variabile di triplettetriplette– SDO_STARTING_OFFSETSDO_STARTING_OFFSET: indica l’offset : indica l’offset all’interno del vettore SDO_ORDINATES dove all’interno del vettore SDO_ORDINATES dove è memorizzata la prima coordinata (è memorizzata la prima coordinata (≥≥1)1)

– SDO_ETYPESDO_ETYPE: indica il tipo dell’elemento che : indica il tipo dell’elemento che può essere semplice (1,2,1003,2003) o può essere semplice (1,2,1003,2003) o composto (4,1005,2005)composto (4,1005,2005)

– SDO_INTERPRETATIONSDO_INTERPRETATION: se SDO_ETYPE indica : se SDO_ETYPE indica un elemento semplice, determina un elemento semplice, determina l’interpretazione della sequenza, altrimenti l’interpretazione della sequenza, altrimenti specifica quante sono le triplette successivespecifica quante sono le triplette successive

Università degli Studi di Udine 52

Valori validi per Valori validi per SDO_ELEM_INFO - 1SDO_ELEM_INFO - 1

SDO_ETYPE SDO_INTERP. Significato

0 qualsiasi valore numerico

Modella tipi geometrici non

supportati da Oracle Spatial

1 1 Tipo punto

1 n>1 Gruppo di n punti

2 1 Stringa di linee i cui vertici sono

connessi da segmenti di linee

rette

2 2 Stringa di linee formata da una

sequenza di archi circolari

Università degli Studi di Udine 53

Valori validi per Valori validi per SDO_ELEM_INFO - 2SDO_ELEM_INFO - 2

SDO_ETYPE SDO_INTERP. Significato

1003 o 2003 1 Poligono semplice i cui vertici

sono connessi da segmenti di

linee rette

1003 o 2003 2 Poligono formato da una

sequenza connessa di archi

circolari

1003 o 2003 3 Tipo rettangolo: solo due punti

(basso a sinistra e alto a destra)

1003 o 2003 4 Tipo cerchio: tre punti tutti

appartenenti alla circonferenza

Università degli Studi di Udine 54

Valori validi per Valori validi per SDO_ELEM_INFO - 3SDO_ELEM_INFO - 3

SDO_ETYPE SDO_INTERP. Significato

4 n>1 Stringa di linee composte: n indica

il numero di triplette successive, le

successive n triplette descrivono

ogni sottoelemento

1005 o 2005 n>1 Poligono composto: n indica il

numero di triplette successive, le

successive n triplette descrivono

ogni sottoelemento

NOTA: in 1003/1005 e 2003/2005,il valore 1 iniziale identifica il bordo NOTA: in 1003/1005 e 2003/2005,il valore 1 iniziale identifica il bordo esterno e il valore 2 identifica quello interno (nel caso di poligoni con buchi)esterno e il valore 2 identifica quello interno (nel caso di poligoni con buchi)

Page 10: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 55

SDO_ORDINATESSDO_ORDINATES

• È un vettore di lunghezza variabile È un vettore di lunghezza variabile di oggetti di tipo NUMBER di oggetti di tipo NUMBER

• Memorizza le coordinate che Memorizza le coordinate che definiscono la frontiera di un definiscono la frontiera di un valore geometricovalore geometrico

Università degli Studi di Udine 56

SDO_GEOMETRY: Esempio - 1SDO_GEOMETRY: Esempio - 1

• Creare una tabella geografica EDIFICI in Creare una tabella geografica EDIFICI in cui memorizzare il numero identificativo, cui memorizzare il numero identificativo, il nome e la forma degli edifici di una il nome e la forma degli edifici di una cittàcittà

CREATE TABLE edifici(id NUMBER PRIMARY KEY,

nome VARCHAR2(32), estensione SDO_GEOMETRY);

Università degli Studi di Udine 57

SDO_GEOMETRY: Esempio - 2SDO_GEOMETRY: Esempio - 2

• Inserire la Inserire la seguente seguente istanzaistanza

Università degli Studi di Udine 58

SDO_GEOMETRY: Esempio - 3SDO_GEOMETRY: Esempio - 3

• SDO_GTYPE = 2003SDO_GTYPE = 2003– d=2 indica una geometria bidimensionaled=2 indica una geometria bidimensionale– tt=03 indicano che si tratta di un poligonott=03 indicano che si tratta di un poligono

• SDO_SRID = nullSDO_SRID = null– nessun sistema di coordinate è stato nessun sistema di coordinate è stato esplicitamente assegnato alla geometriaesplicitamente assegnato alla geometria

• SDO_POINT = nullSDO_POINT = null– ignorato da Spatial perché non si tratta di ignorato da Spatial perché non si tratta di una geometria di tipo puntouna geometria di tipo punto

Università degli Studi di Udine 59

SDO_GEOMETRY: Esempio - 4SDO_GEOMETRY: Esempio - 4

• SDO_ELEM_INFO = SDO_ELEM_INFO = (1,1005,2, 1,2,1, 5,2,2)(1,1005,2, 1,2,1, 5,2,2)

– prima tripletta: indica che si tratta di un prima tripletta: indica che si tratta di un poligono composto da due segmenti di linee poligono composto da due segmenti di linee descritti nelle triplette successivedescritti nelle triplette successive

– seconda tripletta: indica che la prima parte seconda tripletta: indica che la prima parte del poligono è costituito da segmenti di linee del poligono è costituito da segmenti di linee rette e le relative coordinate iniziano all’offset rette e le relative coordinate iniziano all’offset 11

– terza tripletta: indica che la seconda stringa di terza tripletta: indica che la seconda stringa di linee è composta da un arco circolare le cui linee è composta da un arco circolare le cui coordinate si trovano a partire dall’offset 5coordinate si trovano a partire dall’offset 5

Università degli Studi di Udine 60

SDO_GEOMETRY: Esempio - 5SDO_GEOMETRY: Esempio - 5

• SDO_ORDINATES = SDO_ORDINATES = (6,10, 10,1, 14,10, 10,14, 6,10)(6,10, 10,1, 14,10, 10,14, 6,10)– indica le coordinate dei punti del bordo del indica le coordinate dei punti del bordo del poligono che devono essere interpretate poligono che devono essere interpretate come descritto in SDO_ELEM_INFOcome descritto in SDO_ELEM_INFO

Page 11: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 61

SDO_GEOMETRY: Esempio - 6SDO_GEOMETRY: Esempio - 6

INSERT INTO edifici VALUES( 12,‘Palazzo del comune’,SDO_GEOMETRY(2003, null, null,SDO_ELEM_INFO_ARRAY(1,1005,2, 1,2,1, 5,2,2),SDO_ORDINATE_ARRAY(6,10, 10,1, 14,10,

10,14, 6,10))

); Università degli Studi di Udine 62

SDO_GEOMETRY: Esempio - 7SDO_GEOMETRY: Esempio - 7

• Inserire la Inserire la seguente seguente istanzaistanza

Università degli Studi di Udine 63

SDO_GEOMETRY: Esempio - 8SDO_GEOMETRY: Esempio - 8

• SDO_GTYPE = 2003SDO_GTYPE = 2003– d=2 indica una geometria bidimensionaled=2 indica una geometria bidimensionale– tt=03 indicano che si tratta di un poligonott=03 indicano che si tratta di un poligono

• SDO_SRID = nullSDO_SRID = null– nessun sistema di coordinate è stato nessun sistema di coordinate è stato esplicitamente assegnato alla geometriaesplicitamente assegnato alla geometria

• SDO_POINT = nullSDO_POINT = null– ignorato da Spatial perché non si tratta di ignorato da Spatial perché non si tratta di una geometria di tipo puntouna geometria di tipo punto

Università degli Studi di Udine 64

SDO_GEOMETRY: Esempio - 9SDO_GEOMETRY: Esempio - 9

• SDO_ELEM_INFO = (1,1003,3)SDO_ELEM_INFO = (1,1003,3)– 1003,3: indica che si tratta di un 1003,3: indica che si tratta di un poligono di tipo rettangolopoligono di tipo rettangolo

• SDO_ORDINATES = (1, 1, 5, 7)SDO_ORDINATES = (1, 1, 5, 7)– indentifica le coordinate del vertice in indentifica le coordinate del vertice in basso a sinistra e di quello in alto a basso a sinistra e di quello in alto a destradestra

Università degli Studi di Udine 65

SDO_GEOMETRY: Esempio - 10SDO_GEOMETRY: Esempio - 10

INSERT INTO edifici VALUES( 8,‘Chiesa’,SDO_GEOMETRY(2003, null, null,SDO_ELEM_INFO_ARRAY (1,1003,3),SDO_ORDINATE_ARRAY (1, 1, 5, 7))

); Università degli Studi di Udine 66

Tolleranza - 1Tolleranza - 1

• Il valore Il valore tolerancetolerance è utilizzato per è utilizzato per associare un livello di precisione ai associare un livello di precisione ai dati spazialidati spaziali

• È specificata in due casi:È specificata in due casi:– nella definizione dei metadatinella definizione dei metadati– nella definizione di alcune funzioninella definizione di alcune funzioni

Page 12: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 67

Tolleranza - 2Tolleranza - 2

Università degli Studi di Udine 68

Funzioni geometricheFunzioni geometriche

• Funzioni associate al tipo di dato Funzioni associate al tipo di dato SDO_GEOMETRYSDO_GEOMETRY

• Diverse categorie:Diverse categorie:– funzioni di verifica delle relazioni che funzioni di verifica delle relazioni che intercorrono tra due oggettiintercorrono tra due oggetti

– funzioni di validazionefunzioni di validazione– operazioni su singoli oggettioperazioni su singoli oggetti– operazioni su coppie di oggettioperazioni su coppie di oggetti

Università degli Studi di Udine 69

Funzioni geometriche:Funzioni geometriche:relazioni fra due oggettirelazioni fra due oggetti

• SDO_GEOM.RELATE Stabilisce se due SDO_GEOM.RELATE Stabilisce se due oggetti stanno in una determinata oggetti stanno in una determinata relazione (topologica)relazione (topologica)

• SDO_GEOM.WITHIN_DISTANCE SDO_GEOM.WITHIN_DISTANCE Determina se due oggetti geometrici si Determina se due oggetti geometrici si trovano ad una distanza inferiore ad un trovano ad una distanza inferiore ad un valore prefissatovalore prefissato

Università degli Studi di Udine 70

Funzioni geometriche:Funzioni geometriche:funzioni di validazionefunzioni di validazione

• SDO_GEOM. SDO_GEOM. VALIDATE_GEOMETRY_WITH_CONTEXT VALIDATE_GEOMETRY_WITH_CONTEXT Verifica se una geometria è validaVerifica se una geometria è valida

• SDO_GEOM. SDO_GEOM. VALIDATE_LAYER_WITH_CONTEXT VALIDATE_LAYER_WITH_CONTEXT Verifica se tutte le geometrie Verifica se tutte le geometrie memorizzate in una colonna sono validememorizzate in una colonna sono valide

NOTA: in alcuni casi i controlli sono effettuati in modo NOTA: in alcuni casi i controlli sono effettuati in modo automatico (caso dei rettangoli)automatico (caso dei rettangoli)

Università degli Studi di Udine 71

Funzioni geometriche:Funzioni geometriche:operazioni su singoli oggetti -1operazioni su singoli oggetti -1

• SDO_GEOM.SDO_ARC_DENSIFY SDO_GEOM.SDO_ARC_DENSIFY Approssima ogni arco circolare con una Approssima ogni arco circolare con una spezzata aperta ed ogni cerchio con una spezzata aperta ed ogni cerchio con una spezzata chiusa (la qualità spezzata chiusa (la qualità dell‘approssimazione è specificata dell‘approssimazione è specificata attraverso opportuni parametri)attraverso opportuni parametri)

• SDO_GEOM.SDO_AREA Calcola l'area di SDO_GEOM.SDO_AREA Calcola l'area di un poligono bidimensionaleun poligono bidimensionale

Università degli Studi di Udine 72

Funzioni geometriche:Funzioni geometriche: operazioni su singoli oggetti -2 operazioni su singoli oggetti -2

• SDO_GEOM.SDO_BUFFER Genera SDO_GEOM.SDO_BUFFER Genera un poligono di buffer attorno ad un poligono di buffer attorno ad una geometria una geometria

Page 13: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 73

Funzioni geometriche:Funzioni geometriche: operazioni su singoli oggetti -3 operazioni su singoli oggetti -3

• SDO_GEOM.SDO_CONVEXHULL SDO_GEOM.SDO_CONVEXHULL Ritorna un oggetto di tipo poligono Ritorna un oggetto di tipo poligono che rappresenta il bordo convesso che rappresenta il bordo convesso della geometriadella geometria

Università degli Studi di Udine 74

Funzioni geometriche: Funzioni geometriche: operazioni su singoli oggetti -4operazioni su singoli oggetti -4

• SDO_GEOM.SDO_MBR Ritorna il SDO_GEOM.SDO_MBR Ritorna il minimum bounding rectangle minimum bounding rectangle (MBR) di una geometria(MBR) di una geometria

Università degli Studi di Udine 75

Funzioni geometriche: Funzioni geometriche: operazioni su singoli oggetti -5operazioni su singoli oggetti -5

• SDO_GEOM.SDO_MAX_MBR_ORDINATE SDO_GEOM.SDO_MAX_MBR_ORDINATE Ritorna il massimo valore per l'ordinata Ritorna il massimo valore per l'ordinata specificata del minimum bounding specificata del minimum bounding rectangle di una geometriarectangle di una geometria

• SDO_GEOM.SDO_MIN_MBR_ORDINATE SDO_GEOM.SDO_MIN_MBR_ORDINATE Ritorna il minimo valore per l'ordinata Ritorna il minimo valore per l'ordinata specificata del minimum bounding specificata del minimum bounding rectangle di una geometriarectangle di una geometria

Università degli Studi di Udine 76

Funzioni geometriche: Funzioni geometriche: operazioni su singoli oggetti -6operazioni su singoli oggetti -6

• SDO_GEOM.SDO_LENGTH Calcola la SDO_GEOM.SDO_LENGTH Calcola la lunghezza, o perimetro, della lunghezza, o perimetro, della geometriageometria

• SDO_GEOM.SDO_CENTROID Ritorna SDO_GEOM.SDO_CENTROID Ritorna il centroide di un poligonoil centroide di un poligono

• SDO_GEOM.SDO_POINTSURFACE SDO_GEOM.SDO_POINTSURFACE Ritorna un punto che sicuramente Ritorna un punto che sicuramente appartiene alla superficie di un appartiene alla superficie di un poligonopoligono

Università degli Studi di Udine 77

Funzioni geometriche:Funzioni geometriche:operazioni su due oggetti - 1operazioni su due oggetti - 1• SDO_GEOM.SDO_DISTANCE Calcola la SDO_GEOM.SDO_DISTANCE Calcola la distanza fra due geometriedistanza fra due geometrie

• SDO_GEOM.SDO_DIFFERENCE Ritorna SDO_GEOM.SDO_DIFFERENCE Ritorna una geometria che è la differenza una geometria che è la differenza topologica (operazione MINUS) di due topologica (operazione MINUS) di due oggetti geometricioggetti geometrici

• SDO_GEOM.SDO_INTERSECTION SDO_GEOM.SDO_INTERSECTION Ritorna una geometria che è Ritorna una geometria che è l'intersezione topologica (operazione l'intersezione topologica (operazione AND) di due oggetti geometriciAND) di due oggetti geometrici

Università degli Studi di Udine 78

Funzioni geometriche:Funzioni geometriche:operazioni su due oggetti - 2operazioni su due oggetti - 2

• SDO_GEOM.SDO_UNION Ritorna una SDO_GEOM.SDO_UNION Ritorna una geometria che è l'unione topologica geometria che è l'unione topologica (operazione OR) di due oggetti (operazione OR) di due oggetti geometricigeometrici

• SDO_GEOM.SDO_XOR Ritorna una SDO_GEOM.SDO_XOR Ritorna una geometria che è la differenza geometria che è la differenza simmetrica topologica (operazione XOR) simmetrica topologica (operazione XOR) di due oggetti geometricidi due oggetti geometrici

Page 14: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 79

Funzioni geometricheFunzioni geometriche

Esempio.Esempio. Data la tabella Data la tabella TERRITORIO (TERRITORIO (idid, estensione) , estensione) calcolare l‘area di ogni istanzacalcolare l‘area di ogni istanza

SELECT id, SELECT id, SDO_GEOM.SDO_AREA(SDO_GEOM.SDO_AREA(estensione,0.005estensione,0.005))FROM TERRITORIOFROM TERRITORIO

Università degli Studi di Udine 80

Relazioni topologiche - 1Relazioni topologiche - 1

• Oracle Spatial definisce le relazioni Oracle Spatial definisce le relazioni topologiche utilizzando il modello topologiche utilizzando il modello 9-intersection9-intersection

• Non vengono esplicitamente Non vengono esplicitamente memorizzate nelle tabelle, ma memorizzate nelle tabelle, ma sono derivate per mezzo sono derivate per mezzo dell’operatore SDO_RELATEdell’operatore SDO_RELATE

Università degli Studi di Udine 81

Relazioni topologiche - 2Relazioni topologiche - 2

• DISJOINT I contorni e gli interni non si DISJOINT I contorni e gli interni non si intersecanointersecano

• TOUCH I contorni si intersecano, gli TOUCH I contorni si intersecano, gli interni nointerni no

• OVERLAPBDYDISJOINT L'interno di un OVERLAPBDYDISJOINT L'interno di un oggetto interseca il contorno e l'interno oggetto interseca il contorno e l'interno dell'altro oggetto, i due contorni non si dell'altro oggetto, i due contorni non si intersecanointersecano

• OVERLAPBDYINTERSECT I contorni e gli OVERLAPBDYINTERSECT I contorni e gli interni dei due oggetti si intersecanointerni dei due oggetti si intersecano

Università degli Studi di Udine 82

Relazioni topologiche - 3Relazioni topologiche - 3

• EQUAL I due oggetti hanno lo stesso EQUAL I due oggetti hanno lo stesso contorno ed internocontorno ed interno

• CONTAINS L‘interno ed il contorno di un CONTAINS L‘interno ed il contorno di un oggetto sono completamente contenuti oggetto sono completamente contenuti nell'interno dell'altro oggettonell'interno dell'altro oggetto

• COVERS L‘interno, ma non il contorno, COVERS L‘interno, ma non il contorno, di un oggetto è completamente di un oggetto è completamente contenuto nell'interno dell'altro oggettocontenuto nell'interno dell'altro oggetto

• INSIDE Inverso di CONTAINSINSIDE Inverso di CONTAINS

Università degli Studi di Udine 83

Relazioni topologiche - 4Relazioni topologiche - 4

• COVERED BY Inverso di COVERSCOVERED BY Inverso di COVERS• ON L‘interno ed il contorno di un ON L‘interno ed il contorno di un oggetto appartengono al contorno oggetto appartengono al contorno dell‘altro oggettodell‘altro oggetto

• ANYINTERACT Gli oggetti sono non ANYINTERACT Gli oggetti sono non disgiuntidisgiunti

NOTA: le relazioni touch, equal, NOTA: le relazioni touch, equal, overlapbdydisjoint, overlapbdyintersect, overlapbdydisjoint, overlapbdyintersect, disjoint sono simmetrichedisjoint sono simmetriche

Università degli Studi di Udine 84

Relazioni topologiche - 5Relazioni topologiche - 5

Page 15: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 85

Interrogazioni spazialiInterrogazioni spaziali

• Per la risoluzione di interrogazioni Per la risoluzione di interrogazioni spaziali Oracle Spatial sfrutta il modello spaziali Oracle Spatial sfrutta il modello “two-tier query““two-tier query“

• Sono utilizzate due distinte operazioni:Sono utilizzate due distinte operazioni:– filtro primariofiltro primario:: permette di selezionare i permette di selezionare i candidati che vanno passati al secondo filtro candidati che vanno passati al secondo filtro ed utilizza la geometria (o indice) per ed utilizza la geometria (o indice) per ridurre la complessità computazionaleridurre la complessità computazionale

– filtro secondariofiltro secondario:: applicato al resultato del applicato al resultato del filtro primario, restituisce il risultato esatto filtro primario, restituisce il risultato esatto dell’interrogazionedell’interrogazione

Università degli Studi di Udine 86

Operatori spaziali - 1Operatori spaziali - 1

• SDO_FILTER Stabilisce se gli MBR di SDO_FILTER Stabilisce se gli MBR di due oggetti geometrici stanno in una due oggetti geometrici stanno in una data relazione topologica (lavoro svolto data relazione topologica (lavoro svolto dal primo filtro)dal primo filtro)

• SDO_NN Determina l‘oggetto/gli oggetti SDO_NN Determina l‘oggetto/gli oggetti geometrici più vicini ad un dato oggetto geometrici più vicini ad un dato oggetto geometricogeometrico

• SDO_NN_DISTANCE Restituisce la SDO_NN_DISTANCE Restituisce la distanza di un oggetto identificato con distanza di un oggetto identificato con SDO_NNSDO_NN

Università degli Studi di Udine 87

Operatori spaziali - 2Operatori spaziali - 2

• SDO_RELATE Determina se due SDO_RELATE Determina se due oggetti geometrici stanno in una data oggetti geometrici stanno in una data relazione topologicarelazione topologica

• SDO_WITHIN_DISTANCE Determina SDO_WITHIN_DISTANCE Determina se due geometria sono entro una se due geometria sono entro una specifica distanza l‘uno dall‘altrospecifica distanza l‘uno dall‘altro

• SDO_JOIN Esegue un join spaziale SDO_JOIN Esegue un join spaziale basato su una o più relazioni basato su una o più relazioni topologichetopologiche

Università degli Studi di Udine 88

SDO_RELATE - 1SDO_RELATE - 1

• Determina se un oggetto geometrico Determina se un oggetto geometrico è in una particolare relazione è in una particolare relazione topologica con un altro oggetto topologica con un altro oggetto geometrico, quale, ad esempio, geometrico, quale, ad esempio, un'area di interesseun'area di interesse

• Sintassi:Sintassi:SDO_RELATE(SDO_RELATE(geometria1,geometria2,parametrigeometria1,geometria2,parametri))

Università degli Studi di Udine 89

SDO_RELATE - 2SDO_RELATE - 2

• La geometria1 specifica una La geometria1 specifica una colonna geometrica di una tabellacolonna geometrica di una tabella

• La geometria2 può specificare sia La geometria2 può specificare sia una colonna geometrica che un una colonna geometrica che un valore geometricovalore geometrico

Università degli Studi di Udine 90

SDO_RELATE - 3SDO_RELATE - 3• Parametri:Parametri:

– maskmask: specifica la relazione topologica di : specifica la relazione topologica di interesse ed è obbligatoriointeresse ed è obbligatorio• è possibile combinare i valori è possibile combinare i valori es. 'mask=inside+touch'es. 'mask=inside+touch'

– min_resolution min_resolution e/oe/o max_resolution max_resolution: è : è opzionale e specifica che devono essere opzionale e specifica che devono essere considerate solo le geometrie il cui MBR ha considerate solo le geometrie il cui MBR ha almeno un lato di lunghezza uguale o almeno un lato di lunghezza uguale o maggiore e/o minore o uguale al valore maggiore e/o minore o uguale al valore specificatospecificato

Page 16: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 91

SDO_RELATE - 4SDO_RELATE - 4

• Deve essere usato all‘interno della Deve essere usato all‘interno della clausola WHEREclausola WHERE

• Ritorna vero se il confronto tra le Ritorna vero se il confronto tra le coppie di oggetti geometrici sono coppie di oggetti geometrici sono nella relazione topologica specificata nella relazione topologica specificata da mask, falso altrimentida mask, falso altrimenti

Università degli Studi di Udine 92

SDO_RELATE - 5SDO_RELATE - 5

Esempio.Esempio. Data la tabella geometrica Data la tabella geometrica così definita così definita EDIFICIO (id, descrizione, estensione) determinare la descrizione determinare la descrizione degli edifici che si trovano all‘interno degli edifici che si trovano all‘interno della geometria così definita della geometria così definita SDO_GEOMETRY (2003,null,null,SDO_ELEM_INFO_ARRAY(1,1003,3),

SDO_ORDINATE_ARRAY(1,1,20,20))

Università degli Studi di Udine 93

SDO_RELATE - 6SDO_RELATE - 6

SELECT descrizione FROM EDIFICIO WHERE SDO_RELATE(estensione, SDO_GEOMETRY(2003, null, null,SDO_ELEM_INFO_ARRAY(1, 1003,3),SDO_ORDINATE_ARRAY(1,1,20,20)),‘mask=inside‘)=‘TRUE‘;

Università degli Studi di Udine 94

SDO_RELATE - 7SDO_RELATE - 7

• Sono stati introdotti una serie di Sono stati introdotti una serie di operatatori SDO_RELATE specifici per operatatori SDO_RELATE specifici per le diverse relazioni topologiche:le diverse relazioni topologiche:– SDO_ANYINTERACTSDO_ANYINTERACT - SDO_CONTAINS- SDO_CONTAINS– SDO_OVERLAPSSDO_OVERLAPS - SDO_TOUCH- SDO_TOUCH– SDO_COVERSSDO_COVERS - SDO_EQUAL- SDO_EQUAL– SDO_INSIDESDO_INSIDE– SDO_COVEREDBYSDO_ONSDO_COVEREDBYSDO_ON– SDO_OVERLAPBDYDISJOINTSDO_OVERLAPBDYDISJOINT– SDO_OVERLAPBDYINTERSECTSDO_OVERLAPBDYINTERSECT

Università degli Studi di Udine 95

SDO_WITHIN_DISTANCE - 1SDO_WITHIN_DISTANCE - 1

• Determina se due oggetti spaziali si Determina se due oggetti spaziali si trovano a meno di una determinata trovano a meno di una determinata distanza (euclidea) tra di lorodistanza (euclidea) tra di loro

• Sintassi: Sintassi: SDO_WITHIN_DISTANCE(geometria1, SDO_WITHIN_DISTANCE(geometria1,

ageom, parametri)ageom, parametri)

Università degli Studi di Udine 96

SDO_WITHIN_DISTANCE - 2SDO_WITHIN_DISTANCE - 2

• La geometria1 sLa geometria1 specifica una colonna pecifica una colonna geometrica che contiene l'insieme di geometrica che contiene l'insieme di geometrie che sono valutate per geometrie che sono valutate per determinare se stanno entro la determinare se stanno entro la distanza specificata dall'oggetto aGeomdistanza specificata dall'oggetto aGeom

• aGeom saGeom specifica una colonna pecifica una colonna geometrica o una variabile geometrica geometrica o una variabile geometrica a partire dalla quale misurare la a partire dalla quale misurare la distanza da geometria1distanza da geometria1

Page 17: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 97

SDO_WITHIN_DISTANCE - 3SDO_WITHIN_DISTANCE - 3• Parametri:Parametri:

– distancedistance: s: specifica il valore della distanzapecifica il valore della distanza ed ed è obbligatorioè obbligatorio

– min_resolution min_resolution e/oe/o max_resolution max_resolution: è : è opzionale e specifica che devono essere opzionale e specifica che devono essere considerate solo le geometrie il cui MBR ha considerate solo le geometrie il cui MBR ha almeno un lato di lunghezza uguale o almeno un lato di lunghezza uguale o maggiore e/o minore o uguale al valore maggiore e/o minore o uguale al valore specificatospecificato

– querytypequerytype: settato a filter esegue : settato a filter esegue esclusivamente il filtro primario, altrimenti esclusivamente il filtro primario, altrimenti (se non specificato), esegue anche il filtro (se non specificato), esegue anche il filtro secondariosecondario

– unitunit: specifica un‘unità di misura associata : specifica un‘unità di misura associata alla distanzaalla distanza Università degli Studi di Udine 98

SDO_WITHIN_DISTANCE - 4SDO_WITHIN_DISTANCE - 4

• Deve essere usato all‘interno della Deve essere usato all‘interno della clausola WHEREclausola WHERE

• Ritorna vero se la distanza tra i due Ritorna vero se la distanza tra i due oggetti geometrici specificati è oggetti geometrici specificati è minore del valore specificato dal minore del valore specificato dal parametro distance, falso altrimentiparametro distance, falso altrimenti

Università degli Studi di Udine 99

SDO_WITHIN_DISTANCE - 5SDO_WITHIN_DISTANCE - 5

Esempio.Esempio. Data la tabella geometrica così Data la tabella geometrica così definita definita EDIFICIO (id, descrizione, estensione) determinare la descrizione determinare la descrizione degli edifici che si trovano ad una degli edifici che si trovano ad una distanza inferiore a 20m dal punto così distanza inferiore a 20m dal punto così definito definito SDO_GEOMETRY (2001, null, null, SDO_ELEM_INFO_ARRAY(1,1,1), SDO_ORDINATE_ARRAY(4,4))

Università degli Studi di Udine 100

SDO_WITHIN_DISTANCE - 6SDO_WITHIN_DISTANCE - 6

SELECT descrizione

FROM EDIFICIO

WHERE SDO_WITHIN_DISTANCE (estensione,

SDO_GEOMETRY(

2001,null,null,

SDO_ELEM_INFO_ARRAY(1,1,1),

SDO_ORDINATE_ARRAY(4,4)),

‘distance=20‘)= ‘TRUE‘;

Università degli Studi di Udine 101

SDO_JOIN - 1SDO_JOIN - 1

• Esegue un join spaziale basato su una Esegue un join spaziale basato su una o più relazioni topologicheo più relazioni topologiche– non è un vero e proprio operatore non è un vero e proprio operatore spaziale ma una funzione su tabellespaziale ma una funzione su tabelle

• Sintassi:Sintassi:SDO_JOIN(tabella1, colonna1, tabella2, SDO_JOIN(tabella1, colonna1, tabella2, colonna2, parametri, ordine)colonna2, parametri, ordine)

Università degli Studi di Udine 102

SDO_JOIN - 2SDO_JOIN - 2

• tabella1 e geometria1 specificano tabella1 e geometria1 specificano una tabella ed una sua colonna una tabella ed una sua colonna geometricageometrica

• tabella2 e geometria2 specificano tabella2 e geometria2 specificano una seconda tabella ed una sua una seconda tabella ed una sua colonna geometricacolonna geometrica

Page 18: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 103

SDO_JOIN - 3SDO_JOIN - 3• Parametri (opzionali):Parametri (opzionali):

– maskmask: specifica la relazione topologica di : specifica la relazione topologica di interesseinteresse• default = filterdefault = filter

– distancedistance: specifica una distanza di : specifica una distanza di tolleranza che deve essere considerata tolleranza che deve essere considerata prima di verificare il controllo topologicoprima di verificare il controllo topologico

– unitunit: specifica un‘unità di misura associata : specifica un‘unità di misura associata alla distanzaalla distanza

• Ordine (opzionale): Ordine (opzionale): specifica se l‘ordine di specifica se l‘ordine di elaborazione delle tabelle coinvolte nel join elaborazione delle tabelle coinvolte nel join deve essere preservatodeve essere preservato

Università degli Studi di Udine 104

SDO_JOIN - 4SDO_JOIN - 4

• Deve essere usato all‘interno della Deve essere usato all‘interno della clausola FROMclausola FROM

• Ritorna un oggetto Ritorna un oggetto SDO_ROWIDSET, che consiste in SDO_ROWIDSET, che consiste in una tabella di oggetti una tabella di oggetti SDO_ROWIDPAIRSDO_ROWIDPAIR

Università degli Studi di Udine 105

SDO_JOIN - 5SDO_JOIN - 5

Esempio.Esempio. Data la tabella Data la tabella geometrica geometrica EDIFICIO (id, descrizione, estensione), selezionare, per ogni edificio, selezionare, per ogni edificio, tutti gli edifici con esso in tutti gli edifici con esso in relazione ANYINTERACTrelazione ANYINTERACT

Università degli Studi di Udine 106

SDO_JOIN - 6SDO_JOIN - 6

SELECT a.descrizione, b.descrizione

FROM TABLE(SDO_JOIN('EDIFICIO', ‚'estensione', 'EDIFICIO', 'estensione',

'mask=ANYINTERACT')) c,

EDIFICIO a,

EDIFICIO b

WHERE c.rowid1 = a.rowid

AND c.rowid2 = b.rowid

ORDER BY a.descrizione;

Università degli Studi di Udine 107

Funzioni aggregate - 1Funzioni aggregate - 1

• Le funzioni aggregate vengono Le funzioni aggregate vengono utilizzate per aggregare i risultati utilizzate per aggregare i risultati ottenuti da un‘interrogazioneottenuti da un‘interrogazione

• Analoghe alle funzioni aggregate Analoghe alle funzioni aggregate tradizionali, lavorano su dati tradizionali, lavorano su dati spazialispaziali

Università degli Studi di Udine 108

Funzioni aggregate - 2Funzioni aggregate - 2

• SDO_AGGREGATE_CENTROID Ritorna SDO_AGGREGATE_CENTROID Ritorna una geometria che è il centro di gravità una geometria che è il centro di gravità (centroide) della geometria specificata(centroide) della geometria specificata

• SDO_AGGR_CONVEXHULL Ritorna una SDO_AGGR_CONVEXHULL Ritorna una geometria che è il convex hull (bordo geometria che è il convex hull (bordo convesso) delle geometrie specificateconvesso) delle geometrie specificate

• SDO_AGGR_LRS_CONCAT Ritorna una SDO_AGGR_LRS_CONCAT Ritorna una geometria LRS (Linear Referencing geometria LRS (Linear Referencing System) che concatena gli oggetti System) che concatena gli oggetti geometrici LRS specificatigeometrici LRS specificati

Page 19: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 109

Funzioni aggregate - 3Funzioni aggregate - 3

• SDO_AGGR_MBR Ritorna il SDO_AGGR_MBR Ritorna il contorno del rettangolo minimo contorno del rettangolo minimo che contiene tutte le geometrie che contiene tutte le geometrie specificatespecificate

• SDO_AGGR_UNION Ritorna un SDO_AGGR_UNION Ritorna un oggetto geometrico che è l'unione oggetto geometrico che è l'unione topologica (operazione OR) degli topologica (operazione OR) degli oggetti geometrici specificatioggetti geometrici specificati

Università degli Studi di Udine 110

Funzioni aggregate - 4Funzioni aggregate - 4

• Molte funzioni accettano in input un Molte funzioni accettano in input un parametro di tipo SDOAGGRTYPE così parametro di tipo SDOAGGRTYPE così definito:definito:

CREATE TYPE SDOAGGRTYPE AS OBJECT(geometry SDO_GEOMETRY,

tolerance NUMBER);

Università degli Studi di Udine 111

Funzioni aggregate - 5Funzioni aggregate - 5

• Data la tabella geometrica così definita Data la tabella geometrica così definita TERRENI (id, estensione, utilizzo) determinare l‘unione dei terreni determinare l‘unione dei terreni utilizzati per scopi agricoli.utilizzati per scopi agricoli.

SELECT SDO_AGGR_UNION(SDOAGGRTYPE(t.estensione,0.005))

FROM TERRENI as t WHERE t.utilizzo=‘agricolo‘;

Università degli Studi di Udine 112

Indici - 1Indici - 1

• Permettono di ottenere una Permettono di ottenere una maggiore efficienza nell’accesso maggiore efficienza nell’accesso dei dati spazialidei dati spaziali

• Possono essere di due tipi:Possono essere di due tipi:– R-TreeR-Tree–QuadtreeQuadtree

Università degli Studi di Udine 113

Indici - 2Indici - 2

• Creare un indice R-Tree sull’attributo Creare un indice R-Tree sull’attributo geometrico geometrico estensione della tabella della tabella territorioCREATE INDEX territorio_ind ON territorio(estensione) INDEXTYPE IS MDSYS.SPATIAL_INDEX;

• Per creare un indice di tipo Quadtree Per creare un indice di tipo Quadtree bisogna aggiungere un parametrobisogna aggiungere un parametroPARAMETER (‘SDO_LEVEL=8’)

Università degli Studi di Udine 114

Indici - 3Indici - 3

• Se si vuole fare in modo che un Se si vuole fare in modo che un attributo di tipo SDO_GEOMETRY attributo di tipo SDO_GEOMETRY contenga solo un tipo di geometria contenga solo un tipo di geometria bisogna usare la keyword bisogna usare la keyword layer_gtypelayer_gtype nella clausola nella clausola PARAMETERS del comando CREATE PARAMETERS del comando CREATE INDEXINDEX

Page 20: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 115

Indici - 4Indici - 4

• Creare un indice R-Tree sull’attributo Creare un indice R-Tree sull’attributo geometrico geometrico estensione della della tabella_con_poligono imponendo che la imponendo che la geometria sia di tipo poligono:geometria sia di tipo poligono:

CREATE INDEX polygono_ind ON tabella_con_poligono(estensione) INDEXTYPE IS MDSYS.SPATIAL_INDEX PARAMETERS (‘layer_gtype=POLYGON’);

Università degli Studi di Udine 116

Indici - 5Indici - 5• Prima di creare un indice è necessario aggiornare la Prima di creare un indice è necessario aggiornare la

vista USER_SDO_GEOM_METADATA che descrive vista USER_SDO_GEOM_METADATA che descrive dimensione, estremi e tolleranza sulle diverse dimensione, estremi e tolleranza sulle diverse dimensionidimensioni

INSERT INTO USER_SDO_GEOM_METADATA VALUES (‘nomeTabella’, ‘nomeAttributoGeometrico’,

SDO_DIM_ARRAY( -- griglia 20x20 SDO_DIM_ELEMENT(‘X’,0,20,0.005),

SDO_DIM_ELEMENT(‘Y’,0,20,0.005)),

null);

Università degli Studi di Udine 117

Esercizio - 1Esercizio - 1

• Lo scenario è quello di un Lo scenario è quello di un produttore di bibita analcolica che produttore di bibita analcolica che ha identificato aree geografiche di ha identificato aree geografiche di interesse dal punto di vista del interesse dal punto di vista del marketing di diversi prodotti marketing di diversi prodotti (cola). (cola).

Università degli Studi di Udine 118

Esercizio - 2Esercizio - 2

Università degli Studi di Udine 119

Esercizio - 3Esercizio - 3

• Creazione di una tabella (COLA_MARKETS) Creazione di una tabella (COLA_MARKETS) che permette di memorizzare dati spazialiche permette di memorizzare dati spaziali

• Aggiornamento della vista Aggiornamento della vista USER_SDO_GEOM_METADATA USER_SDO_GEOM_METADATA per per riflettere la dimensione delle areeriflettere la dimensione delle aree

• Creazione di un indice spaziale Creazione di un indice spaziale (COLA_SPATIAL_IDX)(COLA_SPATIAL_IDX)

• Inserimento delle istanze relative ai Inserimento delle istanze relative ai quattro oggetti spaziali (quattro oggetti spaziali (cola_acola_a, , cola_bcola_b, , cola_ccola_c, , cola_dcola_d))

• Esecuzione di alcune interrogazioni spazialiEsecuzione di alcune interrogazioni spaziali

Università degli Studi di Udine 120

CreazioneCreazione

• Creazione di una tabella geografica dal Creazione di una tabella geografica dal nome cola_markets con tre attributi: nome cola_markets con tre attributi: l’identificatore (mkt_id), il nome (name) l’identificatore (mkt_id), il nome (name) e la geometria associata (shape).e la geometria associata (shape).

CREATE TABLE cola_markets (CREATE TABLE cola_markets (

mkt_id NUMBER PRIMARY KEY,mkt_id NUMBER PRIMARY KEY,

name VARCHAR2(10),name VARCHAR2(10),

shape SDO_GEOMETRY);shape SDO_GEOMETRY);

Page 21: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 121

Indice - 1Indice - 1• Aggiornamento della vista Aggiornamento della vista USER_SDO_GEOM_METADATA per la USER_SDO_GEOM_METADATA per la creazione degli indicicreazione degli indici

INSERT INTO USER_SDO_GEOM_METADATA VALUES ( ’cola_markets’, ’shape’,

SDO_DIM_ARRAY( -- 20X20 grid SDO_DIM_ELEMENT(’X’, 0, 20, 0.005),

SDO_DIM_ELEMENT(’Y’, 0, 20, 0.005)), NULL – SRID

);

Università degli Studi di Udine 122

Indice - 2Indice - 2

• Creazione dell’indiceCreazione dell’indice

CREATE INDEX cola_spatial_idx

ON cola_markets(shape) INDEXTYPE IS MDSYS.SPATIAL_INDEX; -- Preceding

created an R-tree index. -- Following line was for an earlier quadtree -- index:

PARAMETERS(’SDO_LEVEL = 8’);

Università degli Studi di Udine 123

InserimentoInserimento

• Inserimento delle quattro istanze Inserimento delle quattro istanze relative agli oggetti presenti sul relative agli oggetti presenti sul piano di interesse (cola_a, cola_b, piano di interesse (cola_a, cola_b, cola_c, cola_d)cola_c, cola_d)

Università degli Studi di Udine 124

INSERT INTO cola_markets VALUES(INSERT INTO cola_markets VALUES(

1,1,

’’cola_a’,cola_a’,

SDO_GEOMETRY(SDO_GEOMETRY(

2003, -- poligono bidimensionale 2003, -- poligono bidimensionale

NULL,NULL,

NULL,NULL,

SDO_ELEM_INFO_ARRAY(1,1003,3), SDO_ELEM_INFO_ARRAY(1,1003,3),

-- rettangolo (1003 = exterior)-- rettangolo (1003 = exterior)

SDO_ORDINATE_ARRAY(1,1, 5,7) SDO_ORDINATE_ARRAY(1,1, 5,7)

-- sono necessari solo due punti per definire-- sono necessari solo due punti per definire

-- un rettangolo-- un rettangolo

;;

Università degli Studi di Udine 125

INSERT INTO cola_markets VALUES(INSERT INTO cola_markets VALUES(

2,2,

’’cola_b’,cola_b’,

SDO_GEOMETRY(SDO_GEOMETRY(

2003, -- poligono bidimensionale2003, -- poligono bidimensionale

NULL,NULL,

NULL,NULL,

SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ELEM_INFO_ARRAY(1,1003,1),

-- poligono (1003=exterior)-- poligono (1003=exterior)

SDO_ORDINATE_ARRAY (5,1, 8,1, 8,6, 5,7, 5,1)SDO_ORDINATE_ARRAY (5,1, 8,1, 8,6, 5,7, 5,1)

))

););

Università degli Studi di Udine 126

INSERT INTO cola_markets VALUES(INSERT INTO cola_markets VALUES(

3,3,

’’cola_c’,cola_c’,

SDO_GEOMETRY(SDO_GEOMETRY(

2003, -- poligono bidimensionale2003, -- poligono bidimensionale

NULL,NULL,

NULL,NULL,

SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ELEM_INFO_ARRAY(1,1003,1),

-- poligono (exterior)-- poligono (exterior)

SDO_ORDINATE_ARRAYSDO_ORDINATE_ARRAY (3,3, 6,3, 6,5, 4,5, 3,3)(3,3, 6,3, 6,5, 4,5, 3,3)

))

););

Page 22: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 127

INSERT INTO cola_markets VALUES(INSERT INTO cola_markets VALUES(

4,4,

’’cola_d’,cola_d’,

SDO_GEOMETRY(SDO_GEOMETRY(

2003, -- poligono bidimensionale2003, -- poligono bidimensionale

NULL,NULL,

NULL,NULL,

SDO_ELEM_INFO_ARRAY(1,1003,4), SDO_ELEM_INFO_ARRAY(1,1003,4),

-- cerchio-- cerchio

SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)SDO_ORDINATE_ARRAY(8,7, 10,9, 8,11)

))

););

Università degli Studi di Udine 128

Interrogazione - 1Interrogazione - 1

• Determinare l‘intersezione topologica Determinare l‘intersezione topologica delle geometrie di cola_a e cola_cdelle geometrie di cola_a e cola_c

SELECT SDO_GEOM.SDO_INTERSECTION( c_a.

shape, c_c.shape, 0.005)

FROM cola_markets c_a, cola_markets c_c

WHERE c_a.name='cola_a' AND

c_c.name='cola_c';

Università degli Studi di Udine 129

Interrogazione - 2Interrogazione - 2

• Determinare se le geometrie di cola_b e Determinare se le geometrie di cola_b e cola_d sono non disgiunte (anyinteract)cola_d sono non disgiunte (anyinteract)

SELECT SDO_GEOM.RELATE(c_b.shape,

'ANYINTERACT', c_d.shape, 0.005)

FROM cola_markets c_b, cola_markets c_d

WHERE c_b.name='cola_b' AND c_d.name='cola_d';

Università degli Studi di Udine 130

Interrogazione - 3Interrogazione - 3

• Determinare l‘area di tutti i Determinare l‘area di tutti i prodotti colaprodotti cola

SELECT name,

SDO_GEOM.SDO_AREA(shape,0.005)

FROM cola_markets;

Università degli Studi di Udine 131

Interrogazione - 4Interrogazione - 4

• Determinare l‘area di cola_aDeterminare l‘area di cola_a

SELECT c.name,

SDO_GEOM.SDO_AREA(c.shape,0.005)

FROM cola_markets c

WHERE c.name = 'cola_a';

Università degli Studi di Udine 132

Interrogazione - 5Interrogazione - 5

• Determinare la distanza fra le Determinare la distanza fra le geometrie cola_b e cola_dgeometrie cola_b e cola_d

SELECT

SDO_GEOM.SDO_DISTANCE( c_b.shape, c_d.shape, 0.005)

FROM cola_markets c_b, cola_markets c_d

WHERE c_b.name='cola_b' AND

c_d.name='cola_d';

Page 23: Corso Storia Basi di Dati Spazialiusers.dimi.uniud.it/~donatella.gubiani/universita/corsi/bds/bds/slide5... · Università degli Studi di Udine 1 Corso di Basi di Dati Spaziali Angelo

Università degli Studi di Udine 133

Interrogazione - 6Interrogazione - 6

• Determinare le aree di mercato che Determinare le aree di mercato che intersecano cola_cintersecano cola_c

SELECT x.name

FROM cola_markets c, cola_markets x

WHERE c.name='cola_c' AND

SDO_RELATE( x.shape, c.shape,

'mask=OVERLAPBDYINTERSECT')= ‘TRUE‘;

Università degli Studi di Udine 134

Interrogazione - 7Interrogazione - 7

• Determinare le geometrie che si trovano Determinare le geometrie che si trovano ad una distanza inferiore a 2 da cola_dad una distanza inferiore a 2 da cola_d

SELECT x.name

FROM cola_markets d, cola_markets x

WHERE d.name='cola_d' AND x.name<>'cola_d' AND SDO_WITHIN_DISTANCE(x.shape, d.shape, 'distance=2')='TRUE';