点属性函数
Point
由X和Y坐标组成,可以分别使用ST_X()
和ST_Y()
函数获得。这些函数还允许使用可选的第二个自变量,该第二个自变量指定X或Y坐标值,在这种情况下,函数结果是Point
来自第一个自变量的对象,其相应坐标被修改为等于第二个自变量。
对于Point
具有地理空间参考系统(SRS)的对象,可以分别使用ST_Longitude()
和ST_Latitude()
函数获取经度和纬度。这些函数还允许使用可选的第二个自变量来指定经度或纬度值,在这种情况下,函数结果是Point
来自第一个自变量的对象,经修改的经度或纬度等于第二个自变量。
除非另有说明,否则本节中的函数将按以下方式处理其参数:
- 如果有任何参数
NULL
,则返回值为NULL
。 - 如果任何几何参数是有效几何但不是
Point
对象,ER_UNEXPECTED_GEOMETRY_TYPE
则将发生错误。 - 如果任何几何参数都不是语法上格式正确的几何,
ER_GIS_INVALID_DATA
则会发生错误。 - 如果任何几何参数的SRID值都引用未定义的空间参考系统(SRS),
ER_SRS_NOT_FOUND
则会发生错误。 - 如果提供了一种X或Y坐标的参数和值是
-inf
,+inf
,或NaN
,一个ER_DATA_OUT_OF_RANGE
发生错误。 如果经度或纬度参数超出范围,则会发生错误:
- 如果任何经度参数不在范围内(-180,180],
ER_LONGITUDE_OUT_OF_RANGE
则会发生错误。 - 如果任何纬度参数不在[-90,90]范围内,
ER_LATITUDE_OUT_OF_RANGE
则会发生错误。
显示的范围以度为单位。精确的范围限制由于浮点运算而略有不同。
- 如果任何经度参数不在范围内(-180,180],
- 否则,返回值为non-
NULL
。
这些函数可用于获取点属性:
ST_Latitude(p[,new_latitude_val])
使用单个参数表示具有地理空间参考系统(SRS)的有效
Point
对象p
,ST_Latitude()
将纬度值p
作为双精度数返回。使用可选的第二个参数表示有效的纬度值,
ST_Latitude()
返回一个Point
对象,如第一个参数,其纬度等于第二个参数。ST_Latitude()
如本节简介中所述处理其参数,此外,如果Point
对象有效但没有地理SRS,ER_SRS_NOT_GEOGRAPHIC
则会发生错误。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_Longitude(p[,new_longitude_val])
使用单个参数表示具有地理空间参考系统(SRS)的有效
Point
对象p
,ST_Longitude()
将经度值p
作为双精度数返回。使用可选的第二个参数表示有效的经度值,
ST_Longitude()
返回一个Point
对象,如第一个参数,其经度等于第二个参数。ST_Longitude()
如本节简介中所述处理其参数,此外,如果Point
对象有效但没有地理SRS,ER_SRS_NOT_GEOGRAPHIC
则会发生错误。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中。
ST_X(p[,new_x_val])
使用单个参数表示有效
Point
对象时p
,ST_X()
返回X坐标值p
作为双精度数字。从MySQL 8.0.12开始,X坐标被认为是指在Point
空间参考系统(SRS)定义中首先出现的轴。使用可选的第二个参数,
ST_X()
返回一个Point
对象,如第一个参数,其X坐标等于第二个参数。从MySQL 8.0.12开始,如果Point
对象具有地理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) | +------------------------------------------- +ST_Y(p[,new_y_val])
使用单个参数表示有效
Point
对象时p
,ST_Y()
将Y坐标值p
作为双精度数字返回。从MySQL 8.0.12开始,Y坐标被认为是指在Point
空间参考系统(SRS)定义中第二个出现的轴。使用可选的第二个参数,
ST_Y()
返回一个Point
对象,如第一个参数,其Y坐标等于第二个参数。从MySQL 8.0.12开始,如果Point
对象具有地理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) | +------------------------------------------- +