# 12.17.7.2 点属性函数
一种观点
由 X 和 Y 坐标组成,可以使用ST_X()
和ST_Y()
功能,分别。这些函数还允许可选的第二个参数指定 X 或 Y 坐标值,在这种情况下,函数结果是观点
来自第一个参数的对象,将适当的坐标修改为等于第二个参数。
为了观点
具有地理空间参考系统 (SRS) 的对象,可以使用ST_经度()
和ST_Latitude()
功能,分别。这些函数还允许可选的第二个参数指定经度或纬度值,在这种情况下,函数结果是观点
来自第一个参数的对象,其经度或纬度修改为等于第二个参数。
除非另有说明,本节中的函数按如下方式处理其几何参数:
如果有任何论据
空值
,返回值为空值
.如果任何几何参数是有效几何但不是
观点
对象,一个ER_UNEXPECTED_GEOMETRY_TYPE
(opens new window)发生错误。如果任何几何参数不是语法上格式良好的几何,则
ER_GIS_INVALID_DATA
(opens new window)发生错误。如果任何几何参数是未定义的空间参考系统 (SRS) 中的语法结构良好的几何,则
ER_SRS_NOT_FOUND
(opens new window)发生错误。如果提供了 X 或 Y 坐标参数并且值为
-inf
,+信息
, 要么钠
, 一个ER_DATA_OUT_OF_RANGE
(opens new window)发生错误。如果经度或纬度值超出范围,则会发生错误:
如果经度值不在 (−180, 180] 范围内,则
ER_LONGITUDE_OUT_OF_RANGE
(opens new window)发生错误。如果纬度值不在范围内[−90, 90], 一个
ER_LATITUDE_OUT_OF_RANGE
(opens new window)发生错误。显示的范围以度为单位。由于浮点运算,确切的范围限制略有偏差。
否则,返回值为非
空值
.这些函数可用于获取点属性:
-
ST_纬度(*
p* [, *
new_latitude_val*])
用一个参数表示一个有效的
观点
目的*p
具有地理空间参考系统 (SRS),ST_Latitude()
返回纬度值p
*作为双精度数。使用表示有效纬度值的可选第二个参数,
ST_Latitude()
返回一个观点
像第一个参数一样的对象,其纬度等于第二个参数。ST_Latitude()
如本节介绍中所述处理其参数,此外,如果观点
对象有效但没有地理 SRS,ER_SRS_NOT_GEOGRAPHIC
(opens new window)发生错误。mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326); mysql> SELECT ST_Latitude(@pt); +------------------+ | ST_Latitude(@pt) | +------------------+ | 45 | +------------------+ mysql> SELECT ST_AsText(ST_Latitude(@pt, 10)); +---------------------------------+ | ST_AsText(ST_Latitude(@pt, 10)) | +---------------------------------+ | POINT(10 90) | +---------------------------------+
此功能是在 MySQL 8.0.12 中添加的。
-
ST_经度(*
p* [, *
new_longitude_val*])
用一个参数表示一个有效的
观点
目的*p
具有地理空间参考系统 (SRS),ST_经度()
返回的经度值p
*作为双精度数。使用可选的第二个参数表示有效的经度值,
ST_经度()
返回一个观点
像第一个参数一样的对象,其经度等于第二个参数。ST_经度()
如本节介绍中所述处理其参数,此外,如果观点
对象有效但没有地理 SRS,ER_SRS_NOT_GEOGRAPHIC
(opens new window)发生错误。mysql> SET @pt = ST_GeomFromText('POINT(45 90)', 4326); mysql> SELECT ST_Longitude(@pt); +-------------------+ | ST_Longitude(@pt) | +-------------------+ | 90 | +-------------------+ mysql> SELECT ST_AsText(ST_Longitude(@pt, 10)); +----------------------------------+ | ST_AsText(ST_Longitude(@pt, 10)) | +----------------------------------+ | POINT(45 10) | +----------------------------------+
此功能是在 MySQL 8.0.12 中添加的。
-
用一个参数表示一个有效的
观点
目的*p
,ST_X()
返回 X 坐标值p
*作为双精度数。从 MySQL 8.0.12 开始,X 坐标被认为是指第一个出现在观点
空间参考系统 (SRS) 定义。使用可选的第二个参数,
ST_X()
返回一个观点
对象类似于第一个参数,其 X 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果观点
对象具有地理 SRS,第二个参数必须在经度或纬度值的适当范围内。ST_X()
如本节介绍中所述处理其参数。mysql> SELECT ST_X(Point(56.7, 53.34)); +--------------------------+ | ST_X(Point(56.7, 53.34)) | +--------------------------+ | 56.7 | +--------------------------+ mysql> SELECT ST_AsText(ST_X(Point(56.7, 53.34), 10.5)); +-------------------------------------------+ | ST_AsText(ST_X(Point(56.7, 53.34), 10.5)) | +-------------------------------------------+ | POINT(10.5 53.34) | +-------------------------------------------+
-
用一个参数表示一个有效的
观点
目的*p
,ST_Y()
返回 Y 坐标值p
*作为双精度数。从 MySQL 8.0.12 开始,Y 坐标被认为是指出现在观点
空间参考系统 (SRS) 定义。使用可选的第二个参数,
ST_Y()
返回一个观点
像第一个参数一样的对象,其 Y 坐标等于第二个参数。从 MySQL 8.0.12 开始,如果观点
对象具有地理 SRS,第二个参数必须在经度或纬度值的适当范围内。ST_Y()
如本节介绍中所述处理其参数。mysql> SELECT ST_Y(Point(56.7, 53.34)); +--------------------------+ | ST_Y(Point(56.7, 53.34)) | +--------------------------+ | 53.34 | +--------------------------+ mysql> SELECT ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)); +-------------------------------------------+ | ST_AsText(ST_Y(Point(56.7, 53.34), 10.5)) | +-------------------------------------------+ | POINT(56.7 10.5) | +-------------------------------------------+