Kategorien:

Geodatenfunktionen

ST_MAKEPOLYGONORIENTED

Konstruiert ein GEOGRAPHY-Objekt, das ein Polygon ohne Löcher darstellt. Die Funktion verwendet den angegebenen LineString als äußere Schleife.

Diese Funktion versucht nicht, die Ausrichtung der Schleife zu korrigieren, sondern ermöglicht das Erstellen von Polygonen, die sich über mehr als die Hälfte der Erdkugel erstrecken. Im Gegensatz dazu kehrt ST_MAKEPOLYGON die Ausrichtung dieser großen Formen um.

Siehe auch:

TO_GEOGRAPHY, ST_MAKEPOLYGON

Syntax

ST_MAKEPOLYGONORIENTED( <geography_expression> )
Copy

Argumente

geography_expression

Ein GEOGRAPHY-Objekt, das einen LineString darstellt, bei dem der letzte Punkt mit dem ersten identisch ist (d. h. eine Schleife).

Rückgabewerte

Gibt einen Wert vom Typ GEOGRAPHY zurück.

Nutzungshinweise

  • Die Linien des Polygons müssen eine Schleife bilden. Das heißt, der letzte Punkt in der Sequenz von Punkten, die das LineString-Objekt definieren, muss derselbe Punkt sein wie der erste Punkt der Sequenz.

  • Wenn Sie der Schleife folgen, muss sich das Innere des Polygons auf der linken Seite und das Äußere des Polygons auf der rechten Seite befinden.

Beispiele

Im folgenden Beispiel wird die Verwendung der ST_MAKEPOLYGONORIENTED-Funktion gezeigt. Die folgende Punktsequenz definiert einen geodätischen rechteckigen Bereich mit einer Breite von 1 Grad und einer Länge von 2 Grad. Die linke untere Ecke des Polygons beginnt am Äquator (Breitengrad) und Greenwich (Längengrad). Der letzte Punkt in der Sequenz ist der gleiche wie der erste Punkt, der die Schleife vervollständigt.

Im Beispiel wird das GEOGRAPHY-Objekt für das Polygon an die Funktion ST_AREA übergeben, um die Fläche des Polygons zurückzugeben.

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

Das folgende Beispiel hat die gleiche Form, aber die entgegengesetzte Ausrichtung. Wie durch den Unterschied in der Fläche des Polygons angezeigt wird, repräsentiert das Polygon die gesamte Erdkugel mit Ausnahme der vorherigen Form.

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