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 的别名,但未来可能会更改以支持更高的维度。
更改:2.0.0 破坏性更改 -- 在以前的版本中,将此函数应用于地理类型的 MULTI/POLYGON 会返回 POLYGON/MULTIPOLYGON 的周长。在 2.0.0 中,此行为更改为返回 0,以与几何类型的行为保持一致。如果您需要多边形的周长,请使用 ST_Perimeter。 |
对于地理类型,默认计算使用椭球模型。要使用更快但精度较低的球体计算,请使用 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