Guide d'utilisation et de référence


Représentation de forme ESRI

Extension Spatiale dispose de plusieurs fonctions de génération de géométries à partir de représentations de formes ESRI. La représentation de formes ESRI prend en charge les coordonnées Z et les mesures, en sus de la représentation bidimensionnelle prise en charge par la représentation binaires connue OpenGis. Les fonctions suivantes génèrent une géométrie à partir d'une forme ESRI :

GeometryFromShape
Crée une géométrie à partir de représentation en tant que forme d'un type de géométrie quelconque.

PointFromShape
Crée un point à partir de la représentation de type forme d'un point.

LineFromShape
Crée une ligne à partir de la représentation de type forme d'une ligne.

PolyFromShape
Crée un polygone à partir de la représentation de type forme d'un polygone.

MPointFromShape
Crée un multipoint à partir de la représentation de type forme d'un multipoint.

MLineFromShape
Crée un multiligne à partir de la représentation de type forme d'une multiligne.

MPolyFromShape
Crée un multipolygone à partir de la représentation de type forme d'un multipolygone.

La syntaxe générale de ces fonctions est identique. Le premier argument est la représentation de la forme entrée en tant que type de données BLOB. Le second argument est l'entier identifiant la référence spatiale à affecter à la géométrie. La fonction GeometryFromShape doit respecter la syntaxe suivante :

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

Ces fonctions SHAPE impliquent de définir des structures C pour le mappage de la représentation binaire ; elles sont donc destinées à être utilisées dans un programme de langage de troisième génération (3GL). La fonction AsShape convertit la valeur d'une géométrie en une représentation de forme ESRI.

Un type de forme de valeur 0 indique une forme vide (NULL) sans données géométriques associées à la forme.
Valeur Type de forme
0 Forme nulle (null shape)
1 Point
3* Polyligne
5 Polygone
8 Multipoint
11 PointZ
13 PolyligneZ
15 PolygoneZ
18 MultipointZ
21 PointM
23 PolyligneM
25 PolygoneM
28 MultipointM

Remarque :
*Les types de formes qui ne sont pas spécifiés ci-dessus (2, 4, 6, etc.) sont réservés à de futures utilisations.

Types de formes dans un espace XY

Point

Un point consiste en une paire de coordonnées à double précision dans l'ordre X, Y.

Tableau 67.
Contenu du train d'octets d'un point

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

1

Integer

1

Little

Octet 4

X

X

Double

1

Little

Octet 12

Y

Y

Double

1

Little

Multipoint

Un multipoint consiste en une collection de points. La boîte englobante est stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

Tableau 68.
Contenu du train d'octets d'un multipoint

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

8

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumPoints

NumPoints

Integer

1

Little

Octet 40

Points

Points

Point

NumPoints

Little

Polyligne

Une polyligne est un ensemble ordonné de sommets, composé d'une ou de plusieurs parties. Une partie est une suite connectée de plusieurs points (deux ou plus). Les points peuvent être ou non connectés les uns aux autres. Des parties peuvent ou non se croiser.

Cette spécification n'interdit pas les points consécutifs dotés de coordonnées identiques, les lecteurs des fichiers SHAPE doivent donc traiter ces cas. Cependant, les parties dégénérées de longueur zéro susceptibles d'être ainsi produites ne sont pas autorisées.

Les zones d'une polyligne sont les suivantes :

Box
Boîte englobante associée à la polyligne et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre de parties de la polyligne.

NumPoints
Nombre total de points pour toutes les parties.

Parts
Tableau de longueur NumParts. Chaque polyligne stocke l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque partie de la polyligne sont stockés d'extrémité en extrémité. Les points de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des points.

Tableau 69.
Contenu du train d'octets d'une polyligne

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

3

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Remarque :
X = 44 + 4 * NumParts.

Polygone

Un polygone est formé d'un ou plusieurs anneaux. Un anneau est une séquence connectée de quatre points ou plus, qui forment une boucle fermée qui ne génère pas d'intersection avec elle-même. Un polygone peut contenir plusieurs anneaux externes. L'ordre des sommets ou orientation d'un anneau indique de quel côté de l'anneau se situe l'intérieur du polygone. La zone de voisinage située à droite d'un observateur marchant le long de l'anneau dans l'ordre des sommets représente l'intérieur du polygone. Les sommets des anneaux qui définissent des trous dans les polygones vont dans une direction contraire au sens des aiguilles d'une montre. Les sommets d'un polygone à anneaux doivent être considérées dans le sens des aiguilles d'une montre. Les anneaux d'un polygone sont appelées parties.

Cette spécification n'interdit pas les points consécutifs dotés de coordonnées identiques, les lecteurs des fichiers SHAPE doivent donc traiter ces cas. Cependant, les parties dégénérées de longueur zéro ou de surface zéro susceptibles d'être ainsi produites ne sont pas autorisées.

Les zones d'un polygone sont les suivantes :

Box
Boîte englobante associée au polygone et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre d'anneaux compris dans le polygone.

NumPoints
Nombre total de points pour tous les anneaux.

Parts
Tableau de longueur NumParts. Stocke, pour chaque anneau, l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque anneau du polygone sont stockés d'extrémité en extrémité. Les points du deuxième anneau suivent ceux du premier, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des points.

Remarques importantes sur les formes de type polygone :

Exemple d'instance de polygone

Figure 40. Polygone doté d'un trou et de quatre sommets

top

Figure 41. Contenu du train d'octet du polygone. NumParts est égal à 2 et NumPoints à 10. Vous remarquerez que l'ordre des points du polygone (trou) du "beignet" est inversé.

top

Tableau 70.
Contenu du train d'octets d'un polygone

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

5

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Remarque :
X = 44 + 4 * NumParts.

Types de formes mesurées dans l'espace XY

PointM

Un PointM consiste en une paire de coordonnées à double précision dans l'ordre X, Y, plus une mesure M.

Tableau 71.
Contenu du train d'octets d'un PointM

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

21

Integer

1

Little

Octet 4

X

X

Double

1

Little

Octet 12

Y

Y

Double

1

Little

Octet 20

M

M

Double

1

Little

MultipointM

Les zones d'un multipointM sont les suivantes :

Box
Boîte englobante associée au multipointM et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumPoints
Nombre de points.

Points
Tableau de points de longueur NumPoints.

NumMs
Nombre de mesures qui suivent. NumMs ne peut avoir que deux valeurs 0 si aucune mesure ne suit cette zone, ou il peut être égal à NumPoints, si des mesures sont spécifiées.

M Range
Mesures minimale et maximale associées au multipointM et stockées dans l'ordre suivant : Mmin, Mmax.

M Array
Tableau des mesures de longueur NumPoints.

Tableau 72.
Contenu du train d'octets d'un multipointM

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

28

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumPoints

NumPoints

Integer

1

Little

Octet 40

Points

Points

Point

NumPoints

Little

Octet X

NumMs

NumMs

Integer

1

Little

Octet X+4*

Mmin

Mmin

Double

1

Little

Octet X+12*

Mmax

Mmax

Double

1

Little

Octet X+20*

Marray

Marray

Double

NumPoints

Little

Remarques :

  1. X = 40 + (16 * NumPoints)

  2. * facultatif

PolyligneM

Une polyligneM est formée d'une ou plusieurs parties. Une partie est une suite connectée de plusieurs points (deux ou plus). Les parties peuvent être ou non connectées les unes aux autres. Les parties peuvent ou non se couper.

Les zones d'une polyligneM sont les suivantes :

Box
Boîte englobante associée à la polyligneM et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre de parties de la polyligneM.

NumPoints
Nombre total de points pour toutes les parties.

Parts
Tableau de longueur NumParts. Pour chaque anneau, stocke l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque partie de la polyligneM sont stockés d'extrémité en extrémité. Les points de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des points.

NumMs
Nombre de mesures qui suivent. NumMs ne peut avoir que deux valeurs 0 si aucune mesure ne suit cette zone, ou il peut être égal à NumPoints, si des mesures sont spécifiées.

M Range
Mesures minimale et maximale associées à la polyligneM et stockées dans l'ordre suivant : Mmin, Mmax.

M Array
Tableau de longueur NumPoints. Les mesures de chaque partie de la polyligneM sont stockées d'extrémité en extrémité. Les mesures de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des mesures.

Tableau 73.
Contenu du train d'octets d'une polyligneM

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

13

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Octet Y

NumMs

NumMs

Integer

1

Little

Octet Y+4*

Mmin

Mmin

Double

1

Little

Octet Y+12*

Mmax

Mmax

Double

1

Little

Octet Y+20*

Marray

Marray

Double

NumPoints

Little

Remarques :

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

  2. * facultatif

PolygoneM

Un polygoneM est formé d'un certain nombre d'anneaux. Un anneau est une boucle fermée qui ne forme pas d'intersection avec elle-même. Vous remarquerez que les intersections sont calculées dans l'espace XY, et non dans l'espace XYM. Un polygoneM peut contenir plusieurs anneaux externes. Les anneaux d'un polygoneM sont appelées parties.

Les zones d'un polygoneM sont les suivantes :

Box
Boîte englobante associée au polygoneM et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre d'anneaux compris dans le polygoneM.

NumPoints
Nombre total de points pour tous les anneaux.

Parts
Tableau de longueur NumParts. Stocke, pour chaque anneau, l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque anneau du polygoneM sont stockés d'extrémité en extrémité. Les points du deuxième anneau suivent ceux du premier, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des points.

NumMs
Nombre de mesures qui suivent. NumMs ne peut avoir que deux valeurs 0 si aucune mesure ne suit cette zone, ou il peut être égal à NumPoints, si des mesures sont spécifiées.

M Range
Mesures minimale et maximale associées au polygoneM et stockées dans l'ordre suivant : Mmin, Mmax.

M Array
Tableau de longueur NumPoints. Les mesures de chaque anneau du polygoneM sont stockés d'extrémité en extrémité. Les mesures du deuxième anneau suivent celles du premier, etc. Le tableau des parties contient l'indice de tableau de la mesure de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des mesures.

Remarques importantes sur les formes polygoneM :

Tableau 74.
Contenu du train d'octets d'un polygoneM

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

15

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Octet Y

NumMs

NumMs

Integer

1

Little

Octet Y+4*

Mmin

Mmin

Double

1

Little

Octet Y+12*

Mmax

Mmax

Double

1

Little

Octet Y+20*

Marray

Marray

Double

NumPoints

Little

Remarques :

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

  2. * facultatif

Types de formes dans l'espace XYZ

PointZ

Un pointZ consiste en un triplet de coordonnées à double précision dans l'ordre X, Y, Z, plus une mesure M.

Tableau 75.
Contenu du train d'octets d'un pointZ

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

11

Integer

1

Little

Octet 4

X

X

Double

1

Little

Octet 12

Y

Y

Double

1

Little

Octet 20

Z

Z

Double

1

Little

Octet 28

Mesure

M

Double

1

Little

MultipointZ

Un multipointZ représente un ensemble de pointZ, comme suit :


Tableau 76.
Contenu du train d'octets d'un multipointZ

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

18

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumPoints

NumPoints

Integer

1

Little

Octet 40

Points

Points

Point

NumPoints

Little

Octet X

Zmin

Zmin

Double

1

Little

Octet 36

Zmax

Zmax

Double

1

Little

Octet X+16

Zarray

Zarray

Double

NumPoints

Little

Octet Y

NumMs

NumMs

Integer

1

Little

Octet Y+4*

Mmin

Mmin

Double

1

Little

Octet Y+12*

Mmax

Mmax

Double

1

Little

Octet Y+20*

Marray

Marray

Double

NumPoints

Little

Remarques :

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

  2. * facultatif

PolyligneZ

Une polyligneZ est formée d'une ou plusieurs parties. Une partie est une suite connectée de plusieurs points (deux ou plus). Les parties peuvent être ou non connectées les unes aux autres. Les parties peuvent ou non se couper.

Les zones d'une polyligneZ sont les suivantes :

Box
Boîte englobante associée à la polyligneZ et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre de parties de la polyligneZ.

NumPoints
Nombre total de points pour toutes les parties.

Parts
Tableau de longueur NumParts. Pour chaque anneau, stocke l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque partie de la polyligneZ sont stockés d'extrémité en extrémité. Les points de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des points.

Z Range
Valeurs Z minimales et maximales associées à la polyligneZ, stockées dans l'ordre suivant : Zmin, Zmax.

Z Array
Tableau de longueur NumPoints. Les valeurs Z de chaque partie de la polyligneZ sont stockés d'extrémité en extrémité. Les valeurs Z de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des coordonnées Z.

NumMs
Nombre de mesures qui suivent. NumMs ne peut avoir que deux valeurs 0 si aucune mesure ne suit cette zone, ou il peut être égal à NumPoints, si des mesures sont spécifiées.

M Range
Mesures minimale et maximale associées à la polyligneZ et stockées dans l'ordre suivant : Mmin, Mmax.

M Array
Tableau de longueur NumPoints. Les mesures de chaque partie de la polyligneZ sont stockées d'extrémité en extrémité. Les mesures de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau de la mesure de départ de chaque partie. Il n'existe pas de délimiteur entre parties dans le tableau des mesures.

Tableau 77.
Contenu du train d'octets d'une polyligneZ

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

13

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Octet Y

Zmin

Zmin

Double

1

Little

Octet Y+8

Zmax

Zmax

Double

1

Little

Octet Y+16

Zarray

Zarray

Double

NumPoints

Little

Octet Z

NumMs

NumMs

Integer

1

Little

Octet Z+4*

Mmin

Mmin

Double

1

Little

Octet Z+12*

Mmax

Mmax

Double

1

Little

Octet Z+20*

Marray

Marray

Double

NumPoints

Little

Remarques :

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

  2. * facultatif

PolygoneZ

Un polygoneZ est formé d'un certain nombre d'anneaux. Un anneau est une boucle fermée qui ne forme pas d'intersection avec elle-même. Un polygoneZ peut contenir plusieurs anneaux externes. Les anneaux d'un polygoneZ sont appelées parties.

Les zones d'un polygoneZ sont les suivantes :

Box
Boîte englobante associée au polygoneZ et stockée dans l'ordre suivant : Ymin, Ymin, Xmax, Ymax.

NumParts
Nombre d'anneaux compris dans le polygoneZ.

NumPoints
Nombre total de points pour tous les anneaux.

Parts
Tableau de longueur NumParts. Stocke, pour chaque anneau, l'indice de son premier point dans le tableau des points. Les indices de tableau sont indiqués par rapport à 0.

Points
Tableau de longueur NumPoints. Les points de chaque anneau du polygoneZ sont stockés d'extrémité en extrémité. Les points du deuxième anneau suivent ceux du premier, etc. Le tableau des parties contient l'indice de tableau du point de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des points.

Z Range
Valeurs Z minimales et maximales associées à l'arc et stockées dans l'ordre suivant : Zmin, Zmax.

Z Array
Tableau de longueur NumPoints. Les valeurs Z de chaque anneau du polygoneZ sont stockés d'extrémité en extrémité. Les valeurs Z de la deuxième partie suivent ceux de la première, etc. Le tableau des parties contient l'indice de tableau de la valeur Z de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des valeurs Z.

NumMs
Nombre de mesures qui suivent. NumMs ne peut avoir que deux valeurs 0 si aucune mesure ne suit cette zone, ou il peut être égal à NumPoints, si des mesures sont spécifiées.

M Range
Mesures minimale et maximale associées au polygoneZ et stockées dans l'ordre suivant : Mmin, Mmax.

M Array
Tableau de longueur NumPoints. Les mesures de chaque anneau du polygoneZ sont stockés d'extrémité en extrémité. Les mesures du deuxième anneau suivent celles du premier, etc. Le tableau des parties contient l'indice de tableau de la mesure de départ de chaque anneau. Il n'existe pas de délimiteur entre anneaux dans le tableau des mesures.

Remarques importantes sur les formes de type polygoneZ :

Tableau 78.
Contenu du train d'octets d'un polygoneZ

Position

Zone

Valeur

Type

Nombre

Ordre

Octet 0

Type de forme

15

Integer

1

Little

Octet 4

Box

Box

Double

4

Little

Octet 36

NumParts

NumParts

Integer

1

Little

Octet 40

NumPoints

NumPoints

Integer

1

Little

Octet 44

Parts

Parts

Integer

NumParts

Little

Octet X

Points

Points

Point

NumPoints

Little

Octet Y

Zmin

Zmin

Double

1

Little

Octet Y+8

Zmax

Zmax

Double

1

Little

Octet Y+16

Zarray

Zarray

Double

NumPoints

Little

Octet Z

NumMs

NumMs

Integer

1

Little

Octet Z+4*

Mmin

Mmin

Double

1

Little

Octet Z+12*

Mmax

Mmax

Double

1

Little

Octet Z+20*

Marray

Marray

Double

NumPoints

Little


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]