- 类别:
ST_MAKEPOLYGONORIENTED¶
构造一个 GEOGRAPHY 对象,它表示一个无孔多边形。此函数使用指定的 LineString 作为外部循环。
该函数不会试图纠正循环的方向,因此可以创建横跨球体一半以上的多边形。与此相反,ST_MAKEPOLYGON 会反转这些大形状的方向。
语法¶
ST_MAKEPOLYGONORIENTED( <geography_expression> )
实参¶
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 |
+------------------+
下面的示例为相同的形状,只是方向相反。如多边形面积的差异所示,多边形表示除先前形状之外的整个球体。
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 |
+-----------------+