Catégories :

Fonctions géospatiales

ST_PERIMETER

Renvoie la longueur du périmètre du ou des polygones dans un objet GEOGRAPHY ou GEOMETRY.

Syntaxe

ST_PERIMETER( <geography_or_geometry_expression> )
Copy

Arguments

geography_or_geometry_expression

L’argument doit être de type GEOGRAPHY ou GEOMETRY.

Renvoie

Renvoie une valeur REAL, qui représente la longueur :

  • Pour les objets GEOGRAPHY, la longueur est en mètres.

  • Pour les objets GEOMETRY, la longueur est calculée avec la même unité que celle utilisée pour définir les coordonnées.

Notes sur l’utilisation

  • Si geography_or_geometry_expression n’est pas un polygone, MultiPolygon ou GeometryCollection contenant des polygones, ST_PERIMETER renvoie 0.

  • Si geography_or_geometry_expression est un GeometryCollection, ST_PERIMETER renvoie la somme des périmètres des polygones de la collection.

  • Utilisez cette fonction (plutôt que ST_LENGTH) pour obtenir le périmètre d’un polygone.

Exemples

Exemples GEOGRAPHY

Cela calcule la longueur du périmètre d’un polygone qui est un degré d’arc sur chaque bord et a un bord sur l’équateur :

SELECT ST_PERIMETER(TO_GEOGRAPHY('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));
+------------------------------------------------------------------+
| ST_PERIMETER(TO_GEOGRAPHY('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) |
|------------------------------------------------------------------|
|                                                 444763.468727621 |
+------------------------------------------------------------------+
Copy

Exemples GEOMETRY

Les exemples suivants montrent comment utiliser la fonction ST_PERIMETER.

SELECT ST_PERIMETER(g), ST_ASWKT(g)
FROM (SELECT TO_GEOMETRY(column1) AS g
  FROM VALUES ('POINT(1 1)'),
              ('LINESTRING(0 0, 1 1)'),
              ('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
Copy
+-----------------+--------------------------------+
| ST_PERIMETER(G) | ST_ASWKT(G)                    |
|-----------------+--------------------------------|
|               0 | POINT(1 1)                     |
|               0 | LINESTRING(0 0,1 1)            |
|               4 | POLYGON((0 0,0 1,1 1,1 0,0 0)) |
+-----------------+--------------------------------+
Copy