前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[记录] 数据库中,根据经纬度,查询距离最近的地点

[记录] 数据库中,根据经纬度,查询距离最近的地点

作者头像
Alone88
发布2020-09-28 10:44:24
2.1K0
发布2020-09-28 10:44:24
举报
文章被收录于专栏:Alone88Alone88

方案1

通过 SQL 语句查询,数据库 : mysql

ER 图

er.png
er.png

查询语句:

 SELECT *
FROM city c2
WHERE (lat > 28.10656 - 1
    AND lat < 28.10656 + 1
    AND lon > 114.4458 - 1
    AND lon < 114.4458 + 1)
ORDER BY ACOS(SIN(28.10656 * 3.1415 / 180) * SIN(lat * 3.1415 / 180) + COS(28.10656 * 3.1415 / 180) * COS(lat * 3.1415 / 180) * COS(114.4458 * 3.1415 / 180 - lon * 3.1415 / 180)) * 6380 ASC
LIMIT 10

其中 lat 为 维度 ,lon 为 经度 , + 1 加一个经度或者维度,1经度大概等于 111 千米。 这句 sql 查询 该经纬度 111 km 范围内的地点

方案2

通过 Redis 的 geo Redis Geo 在 3.2+ 以上版本才有。 通过 geroadd 添加位置数据,georadius 查询范围内的数据

请参考:https://www.runoob.com/redis/redis-geo.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方案1
  • 方案2
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档