Catégories :

Fonctions géospatiales

ST_MAKEPOLYGONORIENTED

Construit un objet GEOGRAPHY qui représente un polygone sans trous. La fonction utilise la LineString spécifiée comme boucle externe.

Cette fonction ne tente pas de corriger l’orientation de la boucle, ce qui permet la création de polygones qui s’étendent sur plus de la moitié du globe. En revanche, ST_MAKEPOLYGON inverse l’orientation de ces grandes formes.

Voir aussi :

TO_GEOGRAPHY, ST_MAKEPOLYGON

Syntaxe

ST_MAKEPOLYGONORIENTED( <geography_expression> )
Copy

Arguments

geography_expression

Un objet GEOGRAPHY qui représente un LineString dans lequel le dernier point est le même que le premier (c’est-à-dire une boucle).

Renvoie

La fonction renvoie une valeur de type GEOGRAPHY.

Notes sur l’utilisation

  • Les lignes du polygone doivent former une boucle. En d’autres termes, le dernier point de la séquence de points définissant la LineString doit être le même point que le premier point de la séquence.

  • Au fur et à mesure que vous suivez la boucle, l’intérieur du polygone doit être à gauche et l’extérieur du polygone doit être à droite.

Exemples

Les exemples suivants montrent comment utiliser la fonction ST_MAKEPOLYGONORIENTED. La séquence de points ci-dessous définit une zone rectangulaire géodésique de 1 degré de large et 2 degrés de haut. Le coin inférieur gauche du polygone commence à l’équateur (latitude) et à Greenwich (longitude). Le dernier point de la séquence est le même que le premier point, qui complète la boucle.

L’exemple transmet l’objet GEOGRAPHY pour le polygone à la fonction ST_AREA pour renvoyer la surface du polygone.

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+------------------+
|  AREA_OF_POLYGON |
|------------------|
| 24724306355.5504 |
+------------------+
Copy

L’exemple suivant a la même forme, mais a l’orientation opposée. Comme indiqué par la différence de surface du polygone, le polygone représente le globe entier à l’exception de cette forme précédente.

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 0.0 2.0, 1.0 2.0, 1.0 0.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+-----------------+
| AREA_OF_POLYGON |
|-----------------|
| 510041348811633 |
+-----------------+
Copy