に最終更新
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 |
+--------------------------------------------------------+