MySQL 基于经纬度信息的排序实现(mysql经纬度排序)

MySQL 基于经纬度信息的排序实现

随着现在地理位置和精度信息领域的发展,针对基于经纬度信息的排序查询,MySQL数据库也支持把地理坐标信息,如纬度、经度加入到数据库,用于实现基于经纬度的排序实现操作。

在MySQL中,实现基于经纬度信息的排序,需要安装支持空间函数的MySQL插件,比如:MySQL GIS模块。安装完成之后,可以将数据中的经纬度信息作为一个栏位类型,如GEOMETRY,可定义为POINT类型,来处理经纬度信息。比如:

“`sql

CREATE TABLE Points

(

id int NOT NULL AUTO_INCREMENT PRIMARY KEY,

Name varchar(80) not null,

geo GEOMETRY NOT NULL

);


在插入经纬度信息之后, MySQL支持多种基于经纬度的搜索函数,可以按照距离查询、支持Buffer查询、支持缓冲区、圆形范围查询,比如:根据一个指定的地点,查找距离该指定地点一定距离范围内的所有坐标点,这时可以使用MySQL中的ST_Distance函数,比如:

```sql
SELECT *
FROM Points
WHERE ST_Distance(geo, GeomFromText('POINt (112.22858 60.33490)'))

上述示例中,我们就根据112.22858,60.33490这个坐标点,查找距离该指定地点2000m距离内的坐标点信息。同时,MySQL还支持混合类型的排序操作,例如,我们可以实现先按照距离排序,再按照其他字段排序操作,比如:

“`sql

SELECT * FROM Points ORDER BY ST_Distance(geo, GeomFromText(‘POINt (112.22858 60.33490)’))),
Name DESC;


以上就是MySQL中实现基于经纬度信息的排序操作的一般思路,可以说MySQL在地理位置和精度信息的加工和存储方面,可以满足大多数应用场景。

数据运维技术 » MySQL 基于经纬度信息的排序实现(mysql经纬度排序)