ST_Length — LINESTRINGまたはMULTILINESTRINGの場合に、ジオメトリの2次元長を返します。ジオメトリでは、単位は空間参照系の単位です。ジオグラフィでは、メートル単位です(回転楕円体がデフォルトです)。
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を使います。計測単位はジオメトリの空間参照系の単位になります。ジオグラフィについては、領域ジオメトリに対する周囲長関数としての働きもします。
現在は、ジオメトリに対してはST_Length2Dの別名ですが、高次元サポートに変更されるかも知れません。
変更: 2.0.0 仕様変更 -- 以前の版では、ジオグラフィ型のPOLYGON/MULTIPOLYGONに対して周囲長を返していましたが、2.0.0では、ジオメトリでの0を返すように変更されました。ポリゴンの周囲長を求めるにはST_Perimeterを使用して下さい。 |
ジオグラフィに対しては、回転楕円体面での計測を行います。速くなる反面精度が下がる球面を使用するには、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
初出: 1.5.0 ジオグラフィが導入されました。
フィート単位でラインストリングの長さを返します。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ジオグラフィのラインの長さを返します。
-- default calculation is using a sphere rather than spheroid 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)