用sql计算两个经纬度坐标距离(米数互转)
创始人
2025-05-30 04:58:16

目录

一、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 BYdistance 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 
FROMcyd_info s 
ORDER BYdistance 
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 
FROMcyd_info s 
ORDER BYdistance 
LIMIT 0,10;

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

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


相关内容

热门资讯

考试反思【精选5篇】 考试反思 篇一近期的一次考试结束后,我开始反思自己的考试经历,并思考如何提高自己的考试成绩。通过深入...
08年常州市中考优秀作文《告... 08年常州市中考优秀作文《告别英雄》 篇一告别英雄我国有许多英雄,他们为国家和人民做出了巨大的贡献。...
开在心中的花朵中考作文 开在心中的花朵中考作文  无论在学习、工作或是生活中,许多人都有过写作文的经历,对作文都不陌生吧,借...
上海热带风暴水上乐园一日狂欢... 上海热带风暴水上乐园一日狂欢-初二-说明文 篇一上海热带风暴水上乐园是一家位于上海的大型水上乐园,是...
28人2.5亿元存银行不翼而飞... 每经编辑|程鹏 据极目新闻报道,7月15日上午,“2.5亿存款不翼而飞”涉案储户起诉三家银行案在广...