类别:

地理空间函数

ST_PERIMETER

返回 GEOGRAPHYGEOMETRY 对象中多边形周长的长度。

语法

ST_PERIMETER( <geography_or_geometry_expression> )
Copy

实参

geography_or_geometry_expression

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

返回

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

  • 对于 GEOGRAPHY 对象,长度以米为单位。

  • 对于 GEOMETRY 对象,长度的计算单位与定义坐标时使用的单位相同。

使用说明

  • 如果 geography_or_geometry_expression 不是多边形、MultiPolygon 或包含多边形的 GeometryCollection,则 ST_PERIMETER 返回 0。

  • 如果 geography_or_geometry_expression 是一个 GeometryCollection,则 ST_PERIMETER 返回集合中多边形的周长之和。

  • 使用此函数(而不是 ST_LENGTH)获取多边形的周长。

示例

GEOGRAPHY 示例

计算多边形的周长,该多边形的每条边的弧度为 1 度,并且有一条边位于赤道上:

SELECT ST_PERIMETER(TO_GEOGRAPHY('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'));
+------------------------------------------------------------------+
| ST_PERIMETER(TO_GEOGRAPHY('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) |
|------------------------------------------------------------------|
|                                                 444763.468727621 |
+------------------------------------------------------------------+
Copy

GEOMETRY 示例

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

SELECT ST_PERIMETER(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_PERIMETER(G) | ST_ASWKT(G)                    |
|-----------------+--------------------------------|
|               0 | POINT(1 1)                     |
|               0 | LINESTRING(0 0,1 1)            |
|               4 | POLYGON((0 0,0 1,1 1,1 0,0 0)) |
+-----------------+--------------------------------+
Copy
语言: 中文