カテゴリ:

地理空間関数

ST_MAKEPOLYGONORIENTED

穴のないポリゴンを表す GEOGRAPHY オブジェクトを構築します。この関数は、指定された LineString を外部ループとして使用します。

この関数はループの方向を修正しようとしないため、球体の半分以上にまたがるポリゴンを作成できます。対照的に、 ST_MAKEPOLYGON はこれらの大きな形状の向きを反転します。

こちらもご参照ください。

TO_GEOGRAPHYST_MAKEPOLYGON

構文

ST_MAKEPOLYGONORIENTED( <geography_expression> )
Copy

引数

geography_expression

最後のポイントが最初のポイントと同じである LineString を表す GEOGRAPHY オブジェクト(つまり、ループ)。

戻り値

この関数は、 GEOGRAPHY 型の値を返します。

使用上の注意

  • ポリゴンの線はループを形成する必要があります。言い換えると、LineString を定義する一連のポイントにおける最後のポイントは、シーケンスの最初のポイントと同じポイントでなければなりません。

  • ループに沿ってたどると、ポリゴンの内側が左側にあり、Polygon の外側が右側にあるはずです。

次の例では、 ST_MAKEPOLYGONORIENTED 関数の使用方法を示しています。以下の一連のポイントは、幅1度、高さ2度の測地線長方形領域を定義します。ポリゴンの左下隅は、赤道(緯度)とグリニッジ(経度)から始まります。シーケンスの最後のポイントは、ループを完了する最初のポイントと同じです。

この例では、ポリゴンの GEOGRAPHY オブジェクトを ST_AREA 関数に渡して、ポリゴンの面積を返します。

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

次の例は同じ形状ですが、向きが反対です。ポリゴンの面積の違いが示すように、ポリゴンは以前の形状を除いた地球全体を表します。

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