メインコンテンツまでスキップ

ST_LENGTH

説明

線ジオメトリオブジェクトの球面長または面ジオメトリオブジェクトの境界周囲長をメートル単位で返します。この関数は計算に球面地球モデルを使用します。

  • LINESTRINGまたはMULTILINESTRINGの場合、球面上のすべてのセグメントの大円距離の合計、すなわち線オブジェクトの長さを返します。
  • POLYGONまたはMULTIPOLYGONの場合、球面上の外側境界と内側境界(穴)の大円距離の合計、すなわち面オブジェクトの周囲長を返します。
  • CIRCLEの場合、2 * π * radiusの公式で計算される円周を返します。
  • POINTの場合、0.0を返します。
注記

Apache Doris 4.0.4以降でサポート

構文

ST_LENGTH( <shape> )

パラメータ

パラメータ説明
<shape>入力ジオメトリ。GEOMETRY型またはVARCHAR型(WKT形式でGEOMETRY型に変換可能)。LINESTRINGPOLYGONCIRCLEPOINTなどの型をサポートします。

戻り値

ジオメトリオブジェクトの長さまたは周囲長をメートル単位で返します(DOUBLE型)。

ST_LENGTHには以下のエッジケースがあります:

  • 入力パラメータがNULLの場合、NULLを返します。
  • 入力パラメータが有効なジオメトリオブジェクトとして解析できない場合、NULLを返します。
  • 入力ジオメトリオブジェクトがPOINTまたは長さゼロの線の場合、0.0を返します。
  • CIRCLE型の場合、正しい円周(メートル単位)が返されるようにするため、ST_CIRCLEで作成する際の半径パラメータはメートル単位である必要があります。

線(LINESTRING)の長さを計算する

-- Calculate the length of a line segment with a 1-degree longitude difference on the equator
SELECT ST_LENGTH(ST_GeometryFromText('LINESTRING(0 0, 1 0)'));
+--------------------------------------------------------+
| ST_LENGTH(ST_GeometryFromText('LINESTRING(0 0, 1 0)')) |
+--------------------------------------------------------+
| 111195.1011774839 |
+--------------------------------------------------------+

多角形の周囲長を計算する (POLYGON)

-- Calculate the perimeter of a small square with a side length of approximately 0.0009 degrees (~100 meters)
SELECT ST_LENGTH(ST_GeometryFromText('POLYGON((-0.00045 -0.00045, 0.00045 -0.00045, 0.00045 0.00045, -0.00045 0.00045, -0.00045 -0.00045))')) AS perimeter;
+-------------------+
| perimeter |
+-------------------+
| 400.3023642327689 |
+-------------------+

円の円周を計算する (CIRCLE)

-- Calculate the circumference of a circle with a radius of 100 meters
SELECT ST_LENGTH(ST_Circle(0, 0, 100));
+---------------------------------+
| ST_LENGTH(ST_Circle(0, 0, 100)) |
+---------------------------------+
| 628.3185307179587 |
+---------------------------------+

点の長さ

SELECT ST_LENGTH(ST_GeometryFromText('POINT(1 1)'));
+----------------------------------------------+
| ST_LENGTH(ST_GeometryFromText('POINT(1 1)')) |
+----------------------------------------------+
| 0 |
+----------------------------------------------+

無効なパラメータ(NULLを返す)

SELECT ST_LENGTH('NOT_A_GEOMETRY');
+-----------------------------+
| ST_LENGTH('NOT_A_GEOMETRY') |
+-----------------------------+
| NULL |
+-----------------------------+

NULL パラメータ

SELECT ST_LENGTH(NULL);
+-----------------+
| ST_LENGTH(NULL) |
+-----------------+
| NULL |
+-----------------+

複合線オブジェクトの長さ

-- Calculate the total length of a polyline
SELECT ST_LENGTH(ST_LineFromText("LINESTRING (0 0,1 0,1 1)"));
+--------------------------------------------------------+
| ST_LENGTH(ST_LineFromText("LINESTRING (0 0,1 0,1 1)")) |
+--------------------------------------------------------+
| 222390.2023549679 |
+--------------------------------------------------------+