Les fonctions d'opération calculent les relations spatiales et les transformations sur les valeurs GEOMETRY. Toutes les fonctions qui renvoient une valeur GEOMETRY produisent un résultat binaire ; encapsulez le résultat dans ST_AsText() pour obtenir du texte Well-Known Text (WKT) lisible.
| Fonction | Description |
|---|---|
ST_Intersection(g1, g2) |
Renvoie l'intersection géométrique de g1 et g2 |
ST_Envelope(g) |
Renvoie le rectangle englobant minimal d'une géométrie |
ST_Union(g1, g2) |
Renvoie l'union des ensembles de points de deux géométries |
geometry_union(array[g1, g2, ...]) |
Renvoie l'union des ensembles de points d'un tableau de géométries |
ST_Boundary(g) |
Renvoie la limite d'une géométrie sous forme d'une nouvelle géométrie |
ST_EnvelopeAsPts(g) |
Renvoie les coins inférieur gauche et supérieur droit du rectangle englobant |
ST_Difference(g1, g2) |
Renvoie la partie de g1 qui n'intersecte pas g2 |
ST_ExteriorRing(g1) |
Renvoie l'anneau extérieur d'un polygone sous forme de LINESTRING |
ST_SymDifference(g1, g2) |
Renvoie les parties de g1 et g2 qui ne s'intersectent pas mutuellement |
ST_Intersection
ST_Intersection(g1, g2)
Renvoie une géométrie représentant l'intersection de g1 et g2.
Type de renvoi : GEOMETRY
Exemple :
L'exécution directe de SELECT ST_Intersection(...) renvoie un résultat binaire. Utilisez ST_AsText() pour le convertir en texte lisible :
SELECT ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)')));
Résultat :
+-----------------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Intersection(ST_GeometryFromText('MULTIPOINT (50 100, 50 200)'), ST_GeometryFromText('Point (50 100)'))) |
+-----------------------------------------------------------------------------------------------------------------------+
| POINT (50 100) |
Fonctions associées : ST_Union, ST_Difference, ST_SymDifference, ST_AsText
ST_Envelope
ST_Envelope(g)
Renvoie une représentation binaire du rectangle englobant minimal (enveloppe) qui contient la géométrie d'entrée.
Types d'entrée pris en charge : LINE, POLYGON, MULTILINE, MULTIPOLYGON
L'entrée de type POINT n'est pas prise en charge.
Type de renvoi : GEOMETRY
Exemple 1 — Enveloppe d'un LINESTRING :
SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)')));
Résultat :
+---------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('LINESTRING (1 1, 2 2, 1 3)'))) |
+---------------------------------------------------------------------------------+
| POLYGON ((1 1, 2 1, 2 3, 1 3, 1 1)) |
Exemple 2 — Enveloppe d'un MULTIPOINT :
SELECT ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)')));
Résultat :
+-------------------------------------------------------------------------------+
| ST_AsText(ST_Envelope(ST_GeometryFromText('MULTIPOINT (1 2, 2 4, 3 6, 4 8)'))) |
+-------------------------------------------------------------------------------+
| POLYGON ((1 2, 4 2, 4 8, 1 8, 1 2)) |
Fonctions associées : ST_EnvelopeAsPts, ST_Boundary
ST_Union
ST_Union(g1, g2)
Renvoie une géométrie représentant l'union des ensembles de points de g1 et g2.
Type de renvoi : INT
Pour calculer l'union d'un tableau de géométries, utilisez geometry_union .
Exemple :
SELECT ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))')));
Résultat :
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| ST_ASText(ST_Union(ST_GeometryFromText('MULTIPOLYGON (((1 1, 3 1, 3 3, 1 3, 1 1)))'), ST_GeometryFromText('MULTIPOLYGON (((2 2, 4 2, 4 4, 2 4, 2 2)))'))) |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| POLYGON ((1 1, 3 1, 3 2, 4 2, 4 4, 2 4, 2 3, 1 3, 1 1)) |
Fonctions associées : geometry_union, ST_Intersection, ST_Difference, ST_SymDifference
geometry_union
geometry_union(array[g1, g2, ...])
Renvoie une géométrie représentant l'union des ensembles de points d'un tableau de géométries.
Type de renvoi : GEOMETRY
Pour calculer l'union d'exactement deux géométries, utilisez ST_Union .
Exemple :
SELECT ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)]));
Résultat :
+------------------------------------------------------------------------------------------------+
| ST_AsText(geometry_union(ARRAY[ST_Point(61.56, -158.54), ST_Point(61.56, -158.55)])) |
+------------------------------------------------------------------------------------------------+
| MULTIPOINT ((61.56 -158.55), (61.56 -158.54)) |
Fonctions associées : ST_Union
ST_Boundary
ST_Boundary(g)
Renvoie la limite de la géométrie d'entrée sous forme d'une nouvelle géométrie.
Type de renvoi : GEOMETRY
Exemple :
SELECT ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)')));
Résultat :
+----------------------------------------------------------------------------+
| ST_AsText(ST_Boundary(ST_GeometryFromText('LINESTRING (8 4, 5 7)'))) |
+----------------------------------------------------------------------------+
| MULTIPOINT ((8 4), (5 7)) |
Fonctions associées : ST_Envelope, ST_ExteriorRing
ST_EnvelopeAsPts
ST_EnvelopeAsPts(g)
Renvoie un tableau de deux valeurs POINT représentant les coins inférieur gauche et supérieur droit du rectangle englobant. Renvoie null si la géométrie d'entrée est vide.
Type de renvoi : Array[Geometry]
Exemple — une géométrie vide renvoie null :
SELECT ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY'));
Résultat :
+-----------------------------------------------------------------+
| ST_EnvelopeAsPts(ST_GeometryFromText('LINESTRING EMPTY')) |
+-----------------------------------------------------------------+
| null |
Fonctions associées : ST_Envelope
ST_Difference
ST_Difference(g1, g2)
Renvoie la partie de g1 qui n'intersecte pas g2.
Type de renvoi : GEOMETRY
L'ordre des paramètres est important. ST_Difference(A, B) renvoie toujours une portion de A, et non de B. Il s'agit de la seule fonction d'opération où l'inversion des arguments produit un résultat différent.
Exemple :
SELECT ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)')));
Résultat :
+---------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_Difference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (150 150)'))) |
+---------------------------------------------------------------------------------------------------------------+
| POINT (50 100) |
Le résultat correspond au POINT (50 100) complet car les deux points sont disjoints ; rien n'est soustrait.
Fonctions associées : ST_Intersection, ST_SymDifference, ST_Union
ST_ExteriorRing
ST_ExteriorRing(g1)
Renvoie l'anneau extérieur d'un polygone sous forme de LINESTRING.
Type de renvoi : GEOMETRY
Exemple :
SELECT ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))')));
Résultat :
+------------------------------------------------------------------------------------+
| ST_AsText(ST_ExteriorRing(ST_GeometryFromText('POLYGON ((1 1, 1 4, 4 1))'))) |
+------------------------------------------------------------------------------------+
| LINESTRING (1 1, 4 1, 1 4, 1 1) |
Fonctions associées : ST_Boundary
ST_SymDifference
ST_SymDifference(g1, g2)
Renvoie les parties de g1 et g2 qui ne s'intersectent pas mutuellement.
Type de renvoi : GEOMETRY
Exemple :
SELECT ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)')));
Résultat :
+--------------------------------------------------------------------------------------------------------------+
| ST_AsText(ST_SymDifference(ST_GeometryFromText('POINT (50 100)'), ST_GeometryFromText('POINT (50 150)'))) |
+--------------------------------------------------------------------------------------------------------------+
| MULTIPOINT ((50 100), (50 150)) |
Les deux points étant disjoints, la différence symétrique correspond à la combinaison des deux points.
Fonctions associées : ST_Difference, ST_Union, ST_Intersection
Notes d'utilisation
Sortie binaire : Toutes les fonctions renvoyant un type GEOMETRY produisent une sortie binaire lorsqu'elles sont utilisées dans une instruction
SELECTsimple. Encapsulez toujours l'appel de fonction avecST_AsText()pour obtenir une sortie WKT lisible.ST_Difference est asymétrique :
ST_Difference(A, B)renvoie toujours un sous-ensemble de A. L'inversion des arguments produit un résultat différent.ST_Envelope ne prend pas en charge l'entrée de type POINT. Le passage d'une géométrie POINT à
ST_Envelopen'est pas pris en charge.MULTILINE : AnalyticDB for MySQL utilise
MULTILINEcomme type de ligne multi-segments. Le type équivalent selon la norme OGC estMULTILINESTRING.