カテゴリ:

地理空間関数

ST_PERIMETER

GEOGRAPHY または GEOMETRY オブジェクトにあるポリゴンの周囲の長さを返します。

構文

ST_PERIMETER( <geography_or_geometry_expression> )
Copy

引数

geography_or_geometry_expression

引数の型は GEOGRAPHY または GEOMETRY にする必要があります。

戻り値

長さを表す REAL 値を返します。

  • GEOGRAPHY オブジェクトの場合、長さはメートル単位です。

  • GEOMETRY オブジェクトの場合、長さは、座標の定義に使用されるのと同じ単位で計算されます。

使用上の注意

  • geography_or_geometry_expression がポリゴン、 MultiPolygon、またはポリゴンを含む GeometryCollection ではない場合、 ST_PERIMETER は0を返します。

  • geography_or_geometry_expression が GeometryCollection の場合、 ST_PERIMETER はコレクション内にあるポリゴンの周囲の合計を返します。

  • ポリゴンの周囲を取得するには、(ST_LENGTH ではなく)この関数を使用します。

GEOGRAPHY 例

これは、各辺が1°の弧で、赤道に1つの辺があるポリゴンの周囲の長さを計算します。

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

GEOMETRY 例

次の例では、 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