- カテゴリ:
ST_MAKEPOLYGONORIENTED¶
穴のないポリゴンを表す GEOGRAPHY オブジェクトを構築します。この関数は、指定された LineString を外部ループとして使用します。
この関数はループの方向を修正しようとしないため、球体の半分以上にまたがるポリゴンを作成できます。対照的に、 ST_MAKEPOLYGON はこれらの大きな形状の向きを反転します。
- こちらもご参照ください。
構文¶
ST_MAKEPOLYGONORIENTED( <geography_expression> )
引数¶
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 |
+------------------+
次の例は同じ形状ですが、向きが反対です。ポリゴンの面積の違いが示すように、ポリゴンは以前の形状を除いた地球全体を表します。
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 |
+-----------------+