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


  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luvJie-7c

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值