当前位置: 首页 > article >正文

用sql计算两个经纬度坐标距离(米数互转)

目录

一、sql示例(由近到远)

二 、参数讲解

三、查询效果 - 距离(公里 / 千米)

 四、查询效果 - 距离(米)

 五、距离四舍五入保留后2位小数(java)


一、sql示例(由近到远)

SELECT s.*,(6378.137 * acos (
			cos(radians( 传递的纬度值 )) * 
			cos(radians( s.字段经度 )) * 
			cos(radians( s.字段纬度 ) - radians( 传递的经度值 )) + 
			sin(radians( 传递的纬度值 )) * 
			sin(radians( s.字段经度 )))) AS distance 
FROM
	表名 s 
ORDER BY
	distance ASC
LIMIT 0,10;

二 、参数讲解

参数 / 函数说明
6378.137地球赤道半径(单位为千米)
acos标量数值函数,返回给定余弦的弧余弦(以弧度为单位)
cos标量数值函数,返回角度的余弦值(以弧度为单位)
sin标量数值函数,返回角度的正弦值(以弧度为单位)
radians将度数转换为弧度的数值函数

三、查询效果 - 距离(公里 / 千米)

SELECT s.area_name,s.cyd_name,s.cyd_add,s.zb_n,s.zb_s,(6378.137 * acos (
			cos(radians( 38.02212 )) * 
			cos(radians( s.zb_s )) * 
			cos(radians( s.zb_n ) - radians( 114.45780 )) + 
			sin(radians( 38.02212 )) * 
			sin(radians( s.zb_s )))) AS distance 
FROM
	cyd_info s 
ORDER BY
	distance 
LIMIT 0,10;

 四、查询效果 - 距离(米)

只需要将距离distance(公里、千米)转换一下就行(*1000

SELECT s.area_name,s.cyd_name,s.cyd_add,s.zb_n,s.zb_s,(6378.137 * acos (
			cos(radians( 38.02212 )) * 
			cos(radians( s.zb_s )) * 
			cos(radians( s.zb_n ) - radians( 114.45780 )) + 
			sin(radians( 38.02212 )) * 
			sin(radians( s.zb_s )))) * 1000 AS distance 
FROM
	cyd_info s 
ORDER BY
	distance 
LIMIT 0,10;

 五、距离四舍五入保留后2位小数(java)

Double format = Double.parseDouble(String.format("%.1f", distance));



http://www.kler.cn/a/1320.html

相关文章:

  • Postman接口测试05|实战项目笔记
  • 人工智能-数据分析及特征提取思路
  • C++例程:使用I/O模拟IIC接口(6)
  • 电脑提示directx错误导致玩不了游戏怎么办?dx出错的解决方法
  • STM32的存储结构
  • WEB前端-2
  • day10-字符串作业1
  • C语言的灵魂---指针(基础)
  • MultipartEntityBuilder实现多附件上传
  • day10-字符串作业2
  • spring三级缓存以及@Async产生循环引用
  • 【Kubernetes】第二十八篇 - 实现自动构建部署
  • 枚举
  • 计算机组成原理笔记——计算机性能指标(CPI、IPS、MIPS等)
  • Vue项目结合Turn.js制作翻页动画,项目部署发布,从零到1
  • 自主HttpServer实现(C++实战项目)
  • 带你了解Redis及安装Redis的全过程
  • mongodb文档操作1
  • 【C语言经典例题】求最小公倍数
  • 长肥网络与TCP的长肥管道
  • 漫画:什么是选择排序?
  • 比df更好用的命令!
  • 一行代码“黑”掉任意网站
  • 关键字 const
  • 没有关系的话,那就去建立关系吧
  • 各种交叉编译工具链的区别