Guida di riferimento per l'utente

Le rappresentazioni in formato ESRI

DB2 Spatial Extender dispone di varie funzioni che generano geometrie dalle rappresentazioni in formato ESRI: La rappresentazione WKB GIS, oltre a supportare la rappresentazione bidimensionale, supporta anche le misure e le coordinate Z facoltative. Le seguenti funzioni generano geometrie da un formato ESRI:

ST_GeometryFromShape
Crea una geometria dalla rappresentazione del formato di qualsiasi tipo di geometria.

ST_PointFromShape
Crea un punto dalla rappresentazione del formato di un punto.

ST_LineFromShape
Crea una stringa lineare dalla rappresentazione del formato di una stringa lineare.

ST_PolyFromShape
Crea un poligono dalla rappresentazione del formato di un poligono.

ST_MPointFromShape
Crea un multipunto dalla rappresentazione del formato di un multipunto.

ST_MLineFromShape
Crea una multistringa lineare dalla rappresentazione del formato di una multistringa lineare.

ST_MPolyFromShape
Crea un multipoligono dalla rappresentazione del formato di un multipoligono.

La sintassi generale di queste funzioni è uguale. Il primo argomento è la rappresentazione del formato immesso come tipo di dati BLOB (binary large object). Il secondo argomento è il valore intero dell'identificativo di riferimento spaziale da assegnare alla geometria. La funzione GeometryFromShape presenta la seguente sintassi:

db2gse.GeometryFromShape(ShapeGeometry Blob(1M), cr
db2gse.coordref)

Poiché queste funzioni del formato richiedono che la definizione delle strutture di linguaggio di programmazione C corrispondano alla rappresentazione binaria, sono state progettate per l'utilizzo in un programma 3GL e non sono adatte per un ambiente 4GL. La funzione AsShape converte il valore della geometria in una rappresentazione del formato ESRI.

Un tipo di formato 0 indica un formato nullo, privo di dati geometri.
Valore Tipo formato
0 Null Shape
1 Punto
3* Multiriga
5 Poligono
8 Multipunto
11 PuntoZ
13 MultirigaZ
15 PoligonoZ
18 MultipuntoZ
21 PuntoM
23 MultirigaM
25 PoligonoM
28 MultipuntoM
Nota:* I tipi di formato che non sono specificati (2, 4, 6 etc.) sono riservati per un utilizzo futuro.

Tipi di formato nell'area XY

Punto

Un punto comprende una coppia di coordinate di precisione doppia nell'ordine X, Y.

Tabella 66.
Contenuto del flusso di byte del punto

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

1

Integer

1

Little

Byte 4

P

P

Double

1

Little

Byte 12

Y

Y

Double

1

Little

Multipunto

Un Multipunto comprende una raccolta di punti. La casella di delimitazione è memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

Tabella 67.
Contenuto del flusso di byte del multipunto

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

8

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

Multirighe

Un Multirighe è una serie ordinata di vertici che comprende una o più parti. Una parte è una sequenza collegata di due o più punti. E' possibile che i punti non siano collegati tra loro. Non è rilevante la presenza di intersezioni tra le parti.

Poiché questa specifica consente la successione di punti con coordinate identiche, i programmi di lettura del file shape devono gestire tali casi. Inoltre, le parti con lunghezza zero che potrebbero derivare non sono consentite.

I campi relativi a un Multirighe sono:

Box
La casella limite relativa al Multirighe memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero delle parti nel Multirighe.

NumPoints
Il numero totale dei punti per tutte le parti.

Parts
Una serie di lunghezze NumParts. Ogni Multiriga memorizza l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Points
Una serie di lunghezze NumPoints. I punti per ciascuna parte del Multiriga vengono memorizzati da un'estremità all'altra. I punti relativi alla parte 2 seguono i punti relativi alla parte 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie dei punti tra le parti.

Tabella 68.
Contenuto del flusso di byte del Multiriga

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

3

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Nota:X = 44 + 4 * NumParts.

Poligono

Un poligono consiste di uno o più anelli. Un anello è una sequenza collegata di quattro o più punti che forma un loop chiuso privo di intersezioni. Un poligono può contenere più anelli esterni. L'ordine dei vertici o l'orientamento di un anello indica quale lato dell'anello è l'interno del poligono. Il contorno di un punto a destra di un observer che si trova sull'anello secondo il senso dell'ordine dei vertici rappresenta l'interno del poligono. I vertici delle righe che definiscono i fori dei poligoni sono in senso antiorario. I vertici per un poligono singolo con anelli, quindi, sono sempre in senso orario. Gli anelli di un poligono sono denominati parti.

Poiché questa specifica consente la successione di punti con coordinate identiche, i programmi di lettura del file shape devono gestire tali casi. Inoltre, le parti con area o lunghezza zero che potrebbero derivare non sono consentite.

I campi relativi a un poligono sono:

Box
La casella limite relativa al poligono memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero di anelli nel poligono.

NumPoints
Il numero totale di punti per tutti gli anelli.

Parts
Una serie di lunghezze NumParts. Per ciascun anello, viene memorizzato l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Punti
Una serie di lunghezze NumPoints. I punti per ciascun anello del poligono vengono memorizzati da un'estremità all'altra. I punti relativi all'anello 2 seguono i punti relativi all'anello 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascun anello. Non è presente alcun delimitatore nella serie dei punti tra gli anelli.

Note importanti relative alle forme Poligono:

Un esempio di istanza di poligono

Figura 40. Un poligono con un foro e otto vertici


top

Figura 41. Contenuto del flusso di byte del poligono. NumParts corrisponde a 2 e NumPoints corrisponde a 10. Tenere presente che l'ordine dei punti del poligono a forma di ciambella (foro) viene invertito.


top


Tabella 69.
Contenuto del flusso di byte del poligono

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

5

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Nota:X = 44 + 4 * NumParts.

Tipi di formato misura nell'area XY

PuntoM

Un PuntoM comprende una coppia di coordinate di precisione doppia nell'ordine X, Y con una misura M.

Tabella 70.
Contenuto del flusso di byte di PuntoM

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

21

Integer

1

Little

Byte 4

P

P

Double

1

Little

Byte 12

Y

Y

Double

1

Little

Byte 20

M

M

Double

1

Little

MultipuntoM

I campi relativi a un MultipuntoM sono:

Box
La casella limite relativa al MultipuntoM memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumPoints
Il numero di punti.

Points
Una serie di punti di lunghezza NumPoints.

NumMs
Il numero di misure. NumMs può presentare solo due valori zero se nel campo non è presente alcuna misura oppure uguale a NumPoints se sono presenti misure.

M Range
Le misure minime e massime relative al MultipuntoM memorizzate nell'ordine Mmin, Mmax.

M Array
Una serie di misure di lunghezza NumPoints.

Tabella 71.
Contenuto del flusso di byte di MultipuntoM

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

28

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

Byte X

NumMs

NumMs

Integer

1

Little

Byte X+4*

Mmin

Mmin

Double

1

Little

Byte X+12*

Mmax

Mmax

Double

1

Little

Byte X+20*

Marray

Marray

Double

NumPoints

Little

Note:

  1. X = 40 + (16 * NumPoints)

  2. * facoltativo

MultirigaM

Un file shape MultirigaM consiste di una o più parti. Una parte è una sequenza collegata di due o più punti. La connessione tra le parte non è rilevante. Le parti non possono intersecarsi.

I campi relativi a un MultirigaM sono:

Box
La casella limite relativa al MultirigaM memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero delle parti nel MultirigaM.

NumPoints
Il numero totale dei punti per tutte le parti.

Parts
Una serie di lunghezze NumParts. Viene memorizzato, per ciascuna parte, l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Points
Una serie di lunghezze NumPoints. I punti per ciascuna parte del MultirigaM vengono memorizzati da un'estremità all'altra. I punti relativi alla parte 2 seguono i punti relativi alla parte 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie dei punti tra le parti.

NumMs
Il numero di misure. NumMs può presentare solo due valori zero se nel campo non è presente alcuna misura oppure uguale a NumPoints se sono presenti misure.

M Range
Le misure minime e massime relative al MultirigaM memorizzate nell'ordine Mmin, Mmax.

M Array
Una serie di lunghezze NumPoints. Le misure per ciascuna parte del MultirigaM vengono memorizzati da un'estremità all'altra. Le misure relative alla parte 2 seguono le misure relative alla parte 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie di misure tra le parti.

Tabella 72.
Contenuto del flusso di byte di MultirigaM

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

13

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Note:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * facoltativo

PoligonoM

Un PoligonoM comprende un numero di anelli. Un anello è un loop chiuso privo di intersezioni. Tenere presente che le intersezioni sono calcolate nell'area XY e non nell'area XYM. Un PoligonoM può contenere più anelli esterni. Gli anelli di un PoligonoM sono denominati parti.

I campi relativi a un PoligonoM sono:

Box
La casella limite relativa al PoligonoM memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero di anelli nel PoligonoM.

NumPoints
Il numero totale di punti per tutti gli anelli.

Parts
Una serie di lunghezze NumParts. Per ciascun anello, viene memorizzato l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Points
Una serie di lunghezze NumPoints. I punti per ciascun anello di PoligonoM vengono memorizzati da un'estremità all'altra. I punti relativi all'anello 2 seguono i punti relativi all'anello 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascun anello. Non è presente alcun delimitatore nella serie dei punti tra gli anelli.

NumMs
Il numero di misure. NumMs può presentare solo due valori zero se nel campo non è presente alcuna misura oppure uguale a NumPoints se nono presenti misure.

M Range
Le misure minime e massime relative al PoligonoM memorizzate nell'ordine Mmin, Mmax.

M Array
Una serie di lunghezze NumPoints. Le misure per ciascun anello di PoligonoM vengono memorizzate da un'estremità all'altra. Le misure relative alla parte 2 seguono le misure relative all'anello 1 e così via. La serie delle parti contiene l'indice della serie della misura iniziale per ciascun anello. Non è presente alcun delimitatore nella serie di misure tra gli anelli.

Note importanti relative alle forme PoligonoM:

Tabella 73.
Contenuto del flusso di byte di PoligonoM

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

15

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Note:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints).

  2. * facoltativo

Tipi di forma nell'area XYZ

PuntoZ

Un PuntoZ comprende coordinate du precisione doppia o tripla nell'ordine X, Y, Z più una misura.

Tabella 74.
Contenuto del flusso di byte di PuntoZ

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

11

Integer

1

Little

Byte 4

P

P

Double

1

Little

Byte 12

Y

Y

Double

1

Little

Byte 20

Z

Z

Double

1

Little

Byte 28

Measure

M

Double

1

Little

MultipuntoZ

Un MultipuntoZ rappresenta una serie di PuntoZ, come segue:


Tabella 75.
Contenuto del flusso di byte di MultipuntoZ

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

18

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumPoints

NumPoints

Integer

1

Little

Byte 40

Points

Points

Point

NumPoints

Little

Byte X

Zmin

Zmin

Double

1

Little

Byte X+8

Zmax

Zmax

Double

1

Little

Byte X+16

Zarray

Zarray

Double

NumPoints

Little

Byte Y

NumMs

NumMs

Integer

1

Little

Byte Y+4*

Mmin

Mmin

Double

1

Little

Byte Y+12*

Mmax

Mmax

Double

1

Little

Byte Y+20*

Marray

Marray

Double

NumPoints

Little

Note:

  1. X = 40 + (16 * NumPoints); Y = X + 16 + (8 * NumPoints)

  2. * facoltativo

MultirigaZ

Un MultirigaZ consiste dia una o più parti. Una parte è una sequenza collegata di due o più punti. La connessione tra le parte non è rilevante. Le parti non possono intersecarsi.

I campi relativi a un MultirigaZ sono:

Box
La casella limite relativa al MultirigaZ memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero delle parti nel MultirigaZ.

NumPoints
Il numero totale dei punti per tutte le parti.

Parts
Una serie di lunghezze NumParts. Viene memorizzato, per ciascuna parte, l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Points
Una serie di lunghezze NumPoints. I punti per ciascuna parte del MultirigaZ vengono memorizzati da un'estremità all'altra. I punti relativi alla parte 2 seguono i punti relativi alla parte 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie dei punti tra le parti.

Z Range
I valori Z minimi e massimi relativi al MultirigaZ memorizzati nell'ordine Zmin, Zmax.

Z Array
Una serie di lunghezze NumPoints. I valori Z per ciascuna parte del MultirigaZ vengono memorizzati da un'estremità all'altra. I valori Z della parte 2 seguono i valori Z della parte 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie Z tra le parti.

NumMs
Il numero di misure. NumMs può presentare solo due valori zero se nel campo non è presente alcuna misura oppure uguale a NumPoints se sono presenti misure.

M Range
Le misure minime e massime relative al MultirigaZ memorizzate nell'ordine Mmin, Mmax.

M Array
Una serie di lunghezze NumPoints. Le misure per ciascuna parte del MultirigaZ vengono memorizzate da un'estremità all'altra. Le misure relative alla parte 2 seguono le misure relative alla parte 1 e così via. La serie delle parti contiene l'indice della serie della misura iniziale per ciascuna parte. Non è presente alcun delimitatore nella serie di misure tra le parti.

Tabella 76.
Contenuto del flusso di byte MultirigaZ

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

13

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

Zmin

Zmin

Double

1

Little

Byte Y+8

Zmax

Zmax

Double

1

Little

Byte Y+16

Zarray

Zarray

Double

NumPoints

Little

Byte Z

NumMs

NumMs

Integer

1

Little

Byte Z+4*

Mmin

Mmin

Double

1

Little

Byte Z+12*

Mmax

Mmax

Double

1

Little

Byte Z+20*

Marray

Marray

Double

NumPoints

Little

Note:

  1. X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 * NumPoints)

  2. * facoltativo

PoligonoZ

Un PoligonoZ comprende un numero di anelli. Un anello è un loop chiuso privo di intersezioni. Un PoligonoZ può contenere più anelli esterni. Gli anelli di un PoligonoZ sono denominati parti.

I campi relativi a un PoligonoZ sono:

Box
La casella limite relativa al PoligonoZ memorizzata nell'ordine Xmin, Ymin, Xmax, Ymax.

NumParts
Il numero di anelli nel PoligonoZ.

NumPoints
Il numero totale di punti per tutti gli anelli.

Parts
Una serie di lunghezze NumParts. Per ciascun anello, viene memorizzato l'indice del relativo primo punto nella serie di punti. Gli indici della serie fanno riferimento a 0.

Points
Una serie di lunghezze NumPoints. I punti per ciascun anello di PoligonoZ vengono memorizzati da un'estremità all'altra. I punti relativi all'anello 2 seguono i punti relativi all'anello 1 e così via. La serie delle parti contiene l'indice della serie del punto iniziale per ciascun anello. Non è presente alcun delimitatore nella serie dei punti tra gli anelli.

Z Range
I valori Z minimi e massimi relativi ad arc memorizzati nell'ordine Zmin, Zmax.

Z Array
Una serie di lunghezze NumPoints. I valori Z per ciascun anello di PoligonoZ vengono memorizzati da un'estremità all'altra. I valori Z dell'anello 2 seguono i valori Z dell'anello 1 e così via. La serie delle parti contiene l'indice della serie del valore Z iniziale per ciascun anello. Non è presente alcun delimitatore nella serie di valori Z tra gli anelli.

NumMs
Il numero di misure. NumMs può presentare solo due valori zero se nel campo non è presente alcuna misura oppure uguale a NumPoints se sono presenti misure.

M Range
Le misure minime e massime relative al PoligonoZ memorizzate nell'ordine Mmin, Mmax.

M Array
Una serie di lunghezze NumPoints. Le misure per ciascun anello di PoligonoZ vengono memorizzati da un'estremità all'altra. Le misure relative alla parte 2 seguono le misure relative all'anello 1 e così via. La serie delle parti contiene l'indice della serie della misura iniziale per ciascun anello. Non è presente alcun delimitatore nella serie di misure tra gli anelli.

Note importanti relative alle forme PoligonoZ:

Tabella 77.
Contenuto del flusso di byte di PoligonoZ

Posizione

Campo

Valore

Tipo

Numero

Ordine

Byte 0

Tipo formato

15

Integer

1

Little

Byte 4

Box

Box

Double

4

Little

Byte 36

NumParts

NumParts

Integer

1

Little

Byte 40

NumPoints

NumPoints

Integer

1

Little

Byte 44

Parts

Parts

Integer

NumParts

Little

Byte X

Points

Points

Point

NumPoints

Little

Byte Y

Zmin

Zmin

Double

1

Little

Byte Y+8

Zmax

Zmax

Double

1

Little

Byte Y+16

Zarray

Zarray

Double

NumPoints

Little

Byte Z

NumMs

NumMs

Integer

1

Little

Byte Z+4*

Mmin

Mmin

Double

1

Little

Byte Z+12*

Mmax

Mmax

Double

1

Little

Byte Z+20*

Marray

Marray

Double

NumPoints

Little


[ Inizio pagina | Pagina precedente | Pagina successiva | Indice | Indice analitico ]