如何使用SQL语句根据经纬度计算距离
本文介绍如何通过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语句根据经纬度计算距离相关推荐
- mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序。附近的人,附近商店等功能,一个sql就搞定
mysql数据库根据经纬度计算距离,获取离我最近的地点列表,并排序 附近的人,附近商家等功能,顺序显示顺序是由近到远的,便利用户查看和判断,sql实现如下. StringBuilder sb=new ...
- mysql,php和js根据经纬度计算距离
根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...
- php mysql 经纬度_mysql,php和js根据经纬度计算距离
根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...
- PostgreSQL(PgSQL)根据经纬度计算距离
今天在使用PostgreSQL的PostGIS功能来实现根据经纬度计算距离和计算某一经纬度附近X米之内的地点,发现了一些错误,实现SQL语句和更正的语句如下: 计算两经纬度之间距离: select S ...
- php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序
#1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...
- django 按经纬度计算距离排序
django 按经纬度计算距离排序 需求: 实现离用户距离最近的店铺排序 公式: 公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1–Lat2 为 ...
- 根据两点间的经纬度计算距离
/** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($l ...
- 百度地图经纬度计算距离(Java)
百度地图Java经纬度计算距离 阅读百度地图Web服务api文档 Maven依赖 百度地图经纬度工具类 阅读百度地图Web服务api文档 Maven依赖 <!--baidu--><d ...
- 根据两点经纬度计算距离
根据两点经纬度计算距离 这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的 假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等 ...
- 经纬度计算距离的公式
经纬度计算距离的公式是: 设点A(lat1, lon1),点B(lat2, lon2) d = R * arccos(sin(lat1) * sin(lat2) + cos(lat1) * cos(l ...
最新文章
- CSS之定位(固定定位)
- Python Lambda函数的几种使用方法
- Vue项目中使用svg文件
- ASP.NET Core服务器综述
- linux运行好麻烦,解析用Linux非常困难、必须用命令行、很老又丑陋及无法运行游戏...
- 【dp】POJ-2817
- Socket编程入门
- AWT_方位布局(Java)
- 关于解决vivado error:add_1 must be in range [-1,DEPTH-1] 问题
- excel粘贴时出现故障_Excel常见问题及解决办法汇总
- JITSI开源视频直播
- python买水果题_Python练习题4.9查询水果价格
- Matlab中的ans小结
- 计算机专业需不需要英语翻译,谈计算机专业英语翻译的方法.doc
- MySQL 8 的学习——4从表中检索信息
- docx4j 对比word
- 个人收款码跟聚合码的区别
- UL测试报告办理流程,UL1017测试范围有那些?
- vue项目接入监控视频(360浏览器)
- Article:AI领域2021年度总结与2022年度展望:多模态人工智能起飞、万亿参数模型的爆发、生成模型在音乐电影制作上的进展、Transformer架构正在以一己之力统一AI江湖、AI法律监管
热门文章
- 【转载】html中自定义字体
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- 使用python gzip进行解压和压缩
- studio和solo哪个好_beats studio3 和solo3的区别再哪里?
- programer2012
- uni-app引入阿里Icon 图标方式(CustomIcon 扩展自定义图标库)
- linux搭建nacos集群
- VMware搭建linux集群
- 《大话数据结构(C#实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数组+栈+链表+图+队列+树+堆+二叉树+哈希表+立钻哥哥+==)
- 移动端Web组件-Dialog对话框