Name

ST_Length — Renvoie la longueur 2D d'une géométrie linéaire.

Synopsis

float ST_Length(geometry a_2dlinestring);

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

Description

Pour les types geometry : renvoie la longueur cartésienne 2D de la géométrie s'il s'agit d'une LineString, MultiLineString, ST_Curve, ST_MultiCurve. Pour les géométries aréolaires, 0 est renvoyé ; utilisez ST_Perimeter à la place. Les unités de longueur sont déterminées par le système de référence spatial de la géométrie.

Pour les types geography : le calcul est effectué en utilisant le calcul géodésique inverse. Les unités de longueur sont exprimées en mètres. Si PostGIS est compilé avec PROJ version 4.8.0 ou ultérieure, le sphéroïde est spécifié par le SRID, sinon il est exclusif à WGS84. Si use_spheroid = false, le calcul est basé sur une sphère au lieu d'un sphéroïde.

Actuellement, pour la géométrie, il s'agit d'un alias de ST_Length2D, mais cela pourrait changer pour prendre en charge des dimensions plus élevées.

[Warning]

Modifié : 2.0.0 Rupture -- dans les versions précédentes, appliquer ceci à un MULTI/POLYGONE de type geography donnait le périmètre du POLYGONE/MULTIPOLYGONE. Dans la version 2.0.0, cette fonction a été modifiée pour retourner 0 afin d'être en ligne avec le comportement de la géométrie. Veuillez utiliser ST_Perimeter si vous souhaitez obtenir le périmètre d'un polygone

[Note]

Pour geography, le calcul utilise par défaut un modèle sphéroïdal. Pour utiliser le calcul sphérique, plus rapide mais moins précis, utilisez ST_Length(gg,false) ;

Cette méthode implémente la spécification OGC Simple Features Implementation Specification for SQL 1.1. s2.1.5.1

Cette méthode implémente la spécification SQL/MM. SQL-MM 3: 7.1.2, 9.3.4

Disponibilité : 1.5.0 La prise en charge du type geography a été introduite dans la version 1.5.

Exemples de géométrie

Renvoie la longueur en pieds de la ligne. Notez que cette longueur est exprimée en pieds car EPSG:2249 correspond aux pieds du plan de l'État du Massachusetts

SELECT ST_Length(ST_GeomFromText('LINESTRING(743238 2967416,743238 2967450,743265 2967450,
743265.625 2967416,743238 2967416)',2249));

st_length
---------
 122.630744000095


--Transforming WGS 84 LineString to Massachusetts state plane meters
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
                        

Exemples géographiques

Retourne la longueur d'une ligne de type geography avec le SRID WGS 84

-- the default calculation uses a 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.5703627288 | 34346.2060960742