名稱

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 破壞性變更 -- 在先前版本中,將此應用於 geography 類型的 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