ST_Geometry généré à partir de texte connu et de données binaires connues

Conversion de données vers le type ST_Geometry dans Oracle

Vous trouverez ci-dessous une description de différents formats de données spatiales et de leurs possibilités de conversion avec le type spatial pour Oracle.

Représentation textuelle connue OGC

La représentation textuelle connue (WKT) est une chaîne de texte ASCII mise en forme qui permet l'échange de géométries sous forme de texte ASCII. Ces fonctions sont utilisables dans un langage de troisième ou de quatrième génération (L3G ou L4G) car elles ne nécessitent aucune définition de structure de programme spécifique.

Le type spatial a plusieurs fonctions qui génèrent des géométries à partir de textes descriptifs. Ces fonctions sont les suivantes :

  • ST_GeomFromText : crée un élément ST_Geometry à partir de la représentation WKT de tout type de géométrie.
  • ST_PointFromText : crée un élément ST_Point à partir de la représentation WKT d'un point.
  • ST_LineFromText : crée un élément ST_LineString à partir de la représentation WKT d'une chaîne de lignes.
  • ST_PolyFromText : crée un élément ST_Polygon à partir de la représentation WKT d'un polygone.
  • ST_MPointFromText : crée un élément ST_MultiPoint à partir de la représentation WKT d'un multi-points.
  • ST_MLineFromText : crée un élément ST_MultiLineString à partir de la représentation WKT d'un multilinestring.
  • ST_MPolyFromText : crée un élément ST_MultiPolygon à partir de la représentation WKT d'un multi-polygones.

La fonction ST_AsText convertit une géométrie existante en représentation WKT.

Utilisation de la représentation textuelle connue dans un programme C

La représentation WKT de géométrie peut être incorporée à des programmes C. La structure à employer pour cette implémentation est définie ci-dessous. La notation {}* indique zéro répétition ou plus des jetons entre les accolades. Les accolades n'apparaissent pas dans la liste de jetons en sortie. Notez que, lorsque des mesures sont présentes, elles doivent être fournies en dernier ; PointZM est pris en charge, pas PointMZ.

<Geometry Tagged Text> :=
| <Point Tagged Text> 
| <LineString Tagged Text>
| <Polygon Tagged Text>
| <MultiPoint Tagged Text>
| <MultiLineString Tagged Text>
| <MultiPolygon Tagged Text> 

<Point Tagged Text> := 
POINT <Point Text> 

<LineString Tagged Text> := 
LINESTRING <LineString Text> 

<Polygon Tagged Text> := 
POLYGON <Polygon Text> 

<MultiPoint Tagged Text> :=  
MULTIPOINT <Multipoint Text> 

<MultiLineString Tagged Text> := 
MULTILINESTRING <MultiLineString Text> 

<MultiPolygon Tagged Text> := 
MULTIPOLYGON <MultiPolygon Text> 

<Point Text> := EMPTY 
|    <Point> 
| Z  <PointZ> 
| M  <PointM>
| ZM <PointZM>

<Point> :=  <x>  <y> 
<x> := double precision literal
<y> := double precision literal

<PointZ> :=  <x>  <y>  <z> 	
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal

<PointM> :=  <x>  <y>  <m> 
<x> := double precision literal
<y> := double precision literal
<m> := double precision literal

<PointZM> :=  <x>  <y>  <z>  <m> 
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal
<m> := double precision literal

<LineString Text> := EMPTY
|    ( <Point Text >   {,  <Point Text> }*  )
| Z  ( <PointZ Text >  {,  <PointZ Text> }*  )
| M  ( <PointM Text >  {,  <PointM Text> }*  )
| ZM ( <PointZM Text > {,  <PointZM Text> }*  )

<Polygon Text> := EMPTY 
| ( <LineString Text > {,< LineString Text > }*)

<Multipoint Text> := EMPTY 
| ( <Point Text >   {,  <Point Text > }*  )

<MultiLineString Text> := EMPTY 
| ( <LineString Text > {,< LineString Text>}*  )

<MultiPolygon Text> := EMPTY 
| ( < Polygon Text > {,  < Polygon Text > }*  )

Utilisation de la représentation textuelle connue dans un éditeur SQL

Puisque la représentation textuelle connue est au format texte, elle peut être saisie dans un script SQL ou directement dans un éditeur SQL. Une fonction permet d'assurer les conversions entre texte et géométrie. Les fonctions qui assurent la conversion de texte en géométrie ont la syntaxe suivante :

function ('<text description>',<SRID>)

Par exemple :

ST_PointFromText('point zm(10.01 20.04 3.2 9.5)', 1)

L'identifiant de référence spatiale (SRID) — clé primaire de la table ST_SPATIAL_REFERENCES — identifie les éventuels systèmes de référence spatiale dans une instance Oracle. Un SRID est attribué à une colonne spatiale lors de sa création. Pour qu'une géométrie puisse être insérée dans une colonne spatiale, son SRID doit correspondre au SRID de la colonne spatiale.

Le texte descriptif est composé de trois éléments de base figurant entre guillemets simples :

'<geometry type> [coordinate type] [coordinate list]'

Le type de géométrie est défini comme l'un des éléments suivants : point, linestring, polygone, multi-points, multilinestring ou multi-polygones.

Le type de coordonnées spécifie si la géométrie a des coordonnées et/ou des mesures z ou non. Ne renseignez pas cet argument si la géométrie n'en a aucune ; sinon, définissez le type de coordonnée comme Z pour les géométries qui disposent de coordonnées z, M pour les géométries disposant de mesures, et ZM pour les géométries qui ont les deux.

La liste de coordonnées définit les sommets de double précision de la géométrie. Les listes de coordonnées figurent entre parenthèses et sont délimitées par des virgules. Les géométries à composants multiples doivent faire figurer chaque composant séparément entre parenthèses. Si la géométrie est vide, le mot-clé EMPTY figure à la place des coordonnées.

Les exemples suivants fournissent une liste exhaustive de toutes les possibilités de permutation du texte descriptif de la représentation textuelle :

Type de géométrie

Texte descriptif

Commentaire

ST_Point

'point empty'

Point vide

ST_Point

'point z empty'

Point vide avec coordonnée z

ST_Point

'point m empty'

Point vide avec mesure

ST_Point

'point zm empty'

Point vide avec coordonnée z et mesure

ST_Point

'point ( 10.05 10.28 )'

Point

ST_Point

'point z( 10.05 10.28 2.51 )'

Point avec coordonnée z

ST_Point

'point m( 10.05 10.28 4.72 )'

Point avec mesure

ST_Point

'point zm(10.05 10.28 2.51 4.72 )'

Point avec coordonnée z et mesure

ST_LineString

'linestring empty'

Linestring vide

ST_LineString

'linestring z empty'

Linestring vide avec coordonnées z

ST_LineString

'linestring m empty'

Linestring vide avec mesures

ST_LineString

'linestring zm empty'

Linestring vide avec coordonnées z et mesures

ST_LineString

'linestring (10.05 10.28 , 20.95 20.89 )'

Linestring

ST_LineString

'linestring z(10.05 10.28 3.09, 20.95 31.98 4.72, 21.98 29.80 3.51 )'

Linestring avec coordonnées z

ST_LineString

'linestring m(10.05 10.28 5.84, 20.95 31.98 9.01, 21.98 29.80 12.84 )'

Linestring avec mesures

ST_LineString

'linestring zm(10.05 10.28 3.09 5.84, 20.95 31.98 4.72 9.01, 21.98 29.80 3.51 12.84)'

Linestring avec coordonnées z et mesures

ST_Polygon

'polygon empty'

Polygone vide

ST_Polygon

'polygon z empty'

Polygone vide avec coordonnées z

ST_Polygon

'polygon m empty'

Polygone vide avec mesures

ST_Polygon

'polygon zm empty'

Polygone vide avec coordonnées z et mesures

ST_Polygon

'polygon ((10 10, 10 20, 20 20, 20 15, 10 10))'

Polygone

ST_Polygon

'polygon z((10 10 3, 10 20 3, 20 20 3, 20 15 4, 10 10 3))'

Polygone avec coordonnées z

ST_Polygon

'polygon m((10 10 8, 10 20 9, 20 20 9, 20 15 9, 10 10 8 ))'

Polygone avec mesures

ST_Polygon

'polygon zm((10 10 3 8, 10 20 3 9, 20 20 3 9, 20 15 4 9, 10 10 3 8 ))'

Polygone avec coordonnées z et mesures

ST_MultiPoint

'multipoint empty'

Multi-points vide

ST_MultiPoint

'multipoint z empty'

Multi-points vide avec coordonnées z

ST_MultiPoint

'multipoint m empty'

Multi-points vide avec mesures

ST_MultiPoint

'multipoint zm empty'

Multi-points vide avec coordonnées z et mesures

ST_MultiPoint

'multipoint (10 10, 20 20)'

Multi-points avec deux points

ST_MultiPoint

'multipoint z(10 10 2, 20 20 3)'

Multi-points avec coordonnées z

ST_MultiPoint

'multipoint m(10 10 4, 20 20 5)'

Multi-points avec mesures

ST_MultiPoint

'multipoint zm(10 10 2 4, 20 20 3 5)'

Multi-points avec coordonnées z et mesures

ST_MultiLineString

'multilinestring empty'

Multilinestring vide

ST_MultiLineString

'multilinestring z empty'

Multilinestring vide avec coordonnées z

ST_MultiLineString

'multilinestring m empty'

Multilinestring vide avec mesures

ST_MultiLineString

'multilinestring zm empty'

Multilinestring vide avec coordonnées z et mesures

ST_MultiLineString

'multilinestring ((10.05 10.28 , 20.95 20.89 ),( 20.95 20.89, 31.92 21.45))'

Multilinestring

ST_MultiLineString

'multilinestring z((10.05 10.28 3.4, 20.95 20.89 4.5),( 20.95 20.89 4.5, 31.92 21.45 3.6))'

Multilinestring avec coordonnées z

ST_MultiLineString

'multilinestring m((10.05 10.28 8.4, 20.95 20.89 9.5), (20.95 20.89 9.5, 31.92 21.45 8.6))'

Multilinestring avec mesures

ST_MultiLineString

'multilinestring zm((10.05 10.28 3.4 8.4, 20.95 20.89 4.5 9.5), (20.95 20.89 4.5 9.5, 31.92 21.45 3.6 8.6))'

Multilinestring avec coordonnées z et mesures

ST_MultiPolygon

'multipolygon empty'

Multi-polygones vide

ST_MultiPolygon

'multipolygon z empty'

Multi-polygones vide avec coordonnées z

ST_MultiPolygon

'multipolygon m empty'

Multi-polygones vide avec mesures

ST_MultiPolygon

'multipolygon zm empty'

Vide

ST_MultiPolygon

'multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10)), ((50 40, 50 50, 60 50, 60 40, 50 40)))'

Multi-polygones

ST_MultiPolygon

'multipolygon z(((10 10 7, 10 20 8, 20 20 7, 20 15 5, 10 10 7)), ((50 40 6, 50 50 6, 60 50 5, 60 40 6, 50 40 6)))'

Multi-polygones avec coordonnées z

ST_MultiPolygon

'multipolygon m(((10 10 2, 10 20 3, 20 20 4, 20 15 5, 10 10 2)), ((50 40 7, 50 50 3, 60 50 4, 60 40 5, 50 40 7)))'

Multi-polygones avec mesures

ST_MultiPolygon

'multipolygon zm(((10 10 7 2, 10 20 8 3, 20 20 7 4, 20 15 5 5, 10 10 7 2)), ((50 40 6 7, 50 50 6 3, 60 50 5 4, 60 40 6 5, 50 40 6 7)))'

Multi-polygones avec coordonnées z et mesures

Liste de toutes les permutations possibles de la partie texte descriptif de la représentation textuelle

représentation binaire connue OGC

La représentation binaire connue de la géométrie fait partie de la spécification relative aux entités simples de l'Open Geospatial Consortium (OGC), qui applique un modèle de stockage simple pour les entités ponctuelles, linéaires et surfaciques à l'aide des coordonnées x,y. Cette représentation constitue une représentation portable d'une valeur de géométrie sous la forme d'un flux contigu d'octets. Elle permet l'échange de valeurs de géométrie sous forme binaire entre un client ODBC et une base de données. Elle n'est pas compressée.

Le type ST_Geometry pour Oracle a plusieurs fonctions qui génèrent des géométries à partir de représentations binaires connues (WKB). Ces fonctions sont les suivantes :

  • ST_GeomFromWKB : crée un élément ST_Geometry à partir de la représentation WKB de tout type de géométrie.
  • ST_PointFromWKB : crée un élément ST_Point à partir de la représentation WKB d'un point.
  • ST_LineFromWKB : crée un élément ST_LineString à partir de la représentation WKB d'une chaîne de lignes.
  • ST_PolyFromWKB : crée un élément ST_Polygon à partir de la représentation WKB d'un polygone.
  • ST_MPointFromWKB : crée un élément ST_MultiPoint à partir de la représentation WKB d'un multi-points.
  • ST_MLineFromWKB : crée un élément ST_MultiLineString à partir de la représentation WKB d'un multilinestring.
  • ST_MPolyFromWKB : crée un élément ST_MultiPolygon à partir de la représentation WKB d'un multi-polygones.
RemarqueRemarque :

Ces fonctions de géométrie nécessitent la définition de structures C pour le mappage de la représentation binaire. Elles doivent être employées dans un programme L3G et ne sont pas adaptées à un environnement L4G.

La fonction ST_AsBinary convertit une valeur de géométrie existante en représentation binaire connue.

Pour plus d'informations sur la représentation binaire connue (WKB), consultez la rubrique Représentation binaire connue OGC pour la géométrie.

5/10/2014