ST_LengthSpheroid — 回転楕円体面上の経度緯度のジオメトリの2次元または3次元の長さ/周長を返します。
float ST_LengthSpheroid(
geometry a_geometry, spheroid a_spheroid)
;
回転楕円体面上のジオメトリの周長を返します。この関数は、ジオメトリの座標が経度/緯度で、投影変換なしで長さを求めたい場合に使います。回転楕円体は次のように文字列値で指定します:
SPHEROID[<NAME
>,<SEMI-MAJOR AXIS
>,<INVERSE FLATTENING
>]
例:
SPHEROID["GRS_1980",6378137,298.257222101]
Availability: 1.2.2
Changed: 2.2.0 これより前の版では、これはST_Length_Spheroidと呼ばれ、ST_3DLength_Spheroidという別名を持っていました。
この関数は3次元に対応し、Z値を削除しません。
SELECT ST_LengthSpheroid( geometry_column, 'SPHEROID["GRS_1980",6378137,298.257222101]' ) FROM geometry_table; SELECT ST_LengthSpheroid( geom, sph_m ) As tot_len, ST_LengthSpheroid(ST_GeometryN(geom,1), sph_m) As len_line1, ST_LengthSpheroid(ST_GeometryN(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 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 SELECT ST_LengthSpheroid( geom, sph_m ) As tot_len, ST_LengthSpheroid(ST_GeometryN(geom,1), sph_m) As len_line1, ST_LengthSpheroid(ST_GeometryN(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 geom, CAST('SPHEROID["GRS_1980",6378137,298.257222101]' As spheroid) As sph_m) as foo; tot_len | len_line1 | len_line2 ------------------+-----------------+------------------ 85204.5259107402 | 13986.876097711 | 71217.6498130292