Name

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

Synopsis

float ST_Length(geometry a_2dlinestring);

float ST_Length(geography geog, boolean use_spheroid=true);

説明

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

ジオグラフィに対しては、測地線の逆問題を使って計算し、長さの単位はメートルです。PostGISをPROJ 4.8.0以上でコンパイルしているなら、回転楕円体面はSRIDで指定されたものですが、そうでなければ、WGS84に限定されます。use_spheroid=falseとすると、回転楕円体面でなく近似する球面で計算します。

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

[Warning]

Changed: 2.0.0 大幅な変更 -- 以前の版ではジオグラフィのPOLYGONやMULTIPOLYGONへの適用によってPOLYGONやMULTIPOLYGONの周囲長を返しました。2.0.0版ではジオメトリの挙動に従うため0を返すように変更しました。ポリゴンの周囲長を求める場合は、ST_Perimeterを使います。

[Note]

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

This method implements the OpenGIS Simple Features Implementation Specification for SQL 1.1. s2.1.5.1

This method implements the SQL/MM specification. SQL-MM 3: 7.1.2, 9.3.4

Availability: 1.5.0 ジオグラフィt対応が導入されました。

This method is also provided by SFCGAL backend.

ジオメトリの例

ラインストリングのフィート単位の長さを返します。EPSG: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.5703627288 | 34346.2060960742
                        

関連情報

ST_GeographyFromText, ST_GeomFromEWKT, ST_LengthSpheroid, ST_Perimeter, ST_Transform