Name

ST_Length — 返回线性几何图形的二维长度。

Synopsis

float ST_Length(geometry a_2dlinestring);

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

描述

对于几何图形类型:如果几何图形是线串、多重线串、ST_Curve、ST_MultiCurve,则返回该几何图形的二维笛卡尔长度。对于面状几何图形,返回0;使用 ST_Perimeter 取而代之的是。长度单位由几何图形的空间参考系确定。

对于地理类型:使用反测地线计算执行计算。长度单位以米为单位。如果PostGIS是使用Proj版本4.8.0或更高版本编译的,则椭球体由SRID指定,否则由WGS84独占。如果 use_spheroid=false ,则计算基于球体而不是椭球体。

目前,对于几何体,这是ST_Length2D的别名,但这可能会更改以支持更高的维度。

[Warning]

已更改:2.0.0突破性更改--在以前的版本中,将此选项应用于地理类型的多维/多边形将为您提供多边形/多维/多维OLYGON的周长。在2.0.0中,将其更改为返回0以与几何体行为保持一致。如果需要面的周长,请使用ST_PERIMETER

[Note]

对于地理学,计算默认使用椭圆形模型。若要使用速度更快但精度较低的球面计算,请使用ST_LENGTH(gg,FALSE);

This method implements the OGC Simple Features Implementation Specification for SQL 1.1. s2.1.5.1

This method implements the SQL/MM specification. SQL-MM 3:7.1.2、9.3.4

可用性:1.5.0地理支持是在1.5中引入的。

This method is also provided by SFCGAL backend.

几何图形示例

返回以英尺为单位的线条长度。请注意,这是以英尺为单位的,因为EPSG:2249是马萨诸塞州平面英尺

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
                        

地理例子

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
                        

另请参阅

ST_GeographyFromText, ST_GeomFromEWKT, ST_LengthSpheroid, ST_Perimeter, ST_Transform