登录
首页 >  数据库 >  MySQL

使用MySQL的geometry类型处理经纬度距离问题

来源:SegmentFault

时间:2023-01-26 19:58:26 433浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是数据库学习者,那么本文《使用MySQL的geometry类型处理经纬度距离问题》就很适合你!本篇内容主要包括使用MySQL的geometry类型处理经纬度距离问题,希望对大家的知识积累有所帮助,助力实战开发!

建表

CREATE TABLE `map` (
  `id` int(11) NOT NULL,
  `address` varchar(255) NOT NULL DEFAULT '',
  `location` geometry NOT NULL,
  PRIMARY KEY (`id`),
  SPATIAL KEY `idx_location` (`location`)
)

插入

INSERT INTO map (id, address, location) VALUES (1, 'somewhere', ST_GeomFromText('POINT(121.366961 31.190049)'));
注意必须使用
SELECT address, ST_AsText(location) AS location FROM map;

2. 计算两点之间的距离

SELECT ST_Distance_Sphere(POINT(121.590347, 31.388094),location) AS distant FROM map;
算出来的结果,单位是米
注意现在POINT()里面经纬度之间是逗号分隔的

3. 查询距离小于1000m的地点,并由远及近排序

SELECT id, address, ST_Distance_Sphere(POINT(121.590347, 31.388094),location) AS distant FROM map WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),location) 

到这里,我们也就讲完了《使用MySQL的geometry类型处理经纬度距离问题》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于mysql的知识点!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表