名称

ST_Length — 返回线性几何的 2D 长度。

语法

float ST_Length(geometry a_2dlinestring);

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

描述

对于几何类型:如果几何是 LineString、MultiLineString、ST_Curve、ST_MultiCurve,则返回几何的 2D 笛卡尔长度。对于面积几何,返回 0;请改用 ST_Perimeter。长度单位由几何的空间参考系决定。

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

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

[Warning]

已更改:2.0.0 重大更改 -- 在以前的版本中,将此应用于地理类型的 MULTI/POLYGON 会得到 POLYGON/MULTIPOLYGON 的周长。在 2.0.0 中,此项已更改为返回 0,以符合几何行为。如果您想要多边形的周长,请使用 ST_Perimeter

[Note]

对于地理,计算默认使用椭球模型。要使用速度更快但准确性较低的球形计算,请使用 ST_Length(gg,false);

此方法实现了 OGC Simple Features Implementation Specification for SQL 1.1

s2.1.5.1

此方法实现了 SQL/MM 规范。

SQL-MM 3: 7.1.2, 9.3.4

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

几何示例

以英尺为单位返回线字符串的长度。请注意,这是以英尺为单位,因为 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_GeographyFromTextST_GeomFromEWKTST_LengthSpheroidST_PerimeterST_Transform