# 12.17.7.1 通用几何属性函数
本节中列出的函数不限制其参数并接受任何类型的几何值。
除非另有说明,本节中的函数按如下方式处理其几何参数:
如果有任何论据
空值
,返回值为空值
.如果任何几何参数不是语法上格式良好的几何,则
ER_GIS_INVALID_DATA
(opens new window)发生错误。如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何,则
ER_SRS_NOT_FOUND
(opens new window)发生错误。如果任何 SRID 参数不在 32 位无符号整数的范围内,则
ER_DATA_OUT_OF_RANGE
(opens new window)发生错误。如果任何 SRID 参数引用未定义的 SRS,则
ER_SRS_NOT_FOUND
(opens new window)发生错误。否则,返回值为非
空值
.这些函数可用于获取几何属性:
-
返回几何值的固有尺寸*
g
*.尺寸可以是−1、0、1或2。这些值的含义在中给出第11.4.2.2节,“几何类”.ST_维度()
按照本节引言中所述处理其参数。mysql> SELECT ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')); +------------------------------------------------------+ | ST_Dimension(ST_GeomFromText('LineString(1 1,2 2)')) | +------------------------------------------------------+ | 1 | +------------------------------------------------------+
-
返回几何体值的最小边界矩形(MBR)
g
。结果以多边形
由边界框的角点定义的值:POLYGON((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))); +----------------------------------------------------------------+ | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,2 2)'))) | +----------------------------------------------------------------+ | POLYGON((1 1,2 1,2 2,1 2,1 1)) | +----------------------------------------------------------------+
如果参数是一个点或垂直或水平线段,
ST_信封()
返回点或线段作为其MBR,而不是返回无效多边形:mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))); +----------------------------------------------------------------+ | ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1 1,1 2)'))) | +----------------------------------------------------------------+ | LINESTRING(1 1,1 2) | +----------------------------------------------------------------+
ST_信封()
按照本节引言中所述处理其参数,但以下情况除外:- 如果几何图形具有地理空间参考系(SRS)的SRID值,则
ER_未_为_地理_SRS实施
(opens new window)发生错误。
- 如果几何图形具有地理空间参考系(SRS)的SRID值,则
-
返回一个二进制字符串,该字符串指示几何体实例所属的几何体类型的名称*
g
*他是会员。该名称对应于一个实例几何学
子类。ST_GeometryType()
按照本节引言中所述处理其参数。mysql> SELECT ST_GeometryType(ST_GeomFromText('POINT(1 1)')); +------------------------------------------------+ | ST_GeometryType(ST_GeomFromText('POINT(1 1)')) | +------------------------------------------------+ | POINT | +------------------------------------------------+
-
此函数是一个占位符,为空几何图形集合值返回1,否则返回0。
唯一有效的空几何图形以空几何图形集合值的形式表示。MySQL不支持GIS
空的
价值观,比如点空
.圣伊斯坦蒂(ST_IsEmpty)
按照本节引言中所述处理其参数。 -
如果几何体值为0,则返回1*
g
根据国际标准化组织的规定,这很简单SQL/MM第3部分:空间*标准ST_IsSimple()
如果参数不简单,则返回0。下给出的可实例化几何类的描述第11.4.2节,“OpenGIS几何模型”包括导致类实例被归类为不简单的特定条件。
ST_IsSimple()
按照本节引言中所述处理其参数,但以下情况除外:如果几何图形的地理SRS的经度或纬度超出范围,则会发生错误:
如果经度值不在范围内(−180,180],一个
几何参数经度超出范围
(opens new window)发生错误(呃经度超出范围
(opens new window)MySQL 8.0.12之前)。如果纬度值不在范围内[−90, 90]一
几何参数纬度超出范围
(opens new window)发生错误(ER_纬度_超出范围
(opens new window)MySQL 8.0.12之前)。显示的范围以度为单位。由于采用浮点运算,精确的范围限制略有偏差。
-
使用一个表示有效几何体对象的参数*
g
,ST_SRID()
返回一个整数,该整数指示与相关联的空间参考系统(SRS)的IDg
*.使用表示有效SRID值的可选第二个参数,
ST_SRID()
返回与第一个参数类型相同的对象,其SRID值等于第二个参数。这仅设置对象的SRID值;它不执行坐标值的任何转换。ST_SRID()
按照本节引言中所述处理其参数,但以下情况除外:- 对于单参数语法,
ST_SRID()
返回几何体SRID,即使它引用了未定义的SRS。一ER_SRS_未找到
(opens new window)错误不会发生。
圣斯里德(*
g*, *
目标_srid*)
和ST_变换(*
g*, *
目标_srid*)
不同之处如下:ST_SRID()
更改几何体SRID值而不转换其坐标。ST_Transform()
除了更改几何体的SRID值外,还可以变换几何体坐标。
mysql> SET @g = ST_GeomFromText('LineString(1 1,2 2)', 0); mysql> SELECT ST_SRID(@g); +-------------+ | ST_SRID(@g) | +-------------+ | 0 | +-------------+ mysql> SET @g = ST_SRID(@g, 4326); mysql> SELECT ST_SRID(@g); +-------------+ | ST_SRID(@g) | +-------------+ | 4326 | +-------------+
通过传递到,可以在特定SRID中创建几何图形
ST_SRID()
用于创建空间值的MySQL特定函数之一的结果,以及一个SRID值。例如:SET @g1 = ST_SRID(Point(1, 1), 4326);
但是,该方法在SRID 0中创建几何体,然后将其强制转换为SRID 4326(WGS 84)。一个更好的选择是,首先使用正确的空间参照系创建几何体。例如:
SET @g1 = ST_PointFromText('POINT(1 1)', 4326); SET @g1 = ST_GeomFromText('POINT(1 1)', 4326);
双参数形式
ST_SRID()
对于纠正或更改SRID不正确的几何图形的SRS等任务非常有用。 - 对于单参数语法,