Namn

ST_LengthSpheroid — Returnerar 2D- eller 3D-längd/perimeter för en lon/lat-geometri på en sfäroid.

Synopsis

float ST_LengthSpheroid(geometry a_geometry, spheroid a_spheroid);

Beskrivning

Beräknar längden eller omkretsen för en geometri på en sfäroid. Detta är användbart om geometrins koordinater är i longitud/latitud och en längd önskas utan omprojektering. Sfäroiden anges av ett textvärde enligt följande:

SPHEROID[<NAME>,<SEMI-MAJOR AXIS>,<INVERSE FLATTENING>]

Till exempel:

SPHEROID["GRS_1980",6378137,298.257222101]

Tillgänglighet: 1.2.2

Ändrad: 2.2.0 I tidigare versioner kallades detta ST_Length_Spheroid och hade aliaset ST_3DLength_Spheroid

Denna funktion stöder 3d och kommer inte att tappa z-index.

Exempel

Mät en tabellgeometri direkt på en sfäroid när koordinaterna lagras i longitud och latitud.

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

Det här exemplet mäter en 2D-MultiLineString och varje komponent separat på samma sfäroid.

Kod
WITH sample AS (
  SELECT 'MULTILINESTRING((-118.584 38.374,-118.583 38.5),
          (-71.05957 42.3589,-71.061 43))'::geometry AS geom,
         CAST('SPHEROID["GRS_1980",6378137,298.257222101]' AS spheroid) AS sph_m
)
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 sample;
Utdata
tot_len      |    len_line1     |    len_line2
------------------+------------------+------------------
 85204.52077117894 | 13986.87252824332 | 71217.64824293563
Figur
Geometry figure for visual-st-length-spheroid-01

Det här exemplet använder 3D-indata; Z bidrar till det uppmätta resultatet.

Kod
WITH sample AS (
  SELECT 'MULTILINESTRING((-118.584 38.374 20,-118.583 38.5 30),
          (-71.05957 42.3589 75,-71.061 43 90))'::geometry AS geom,
         CAST('SPHEROID["GRS_1980",6378137,298.257222101]' AS spheroid) AS sph_m
)
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 sample;
Utdata
tot_len      |    len_line1    |    len_line2
------------------+-----------------+------------------
 85204.52592562366 | 13986.876103023424 | 71217.64982260024
Figur
Geometry figure for visual-st-length-spheroid-02