名前

ST_Length2D_Spheroid — LINESTRINGまたはMULTILINESTRINGに対して、回転楕円体上の2次元長を返します。ジオメトリの座標が経度/緯度で、投影変換なしに距離を求める場合に使います。

概要

float ST_Length2D_Spheroid(geometry a_linestring, spheroid a_spheroid);

説明

LINESTRINGまたはMULTILINESTRINGに対して、回転楕円体上の2次元長を返します。ジオメトリの座標が経度/緯度で、投影変換なしに距離を求める場合に使います。回転楕円体は独立したデータベースタイプで、次のように構成されています。

SPHEROID[<名称>,<長軸半径
                  AXIS>,<扁平率の逆数>]

SPHEROID["GRS_1980",6378137,298.257222101]

[注記]

MULTILINESTRINGかLINESTRINGでない場合は0が返されます。

[注記]

の関数は ST_Length_SpheroidST_3DLength_Spheroidによく似ていますが、計算でZ値は考慮されない点が異なります。

SELECT ST_Length2D_Spheroid( geometry_column,
                          'SPHEROID["GRS_1980",6378137,298.257222101]' )
                          FROM geometry_table;

SELECT ST_Length2D_Spheroid( the_geom, sph_m ) As tot_len,
ST_Length2D_Spheroid(ST_GeometryN(the_geom,1), sph_m) As len_line1,
ST_Length2D_Spheroid(ST_GeometryN(the_geom,2), sph_m) As len_line2
                          FROM (SELECT ST_GeomFromText('MULTILINESTRING((-118.584 38.374,-118.583 38.5),
        (-71.05957 42.3589 , -71.061 43))') As the_geom,
CAST('SPHEROID["GRS_1980",6378137,298.257222101]' As spheroid) As sph_m)  as foo;
        tot_len      |    len_line1     |    len_line2
------------------+------------------+------------------
 85204.5207562955 | 13986.8725229309 | 71217.6482333646

 --3D Observe same answer
SELECT ST_Length2D_Spheroid( the_geom, sph_m ) As tot_len,
ST_Length2D_Spheroid(ST_GeometryN(the_geom,1), sph_m) As len_line1,
ST_Length2D_Spheroid(ST_GeometryN(the_geom,2), sph_m) As len_line2
                          FROM (SELECT ST_GeomFromEWKT('MULTILINESTRING((-118.584 38.374 20,-118.583 38.5 30),
        (-71.05957 42.3589 75, -71.061 43 90))') As the_geom,
CAST('SPHEROID["GRS_1980",6378137,298.257222101]' As spheroid) As sph_m)  as foo;

        tot_len      |    len_line1     |    len_line2
------------------+------------------+------------------
 85204.5207562955 | 13986.8725229309 | 71217.6482333646

関連情報

ST_GeometryN, ST_Length_Spheroid, ST_3DLength_Spheroid