# 12.17.7.4 多边形和多多边形属性函数
本节中的函数返回的属性多边形
要么多多边形
价值观。
除非另有说明,本节中的函数按如下方式处理其几何参数:
如果有任何论据
空值
或任何几何参数是空几何,返回值为空值
.如果任何几何参数不是语法上格式良好的几何,则
ER_GIS_INVALID_DATA
(opens new window)发生错误。如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何,则
ER_SRS_NOT_FOUND
(opens new window)发生错误。对于采用多个几何参数的函数,如果这些参数不在同一个 SRS 中,则
ER_GIS_DIFFERENT_SRIDS
(opens new window)发生错误。否则,返回值为非
空值
.这些函数可用于获取多边形属性:
-
返回一个双精度数,指示区域的面积
多边形
要么多多边形
论据,在其空间参考系中测量。从 MySQL 8.0.13 开始,
ST_Area()
如本节介绍中所述处理其参数,但有以下例外:如果几何在几何上无效,则结果要么是未定义的区域(即,它可以是任意数字),要么发生错误。
如果几何有效但不是
多边形
要么多多边形
对象,一个ER_UNEXPECTED_GEOMETRY_TYPE
(opens new window)发生错误。如果几何是有效的
多边形
在笛卡尔 SRS 中,结果是多边形的笛卡尔区域。如果几何是有效的
多多边形
在笛卡尔 SRS 中,结果是多边形的笛卡尔面积之和。如果几何是有效的
多边形
在地理 SRS 中,结果是该 SRS 中多边形的大地测量面积,以平方米为单位。如果几何是有效的
多多边形
在地理 SRS 中,结果是该 SRS 中多边形的大地测量面积之和,以平方米为单位。如果面积计算导致
+信息
, 一个ER_DATA_OUT_OF_RANGE
(opens new window)发生错误。如果几何图形的地理 SRS 的经度或纬度超出范围,则会发生错误:
如果经度值不在 (−180, 180] 范围内,则
ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE
(opens new window)发生错误(ER_LONGITUDE_OUT_OF_RANGE
(opens new window)在 MySQL 8.0.12 之前)。如果纬度值不在范围内[−90, 90], 一个
ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE
(opens new window)发生错误(ER_LATITUDE_OUT_OF_RANGE
(opens new window)在 MySQL 8.0.12 之前)。显示的范围以度为单位。由于浮点运算,确切的范围限制略有偏差。
在 MySQL 8.0.13 之前,
ST_Area()
如本节介绍中所述处理其参数,但有以下例外:对于维度为 0 或 1 的参数,结果为 0。
如果几何为空,则返回值为 0 而不是
空值
.对于几何集合,结果是所有组件的面积值之和。如果几何集合为空,则其面积返回为 0。
如果几何具有地理空间参考系统 (SRS) 的 SRID 值,则
ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS
(opens new window)发生错误。
mysql> SET @poly = 'Polygon((0 0,0 3,3 0,0 0),(1 1,1 2,2 1,1 1))'; mysql> SELECT ST_Area(ST_GeomFromText(@poly)); +---------------------------------+ | ST_Area(ST_GeomFromText(@poly)) | +---------------------------------+ | 4 | +---------------------------------+ mysql> SET @mpoly = 'MultiPolygon(((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1)))'; mysql> SELECT ST_Area(ST_GeomFromText(@mpoly)); +----------------------------------+ | ST_Area(ST_GeomFromText(@mpoly)) | +----------------------------------+ | 8 | +----------------------------------+
-
返回的数学质心
多边形
要么多多边形
论据作为观点
.结果不保证在多多边形
.此函数通过计算集合中最高维度的组件的质心点来处理几何集合。这些组件被提取并制成一个单一的
多多边形
,多行字符串
, 要么多点
用于质心计算。ST_Centroid()
如本节介绍中所述处理其参数,但有以下例外:返回值为
空值
对于参数是空几何集合的附加条件。如果几何具有地理空间参考系统 (SRS) 的 SRID 值,则
ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS
(opens new window)发生错误。
mysql> SET @poly = ST_GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))'); mysql> SELECT ST_GeometryType(@poly),ST_AsText(ST_Centroid(@poly)); +------------------------+--------------------------------------------+ | ST_GeometryType(@poly) | ST_AsText(ST_Centroid(@poly)) | +------------------------+--------------------------------------------+ | POLYGON | POINT(4.958333333333333 4.958333333333333) | +------------------------+--------------------------------------------+
-
返回的外环
多边形
价值*聚
*作为一个线串
.ST_ExteriorRing()
如本节介绍中所述处理其参数。mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))); +----------------------------------------------------+ | ST_AsText(ST_ExteriorRing(ST_GeomFromText(@poly))) | +----------------------------------------------------+ | LINESTRING(0 0,0 3,3 3,3 0,0 0) | +----------------------------------------------------+
-
返回*
ñ
-th 内环多边形
价值聚
*作为一个线串
.戒指从 1 开始编号。ST_InteriorRingN()
如本节介绍中所述处理其参数。mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)); +-------------------------------------------------------+ | ST_AsText(ST_InteriorRingN(ST_GeomFromText(@poly),1)) | +-------------------------------------------------------+ | LINESTRING(1 1,1 2,2 2,2 1,1 1) | +-------------------------------------------------------+
-
ST_NumInteriorRing(*
聚*)
,ST_NumInteriorRings(*
聚*)
返回内部环的数量
多边形
价值*聚
*.ST_NumInteriorRing()
和ST_NuminteriorRings()
如本节介绍中所述处理他们的论点。mysql> SET @poly = 'Polygon((0 0,0 3,3 3,3 0,0 0),(1 1,1 2,2 2,2 1,1 1))'; mysql> SELECT ST_NumInteriorRings(ST_GeomFromText(@poly)); +---------------------------------------------+ | ST_NumInteriorRings(ST_GeomFromText(@poly)) | +---------------------------------------------+ | 1 | +---------------------------------------------+