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 |
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.
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.