名前

ST_Length — LINESTRINGまたはMULTILINESTRINGの場合に,ジオメトリの二次元長を返します.ジオメトリでは,単位は空間参照系の単位です.ジオグラフィでは,メートル単位です(デフォルトの回転楕円体)

概要

float ST_Length(geometry a_2dlinestring);

float ST_Length(geography gg);

float ST_Length(geography gg, boolean use_spheroid);

説明

ジオメトリについては,LINESTRING, MULTILINESTRING, ST_Curve, ST_MultiCurveの場合には,ジオメトリの二次元デカルト距離を返します.領域ジオメトリに対しては0を返します.領域ジオメトリに対してはST_Perimeterを使います.計測単位はジオメトリの空間参照系の単位になります.ジオグラフィについては,領域ジオメトリに対する周囲長関数としての働きもします.

現在は,ジオメトリに対してはST_Length2Dの別名ですが,高次元サポートに変更されるかも知れません.

[注意]

ジオグラフィのMULTI/POLYGONへの適用によって,POLYGON/MULTIPOLYGONの周囲長を得られます. これは,ジオメトリに対する実装の場合とは違います.

[注意]

ジオグラフィに対しては,球面での計測を行います.精度が上がりますが遅くなる回転楕円体を使用するには,ST_Length(gg,false);とします.

このメソッドは OpenGIS Simple Features Implementation Specification for SQL 1.1.を実装するものです. s2.1.5.1

このメソッドはSQL/MM仕様の実装です. SQL-MM 3: 7.1.2, 9.3.4

Availability: 1.5.0 geography support was introduced in 1.5.

ジオメトリの例

フィート単位でラインストリングの長さを返します.2249がフィート単位のマサチューセッツ州平面ですので,フィート単位になります.

SELECT ST_Length(ST_GeomFromText('LINESTRING(743238 2967416,743238 2967450,743265 2967450,
743265.625 2967416,743238 2967416)',2249));
st_length
---------
 122.630744000095


--WGS84のラインストリングからメートル単位のマサチューセッツ州平面への変換
SELECT ST_Length(
	ST_Transform(
		ST_GeomFromEWKT('SRID=4326;LINESTRING(-72.1260 42.45, -72.1240 42.45666, -72.123 42.1546)'),
		26986
	)
);
st_length
---------
34309.4563576191
			

ジオグラフィの例

WGS84ジオグラフィラインの長さを返します.

			-- デフォルト計算では回転楕円体でなく球面を使用
SELECT ST_Length(the_geog) As length_spheroid,  ST_Length(the_geog,false) As length_sphere
FROM (SELECT ST_GeographyFromText(
'SRID=4326;LINESTRING(-72.1260 42.45, -72.1240 42.45666, -72.123 42.1546)') As the_geog)
 As foo;
 length_spheroid  |  length_sphere
------------------+------------------
 34310.5703627305 | 34346.2060960742
(1 row)
			

関連情報

ST_GeographyFromText, ST_GeomFromEWKT, ST_Length_Spheroid, ST_Perimeter, ST_Transform