类别:

地理空间函数

ST_LENGTH

返回 GEOGRAPHY 对象中的 LineString 的测地线长度,或者 GEOMETRY 对象中的 LineString 的欧几里得长度。

语法

ST_LENGTH( <geography_or_geometry_expression> )
Copy

实参

geography_or_geometry_expression

实参的类型必须为 GEOGRAPHY 或 GEOMETRY。

返回

返回一个 REAL 值,该值表示长度:

  • 对于 GEOGRAPHY 输入值,长度以米为单位。

  • 对于 GEOMETRY 输入值,长度的计算单位与定义输入坐标所用单位相同。

使用说明

  • 如果 geography_or_geometry_expression 不是包含线串的 LineString、MultiLineString 或 GeometryCollection,则 ST_LENGTH 返回 0。

  • 如果 geography_or_geometry_expression 是 GeometryCollection,则 ST_LENGTH 返回集合中线串长度的总和。

  • 如果需要多边形的周长,请改用 ST_PERIMETER 函数。

示例

GEOGRAPHY 示例

此示例显示了赤道处一度弧的长度(以米为单位):

SELECT ST_LENGTH(TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0)'));
+---------------------------------------------------------+
| ST_LENGTH(TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0)')) |
|---------------------------------------------------------|
|                                        111195.101177484 |
+---------------------------------------------------------+
Copy

GEOMETRY 示例

下面的示例演示如何使用 ST_LENGTH 函数。

SELECT ST_LENGTH(g), ST_ASWKT(g)
FROM (SELECT TO_GEOMETRY(column1) AS g
  FROM VALUES ('POINT(1 1)'),
              ('LINESTRING(0 0, 1 1)'),
              ('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))'));
Copy
+--------------+--------------------------------+
| ST_LENGTH(G) | ST_ASWKT(G)                    |
|--------------+--------------------------------|
|  0           | POINT(1 1)                     |
|  1.414213562 | LINESTRING(0 0,1 1)            |
|  0           | POLYGON((0 0,0 1,1 1,1 0,0 0)) |
+--------------+--------------------------------+
Copy
语言: 中文