本文介绍如何通过SQL语句根据经纬度计算距离。SQL语句中要到了ACOS、COS、SIN、RADIANS等SQL函数。

1、创建测试表

执行以下SQL语句创建测试表。

CREATE TABLE `test`  (`id` bigint(20) NOT NULL COMMENT '编号',`lon` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '经度',`lat` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '纬度',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

2、插入模拟数据

执行以下SLQ创建模拟数据。

INSERT INTO `test` VALUES (1, '113.66072', '34.79977');
INSERT INTO `test` VALUES (2, NULL, NULL);
INSERT INTO `test` VALUES (3, '113.42175853602474', '34.811229145387216');
INSERT INTO `test` VALUES (4, '113.73812176197008', '34.783202623364886');
INSERT INTO `test` VALUES (5, '113.65', '34.76');
INSERT INTO `test` VALUES (6, '113.65', '34.76');
INSERT INTO `test` VALUES (7, '113.65', '34.76');
INSERT INTO `test` VALUES (8, '113.673302', '34.804753');
INSERT INTO `test` VALUES (9, '34.79977', '34.81597096304563');

执行成功后表结构数据如下。

3、根据经纬度计算距离

假设当前的位置为【113.65、34.76】,则可以通过以下SQL计算当前位置与每条记录之间的距离。

SELECT *, ACOS(COS(RADIANS(34.76)) *COS(RADIANS(lat)) *COS(RADIANS(lon) - RADIANS(113.65)) +SIN(RADIANS(34.76)) *SIN(RADIANS(lat))) * 6378 as distance
FROM test

执行结果如下,distance字段即为距离值,单位千米(km),如需转换为米(m),则乘以1000就行了。


新时代农民工 (QQ:277718357) 点击关注下方↓微信公众号:程序进阶之路,了解更多技术知识。

如何使用SQL语句根据经纬度计算距离相关推荐

  1. mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序。附近的人,附近商店等功能,一个sql就搞定

    mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序 附近的人,附近商家等功能,顺序显示顺序是由近到远的,便利用户查看和判断,sql实现如下. StringBuilder sb=new ...

  2. mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

  3. php mysql 经纬度_mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

  4. PostgreSQL(PgSQL)根据经纬度计算距离

    今天在使用PostgreSQL的PostGIS功能来实现根据经纬度计算距离和计算某一经纬度附近X米之内的地点,发现了一些错误,实现SQL语句和更正的语句如下: 计算两经纬度之间距离: select S ...

  5. php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序

    #1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...

  6. django 按经纬度计算距离排序

    django 按经纬度计算距离排序 需求: 实现离用户距离最近的店铺排序 公式: 公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1–Lat2 为 ...

  7. 根据两点间的经纬度计算距离

    /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...

  8. 百度地图经纬度计算距离(Java)

    百度地图Java经纬度计算距离 阅读百度地图Web服务api文档 Maven依赖 百度地图经纬度工具类 阅读百度地图Web服务api文档 Maven依赖 <!--baidu--><d ...

  9. 根据两点经纬度计算距离

    根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等 ...

  10. 经纬度计算距离的公式

    经纬度计算距离的公式是: 设点A(lat1, lon1),点B(lat2, lon2) d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(l ...

最新文章

  1. CSS之定位(固定定位)
  2. Python Lambda函数的几种使用方法
  3. Vue项目中使用svg文件
  4. ASP.NET Core服务器综述
  5. linux运行好麻烦,解析用Linux非常困难、必须用命令行、很老又丑陋及无法运行游戏...
  6. 【dp】POJ-2817
  7. Socket编程入门
  8. AWT_方位布局(Java)
  9. 关于解决vivado error:add_1 must be in range [-1,DEPTH-1] 问题
  10. excel粘贴时出现故障_Excel常见问题及解决办法汇总
  11. JITSI开源视频直播
  12. python买水果题_Python练习题4.9查询水果价格
  13. Matlab中的ans小结
  14. 计算机专业需不需要英语翻译,谈计算机专业英语翻译的方法.doc
  15. MySQL 8 的学习——4从表中检索信息
  16. docx4j 对比word
  17. 个人收款码跟聚合码的区别
  18. UL测试报告办理流程,UL1017测试范围有那些?
  19. vue项目接入监控视频(360浏览器)
  20. Article:AI领域2021年度总结与2022年度展望:多模态人工智能起飞、万亿参数模型的爆发、生成模型在音乐电影制作上的进展、Transformer架构正在以一己之力统一AI江湖、AI法律监管

热门文章

  1. 【转载】html中自定义字体
  2. 基于Hadoop 的分布式网络爬虫技术学习笔记
  3. 使用python gzip进行解压和压缩
  4. studio和solo哪个好_beats studio3 和solo3的区别再哪里?
  5. programer2012
  6. uni-app引入阿里Icon 图标方式(CustomIcon 扩展自定义图标库)
  7. linux搭建nacos集群
  8. VMware搭建linux集群
  9. 《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)
  10. 移动端Web组件-Dialog对话框