Le sezioni precedenti descrivono tre categorie di funzioni spaziali:
Questa sezione descrive altre tre categorie:
Varie funzioni spaziali restituiscono informazioni sui modi in cui gli elementi geografici vengono correlati e confrontati tra loro. La maggior parte di queste funzioni, denominate predicati, sono funzioni boolean. Questa sezione fornisce informazioni generali sui predicati e informazioni specifiche relative a ciascuna funzione.
Le funzioni predicato restituisce 1 (TRUE) se un confronto soddisfa i criteri della funzione oppure 0 (FALSE) in caso contrario. I predicati che controllano una relazione spaziale confrontano coppie di geometrie di tipo o dimensione differente.
I predicati confrontano le coordinate X e Y delle geometrie interessate. Le coordinate Z e le misure (se esistenti) vengono ignorate. Ciò consente il confronto di geometrie con coordinate Z o misure con geometrie prive di esse.
Il modello DE-9IM (Dimensionally Extended 9 Intersection Model) 1 è un approccio matematico che definisce la relazione spaziale tra geometrie di tipi e dimensioni differenti. Questo modello descrive le relazioni spaziali tra tutti i tipi di geometrie come intersezioni dei relativi interni, limiti ed esterni considerando la dimensione delle intersezioni derivanti.
Nelle geometrie a e b: I(a ), B(a ) ed E(a ) rappresentano l'interno, il limite e l'esterno di a. I(b), B(b) ed E(b) rappresentano l'interno, il limite e l'esterno di b. Le intersezioni di I(a), B(a) ed E(a) con I(b), B(b) ed E(b) producono una matrice 3 per 3. Ogni intersezione può creare geometrie di dimensioni differenti. Ad esempio, l'intersezione dei limiti di due poligoni consiste di un punto e una stringa lineare, in tal caso la funzione dim dovrebbe restituire come dimensione massima 1.
La funzione dim restituisce un valore 1, 0, 1 o 2. Il valore 1
corrisponde alla serie null o dim(null), che viene restituito quando non viene
rilevata alcuna intersezione.
|
Interno
|
Limite
|
Esterno
|
Interno
|
dim(I(a) &intersect. I(b))
|
dim(I(a) &intersect. B(b))
|
dim(I(a) &intersect. E(b))
|
Limite
|
dim(B(a) &intersect. I(b))
|
dim(B(a) &intersect. B(b))
|
dim(B(a) &intersect. E(b))
|
Esterno
|
dim(E(a) &intersect. I(b))
|
dim(E(a) &intersect. B(b))
|
dim(E(a) &intersect. E(b))
|
Il risultato dei predicati di relazione spaziale possono essere interpretati o verificati confrontando i risultati del predicato con una matrice modello che rappresenta i valori accettabili per DE-9IM.
La matrice modello contiene i valori accettabili per ciascuna cella della matrice di intersezione. I valori modello possibili sono:
Ad esempio, la seguente matrice modello per il predicato ST_Within
include i valori T, F e *.
Tabella 40. Matrice per ST_Within
La matrice modello del predicato ST_Within per le combinazioni di geometrie. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Esterno
|
*
|
*
|
*
|
Il predicato ST_Within restituisce TRUE quando gli interni di entrambe le geometrie si intersecano e quando l'interno e il limite di a non intersecano l'esterno di b. Tutte le altre situazioni non sono rilevanti.
Ciascun predicato presenta almeno una matrice modello, ma alcuni richiedono più di una matrice per descrivere le relazioni di varie combinazioni di tipi di geometria.
ST_Equals restituisce 1 (TRUE) se le due geometrie dello stesso tipo presentano valori di coordinate X,Y identici.
Figura 14. ST_Equals. Le geometrie sono uguali se presentano coordinate X,Y corrispondenti.
![]() |
Tabella 41. Matrice per l'uguaglianza
La matrice modello DE-9IM per l'uguaglianza garantisce l'intersezione degli interni e che nessun interno o limite di entrambe le geometrie si intersecano con l'esterno dell'altra. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Esterno
|
F
|
F
|
*
|
Per ulteriori informazioni consultare ST_Equals.
ST_OrderingEquals confronta le due geometrie e restituisce 1 (TRUE) se le geometrie sono uguali e le coordinate sono nello stesso ordine; in caso contrario restituisce 0 (FALSE). Per ulteriori informazioni consultare ST_OrderingEquals.
ST_Disjoint restituisce 1 (TRUE) se l'intersezione delle due geometrie è una serie vuota.
Figura 15. ST_Disjoint. Le geometrie sono separate se non si intersecano in alcun modo.
![]() |
Tabella 42. Matrice per ST_Disjoint
La matrice modello del predicato ST_Disjoint specifica che gli interni e i limiti di entrambe le geometrie non si intersecano. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
F
|
F
|
*
|
|
Limite
|
F
|
F
|
*
|
|
Esterno
|
*
|
*
|
*
|
Per ulteriori informazioni consultare ST_Disjoint.
ST_Intersects restituisce 1 (TRUE) se l'intersezione non risulta in una serie vuota. L'intersezione restituisce l'opposto esatto di ST_Disjoint.
Il predicato ST_Intersects restituisce TRUE se le condizioni delle
seguenti matrici modello restituisce TRUE.
Tabella 43. Matrice per ST_Intersects (1)
Il predicato ST_Intersects restituisce TRUE se gli interni di entrambe le geometrie si intersecano. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Tabella 44. Matrice per ST_Intersects (2)
Il predicato ST_Intersects restituisce TRUE se il limite della prima geometria si interseca con il limite della seconda geometria. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
*
|
P
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Tabella 45. Matrice per ST_Intersects (3)
Il predicato ST_Intersects restituisce TRUE se il limite della prima geometria si interseca con l'interno della seconda geometria. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
*
|
*
|
*
|
|
Limite
|
P
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Tabella 46. Matrice per ST_Intersects (4)
Il predicato ST_Intersects restituisce TRUE se i limiti di entrambe le geometrie si intersecano. | ||||
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
*
|
*
|
*
|
|
Limite
|
*
|
P
|
*
|
|
Esterno
|
*
|
*
|
*
|
Per ulteriori informazioni consultare ST_Intersects.
Questa funzione restituisce 1 (TRUE) se gli inviluppi delle due geometrie si intersecano. E' una funzione di convenienza che implementa in modo efficiente ST_Intersects (ST_Envelope(g1),ST_Envelope(g2)). Per ulteriori informazioni consultare EnvelopesIntersect.
ST_Touches restituisce 1 (TRUE) se nessuno dei punti comuni delle geometrie intersecano gli interni di entrambe le geometrie. Almeno una geometria deve essere una stringa lineare, un poligono, una multistringa lineare o un multipoligono.
![]() |
Le matrici modello illustrano che il predicato ST_Touches restituisce TRUE
quando gli interni della geometria non si intersecano e il limite delle
geometrie si intersecano con gli interni e i relativi limiti delle altre
geometrie.
Tabella 47. Matrice per ST_Touches (1)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
F
|
P
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Tabella 48. Matrice per ST_Touches (2)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
F
|
*
|
*
|
|
Limite
|
P
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Tabella 49. Matrice per ST_Touches (3)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
F
|
*
|
*
|
|
Limite
|
*
|
P
|
*
|
|
Esterno
|
*
|
*
|
*
|
Per ulteriori informazioni consultare ST_Touches.
ST_Overlaps confronta le due geometrie della stessa dimensione. Tale funzione restituisce 1 (TRUE) se la relativa serie di intersezioni crea una geometria differente da entrambe ma con la stessa dimensione.
![]() |
La matrice modello nella Tabella 50 fa riferimento alle sovrapposizioni poligono/poligono,
multipunto/multipunto e multipoligono/multipoligono. Per queste
combinazioni il predicato di sovrapposizione restituisce TRUE se
l'interno di entrambe le geometrie si interseca con gli altri interni ed
esterni.
Tabella 50. Matrice per ST_Overlaps (1)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
P
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
P
|
*
|
*
|
La matrice modello nella Tabella 51 fa riferimento alle sovrapposizioni stringa lineare/stringa
lineare e multistringa lineare/multistringa lineare. In questo caso
l'intersezione delle geometrie deve creare una geometria con dimensione 1
(un'altra stringa lineare). Se la dimensione
dell'intersezione degli interni è 1, il predicato ST_Overlaps dovrebbe
restituire FALSE e il predicato ST_Crosses TRUE.
Tabella 51. Matrice per ST_Overlaps (2)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
1
|
*
|
P
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
P
|
*
|
*
|
Per ulteriori informazioni consultare ST_Overlaps.
ST_Crosses restituisce 1 (TRUE) se l'intersezione crea una geometria con dimensione inferiore alla dimensione massima delle due geometrie di origine e la serie di intersezioni è interna a entrambe le geometrie di origine. ST_Crosses restituisce 1 (TRUE) solo per i confronti multipunto/poligono, multipunto/stringa lineare, stringa lineare/stringa lineare, stringa lineare/poligono e stringa lineare/multipoligono.
![]() |
La matrice modello nella Tabella 52 fa riferimento alle sovrapposizioni multipunto/stringa
lineare, multipunto/multistringa lineare, multipunto/poligono,
multipunto/multipoligono, stringa lineare/poligono, stringa
lineare/multipoligono. La matrice specifica che gli interni devono
intersecarsi e che l'interno della geometria principale (geometria
a) devono intersecarsi con l'esterno della geometria
secondaria (geometria b ).
Tabella 52. Matrice per ST_Crosses (1)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
P
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
La matrice modello nella Tabella 53 fa riferimento alle sovrapposizioni stringa lineare/stringa
lineare, stringa lineare/multistringa lineare e multistringa
lineare/multistringa lineare. La matrice specifica come dimensione di
intersezione degli interni 0 (intersezione con un punto). Se la
dimensione di questa intersezione è 1 (intersezione con una stringa lineare),
il predicato ST_Crosses restituisce FALSE; e il predicato
ST_Overlaps restituisce TRUE.
Tabella 53. Matrice per ST_Crosses (2)
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
0
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
*
|
*
|
*
|
Per ulteriori informazioni consultare ST_Crosses.
ST_Within restituisce 1 (TRUE) se la prima geometria rientra completamente nella seconda geometria. ST_Within restituisce l'opposto esatto di ST_Contains.
![]() |
La matrice modello del predicato ST_Within specifica che gli interni di
entrambe le geometrie devono intersecarsi mentre l'interno e il limite
della geometria principale (geometria a ) non deve intersecarsi con
l'esterno della geometria secondaria (geometria b ).
Tabella 54. Matrice per ST_Within
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
F
|
|
Limite
|
*
|
*
|
F
|
|
Esterno
|
*
|
*
|
*
|
Per ulteriori informazioni consultare ST_Within.
ST_Contains restituisce 1 (TRUE) se la seconda geometria rientra completamente nella prima geometria. Il predicato ST_Contains restituisce l'opposto esatto del predicato ST_Within.
![]() |
La matrice modello del predicato ST_Contains specifica che gli interni
di entrambe le geometrie devono intersecarsi e l'interno e il limite
della geometria secondaria (geometria b ) non devono intersecarsi
con l'esterno della geometria principale (geometria a
).
Tabella 55. Matrice per ST_Contains
|
|
b
|
|
|
|
|
Interno
|
Limite
|
Esterno
|
a
|
Interno
|
P
|
*
|
*
|
|
Limite
|
*
|
*
|
*
|
|
Esterno
|
F
|
F
|
*
|
Per ulteriori informazioni consultare ST_Contains.
La funzione ST_Relate confronta le due geometrie e restituisce 1 (TRUE) se le geometrie soddisfano le condizioni specificate dalla stringa della matrice modello DE-91M; in caso contrario, la funzione restituisce 0 (FALSE). Per ulteriori informazioni consultare ST_Relate.
La funzione ST_Distance rileva la distanza minima che separa due elementi separati. Se gli elementi non sono separati, la funzione rileverà una distanza minima uguale a 0.
Ad esempio, ST_Distance può rilevare la distanza minore che un aeroplano può coprire per unire due ubicazioni. La Figura 20 illustra tali informazioni.
Figura 20. Distanza minima tra due città. ST_Distance può rilevare le coordinate per le ubicazioni di Los Angeles e Chicago come input e restituire un valore che indica la distanza minima tra le due ubicazioni.
![]() |
Per ulteriori informazioni consultare ST_Distance.
DB2 Spatial Extender fornisce predicati e funzioni di trasformazione che generano nuove geometrie da quelle esistenti.
La funzione ST_Intersection restituisce la serie di intersezioni di due geometrie. La serie di intersezioni viene sempre restituita come raccolta con la dimensione minima delle geometrie di origine. Ad esempio, per una stringa lineare che si interseca con un poligono, la funzione di intersezione restituisce una multistringa lineare comprensiva della porzione di stringa lineare comune nell'interno e sul limite del poligono. La multistringa lineare contiene più di una stringa lineare se la stringa lineare di origine si interseca con il poligono con due o più segmenti discontinui. Se le geometrie non si intersecano o se l'intersezione crea una geometria di dimensione inferiore alle geometrie di origine, viene restituita una geometria vuota.
Figura 21. ST_Intersection. Esempi di funzione ST_Intersection.
![]() |
Per ulteriori informazioni consultare ST_Intersection.
La funzione ST_Difference restituisce la porzione della geometria principale che non presenta intersezioni con la geometria secondaria. Questa funzione rappresenta l'operatore AND NOT logico dell'area. La funzione ST_Difference viene utilizzata solo con le geometrie con dimensioni uguali e restituisce una raccolta con dimensione corrispondente alle geometrie di origine. Nel caso in cui le geometrie di origine sono uguali, viene restituita una geometria vuota.
![]() |
Per ulteriori informazioni consultare ST_Difference.
La funzione ST_Union restituisce la serie di unioni di due geometrie. Tale funzione rappresenta l'operatore OR logico dell'area. Le geometrie di origine devono essere di dimensione uguale. ST_Union restituisce sempre il risultato come raccolta.
![]() |
Per ulteriori informazioni consultare ST_Union.
La funzione ST_Buffer genera una geometria racchiudendo più volte una geometria a una distanza specifica. Un poligono deriva dalla creazione di un buffer di una geometria principale o dagli elementi di una raccolta chiusi in modo che tutti i poligoni del buffer si sovrappongono. Tuttavia, quando c'è una distanza sufficiente tra gli elementi di una raccolta del buffer, si rileveranno i poligoni del buffer individuale, in tal caso la funzione ST_Buffer restituisce un multipoligono.
![]() |
La funzione ST_Buffer accetta la distanza positiva e quella negativa, tuttavia, solo le geometrie con una dimensione 2 (poligoni e multipoligoni) sono valide per un buffer negativo. Il valore assoluto della distanza di buffer viene utilizzato ogni volta la dimensione della geometria di origine è inferiore a 2 (tutte le geometrie escluso il poligono e il multipoligono).
In generale, per gli anelli esterni, la distanza di buffer positivo genera anelli di poligono lontani dal centro della geometria di origine; le distanze di buffer negative generano anelli di poligono o multipoligono in prossimità del centro. Per gli anelli interni di un poligono o multipoligono, una distanza di buffer positiva genera un anello di buffer in prossimità del centro e una distanza di buffer negativa genera un anello di buffer lontano dal centro.
Il processo di creazione buffer unisce i poligoni che si sovrappongono. Le distanze negative superiori alla metà della larghezza massima dell'interno di un poligono creano una geometria vuota.
Per ulteriori informazioni consultare ST_Buffer.
Per le geometria con misure, è possibile rilevare l'ubicazione di una particolare misura con la funzione LocateAlong. LocateAlong restituisce l'ubicazione come multipunto. Se la dimensione della geometria di origine è 0 (ad esempio, un punto e un multipunto), è necessaria una corrispondenza esatta e i punti con un valore di misura corrispondente vengono restituiti come multipunto. Tuttavia, per le geometrie di origine la cui dimensione è superiore a 0, viene eseguita l'interpolazione dell'ubicazione. Ad esempio, se il valore della misura immesso è 5.5 e le misure dei vertici di una stringa lineare sono rispettivamente 3, 4, 5, 6 e 7, viene restituito il punto di interpolazione che si trova esattamente al centro tra i vertici con valori di misura 5 e 6.
![]() |
Per ulteriori informazioni consultare LocateAlong.
La funzione LocateBetween restituisce la serie di percorsi o di ubicazioni che rispecchiano la media dei due valori delle misure delle geometrie di origine. Se la dimensione della geometria di origine è 0, LocateBetween restituisce un multipunto contenente tutti i punti le cui misure rappresentano la media delle due misure di origine. Per le geometrie di origine la cui dimensione è superiore a 0, LocateBetween restituisce una multistringa lineare se è possibile eseguire l'interpolazione di un percorso; in caso contrario LocateBetween restituisce un multipunto contenente le ubicazioni dei punti. Un punto vuoto viene restituito ogni volta che LocateBetween non può eseguire l'interpolazione di un percorso o non può rilevare un'ubicazione tra le due misure. LocateBetween esegue una ricerca comprensiva delle geometrie; quindi le misure delle geometrie devono essere superiori o uguali alle misure from e inferiori o uguali a quelle to.
![]() |
Per ulteriori informazioni consultare LocateBetween.
La funzione ST_ConvexHull restituisce il poligono a involucro convesso di ciascuna geometria con almeno tre vertici che formano una figura convessa. Se i vertici della geometria non formano una figura convessa, ST_ConvexHull restituisce un valore nullo. ST_ConvexHull rappresenta la prima operazione nella rappresentazione a tasselli utilizzata per creare una rete TIN da una serie di punti.
![]() |
Per ulteriori informazioni consultare ST_ConvexHull.
Genera un poligono da una stringa lineare. Per ulteriori informazioni consultare ST_Polygon.
DB2 Spatial Extender supporta tre formati di scambio dati GIS:
DB2 Spatial Extender dispone di varie funzioni che generano geometrie dalle descrizioni di testo.
La rappresentazione di testo è una stringa ASCII. Tale rappresentazione consente lo scambio della geometria in formato di testo ASCII. Queste funzioni non richiedono la definizione di alcuna struttura di programma speciale per associare una rappresentazione binaria. Quindi, è possibile utilizzare tali funzioni nel programma 3GL o 4GL.
La funzione ST_AsText converte il valore di una geometria esistente in una rappresentazione di testo. Per ulteriori informazioni consultare ST_AsText.
Per una descrizione dettagliata delle rappresentazioni WKT, consultare la sezione Le rappresentazioni WKT OGC.
DB2 Spatial Extender dispone di varie funzioni che generano geometrie dalle rappresentazioni WKB (well-known binary).
La rappresentazione WKB rappresenta un flusso di byte contiguo. Tale rappresentazione consente lo scambio tra un client ODBC e un database SQL in formato binario. Queste funzioni della geometria richiedono che la definizione delle strutture C corrispondano alla rappresentazione binaria. Quindi sono state progettate per l'utilizzo in un programma 3GL e non sono adatte per un ambiente 4GL.
La funzione ST_AsBinary converte il valore di una geometria esistente in una rappresentazione WKB. Per ulteriori informazioni consultare ST_AsBinary.
Per una descrizione dettagliata delle rappresentazioni WKT, consultare la sezione Le rappresentazioni WKB (well-known binary) OGC.
DB2 Spatial Extender dispone di varie funzioni che generano geometrie da una rappresentazione in formato ESRI. La rappresentazione in formato ESRI supporta le coordinate Z e le misure oltre alle rappresentazioni bidimensionali supportate dalle rappresentazione WKB e WKT.
La sintassi generale di queste funzioni è uguale. Il primo argomento è la rappresentazione del formato immesso come tipo di dati BLOB. Il secondo argomento è l'identificativo di riferimento spaziale che verrà assegnato alla geometria. Ad esempio, la funzione GeometryFromShape presenta la seguente sintassi:
GeometryFromShape(shapegeometry, SRID)
Per associare la rappresentazione binaria, queste funzioni di formato richiedono la definizione delle strutture C. Quindi sono state progettate per l'utilizzo in un programma 3GL e non sono adatte per un ambiente 4GL.
La funzione AsBinaryShape converte il valore di una geometria in una rappresentazione del formato ESRI. Per ulteriori informazioni consultare AsBinaryShape.
Per una descrizione dettagliata delle rappresentazioni del formato, consultare la sezione Le rappresentazioni in formato ESRI.