【发布时间】:2011-09-08 12:17:06
【问题描述】:
我在 MySQL 中存储 lat/long 对作为一个点,使用类似的东西:
GeomFromText('POINT(32 -122)')
鉴于这一点,我如何检索单个 X/Y 坐标?
【问题讨论】:
标签: mysql
我在 MySQL 中存储 lat/long 对作为一个点,使用类似的东西:
GeomFromText('POINT(32 -122)')
鉴于这一点,我如何检索单个 X/Y 坐标?
【问题讨论】:
标签: mysql
假设您将GeomFromText('POINT(32 -122)') 作为名为@987654322@ 的列存储在名为MY_TABLE 的表中。
获取点数据的方法有多种。
首先检查 MySQL 版本
SELECT VERSION()
对于 MySQL 5.6 或更早的版本使用
SELECT X(MY_POINT) AS Latitude, Y(MY_POINT) AS Longitude FROM MY_TABLE
对于 MySQL 5.7 版本使用,虽然之前的命令也能识别。
SELECT ST_X(MY_POINT) AS Latitude, ST_Y(MY_POINT) AS Longitude FROM MY_TABLE
对于 MySQL 8.0 版本使用,虽然之前的命令也能识别。主要区别在于此命令用于具有地理空间参考系统 (SRS) 的点对象。
SELECT ST_Latitude(MY_POINT) AS Latitude, ST_Longitude(MY_POINT) AS Longitude FROM MY_TABLE
希望这会有所帮助。
【讨论】:
假设您将GeomFromText('POINT(32 -122)') 作为名为@987654322@ 的列存储在名为MY_TABLE 的表中。
获取X 坐标(在本例中将返回32):
SELECT ST_X(MY_POINT) as latitude FROM MY_TABLE;
获取Y 坐标(在本例中将返回-122):
SELECT ST_Y(MY_POINT) as longitude FROM MY_TABLE;
重要提示:在 5.6 版之前,使用 X() 和 Y() 代替 ST_X() 和 ST_Y()。
【讨论】: