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

作者:Shawn 时间:2024-01-21 15:44:06 

建表


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)'));

注意必须使用 ST_GeomFromText 函数,且 POINT() 里面是:经度+空格+纬度

查询

1. 查看经纬度


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) < 1000 ORDER BY distant;


来源:https://segmentfault.com/a/1190000018072395

标签:MySQL,geometry,经纬度
0
投稿

猜你喜欢

  • mysql日志文件在哪 如何修改MySQL日志文件位置

    2024-01-22 22:09:14
  • pytorch掉坑记录:model.eval的作用说明

    2023-01-07 11:52:18
  • python 判断linux进程,并杀死进程的实现方法

    2022-06-24 22:31:54
  • 细品Dreamweaver MX 2004内建FW技术

    2010-09-02 12:38:00
  • Python中operator模块的操作符使用示例总结

    2023-01-31 12:32:14
  • ES6正则表达式扩展笔记

    2024-04-18 10:00:12
  • Python Pandas list列表数据列拆分成多行的方法实现

    2021-04-20 18:56:01
  • Python解惑之True和False详解

    2022-06-02 20:28:03
  • 简单谈谈mysql左连接内连接

    2024-01-13 06:54:24
  • Django用内置方法实现简单搜索功能的方法

    2021-09-15 21:02:52
  • Python 实现图像合成微缩效果

    2023-08-19 22:15:16
  • Python绘制股票移动均线的实例

    2023-07-15 10:31:06
  • SQLserver 实现分组统计查询(按月、小时分组)

    2024-01-24 12:52:15
  • Golang在Mac、Linux、Windows下如何交叉编译的实现

    2024-02-23 06:00:02
  • Selenium自动化测试工具使用方法汇总

    2022-02-10 16:26:21
  • 详解Python3定时器任务代码

    2023-10-15 14:50:26
  • Web 开发常用工具 大家自己查找下载

    2022-09-20 23:58:30
  • TypeScript中泛型的使用详细讲解

    2024-04-17 10:35:23
  • 秒杀场景的缓存、队列、锁使用Redis优化设计方案

    2023-05-29 19:07:18
  • 如何使用PyCharm及常用配置详解

    2021-09-22 14:59:47
  • asp之家 网络编程 m.aspxhome.com