メインコンテンツまでスキップ
に最終更新

ST_LENGTH

説明​

線ジオメトリオブジェクトの球面上の長さ、または面ジオメトリオブジェクトの境界の周長をメートル単位で返します。この関数は、地球を球体とみなして計算します。

  • LINESTRING または MULTILINESTRING の場合、すべての線分の球面上の大円距離の合計、つまり線オブジェクトの長さを返します。
  • POLYGON または MULTIPOLYGON の場合、外側の境界と内側の境界(穴)の球面上の大円距離の合計、つまり面オブジェクトの周長を返します。
  • CIRCLE の場合、式 2 * π * radius で計算した円周の長さを返します。
  • POINT の場合、0.0 を返します。

構文​

ST_LENGTH( <shape> )

パラメータ​

パラメータ説明
<shape>入力ジオメトリ。型は GEOMETRY、または GEOMETRY に変換できる VARCHAR(WKT 形式)です。LINESTRING、POLYGON、CIRCLE、POINT などをサポートします。

戻り値​

ジオメトリオブジェクトの長さまたは周長を、メートル単位の 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 |
+--------------------------------------------------------+