一个 Point
由 X 和 Y 坐标组成,可以使用 ST_X()
和 ST_Y()
函数分别获取。这些函数也允许一个可选的第二个参数,该参数指定 X 或 Y 坐标值,在这种情况下,函数结果是从第一个参数中修改了相应坐标的 Point
对象。
对于具有地理空间参考系统(SRS)的 Point
对象,可以使用 ST_Longitude()
和 ST_Latitude()
函数分别获取经度和纬度。这些函数也允许一个可选的第二个参数,该参数指定经度或纬度值,在这种情况下,函数结果是从第一个参数中修改了经度或纬度的 Point
对象。
除非另有指定,本节中的函数将其几何参数处理如下:
-
如果任何参数为
NULL
,则返回值为NULL
。 -
如果任何几何参数不是有效的
Point
对象,将发生ER_UNEXPECTED_GEOMETRY_TYPE
错误。 -
如果任何几何参数不是语法正确的几何体,将发生
ER_GIS_INVALID_DATA
错误。 -
如果任何几何参数是语法正确的几何体,但在未定义的空间参考系统(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
错误。
显示的范围以度为单位。由于浮点数算术,实际范围限制略有偏差。
-
-
否则,返回值为非
NULL
。
以下函数可用于获取点属性:
-
ST_Latitude(
p
[,new_latitude_val
])使用单个参数表示有效的
Point
对象p
,该对象具有地理空间参考系统(SRS),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) | +---------------------------------+
-
ST_Longitude(
p
[,new_longitude_val
])使用单个参数表示有效的
Point
对象p
,该对象具有地理空间参考系统(SRS),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) | +----------------------------------+
-
使用单个参数表示有效的
Point
对象p
,ST_X()
返回p
的 X 坐标值作为双精度数字。X 坐标被认为是指Point
空间参考系统(SRS)定义中的第一个轴。使用可选的第二个参数,
ST_X()
返回一个Point
对象,类似于第一个参数,但其 X 坐标等于第二个参数。如果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) | +-------------------------------------------+
-
使用单个参数表示有效的
Point
对象p
,ST_Y()
返回p
的 Y 坐标值作为双精度数字。Y 坐标被认为是指Point
空间参考系统(SRS)定义中的第二个轴。使用可选的第二个参数,
ST_Y()
返回一个Point
对象,类似于第一个参数,但其 Y 坐标等于第二个参数。如果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) | +-------------------------------------------+