类别:

地理空间函数

ST_MAKEPOLYGONORIENTED

构造一个 GEOGRAPHY 对象,它表示一个无孔多边形。此函数使用指定的 LineString 作为外部循环。

该函数不会试图纠正循环的方向,因此可以创建横跨球体一半以上的多边形。与此相反,ST_MAKEPOLYGON 会反转这些大形状的方向。

另请参阅:

TO_GEOGRAPHYST_MAKEPOLYGON

语法

ST_MAKEPOLYGONORIENTED( <geography_expression> )
Copy

实参

geography_expression

一个 GEOGRAPHY 对象,表示最后一个点与第一个点为同一个点的 LineString(即循环)。

返回

该函数返回 GEOGRAPHY 类型的值。

使用说明

  • 多边形排列必须构成循环。换句话说,定义 LineString 的点序列中的最后一个点必须与序列中的第一个点相同。

  • 在沿着循环前进时,多边形的内部应该在左侧,外部应该在右侧。

示例

下面的示例演示如何使用 ST_MAKEPOLYGONORIENTED 函数。下面的点序列定义了一个宽为 1 度、高为 2 度的测地线矩形区域。多边形的左下角从赤道(纬度)和格林威治(经度)开始。序列中的最后一个点与第一个点相同,因此构成了一个完整的循环。

该示例将多边形的 GEOGRAPHY 对象传递给 ST_AREA 函数,以返回多边形的面积。

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 1.0 0.0, 1.0 2.0, 0.0 2.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+------------------+
|  AREA_OF_POLYGON |
|------------------|
| 24724306355.5504 |
+------------------+
Copy

下面的示例为相同的形状,只是方向相反。如多边形面积的差异所示,多边形表示除先前形状之外的整个球体。

SELECT ST_AREA(
  ST_MAKEPOLYGONORIENTED(
    TO_GEOGRAPHY('LINESTRING(0.0 0.0, 0.0 2.0, 1.0 2.0, 1.0 0.0, 0.0 0.0)')
  )
) AS area_of_polygon;

+-----------------+
| AREA_OF_POLYGON |
|-----------------|
| 510041348811633 |
+-----------------+
Copy
语言: 中文