mysql lbs 计算距离_使用mysql的lbs根据经纬度计算距离
精算經緯度(qx,qy)點附近的停車場,根據表現有的經緯度計算:sql如下
select
test,
round(
6378.138 * 2 * asin(
sqrt(
pow(
sin(
(#{qy} * pi() / 180 - Y * pi() / 180) / 2
) ,
2
) + cos(#{qy} * pi() / 180) * cos(Y * pi() / 180) * pow(
sin(
(#{qx} * pi() / 180 - X * pi() / 180) / 2
) ,
2
)
)
) * 1000
) AS PARK_DISTANCE? //戶和停車場的距離
from tb_bis_merchant_park
計算兩點經緯度的距離:
//地球平均半徑
private static final double EARTH_RADIUS = 6378137;
//把經緯度轉為度(°)
private static double rad(double d){
return d * Math.PI / 180.0;
}
/**
* 根據兩點間經緯度坐標(double值),計算兩點間距離,單位為米
* @param lng1
* @param lat1
* @param lng2
* @param lat2
* @return
*/
public static double getDistance(double lng1, double lat1, double lng2, double lat2){
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
double s = 2 * Math.asin(
Math.sqrt(
Math.pow(Math.sin(a/2),2)
+ Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)
)
);
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
/**
* test
* @param args
*/
public static void main(String[] args){
double distance = getDistance(113.865074,22.55441574,114.065269,22.544298);
System.out.println("Distance is:"+ new BigDecimal(distance).movePointLeft(3).setScale(1, BigDecimal.ROUND_HALF_UP));
}
總結
以上是生活随笔為你收集整理的mysql lbs 计算距离_使用mysql的lbs根据经纬度计算距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zipoutputstream压缩文件响
- 下一篇: mysql out返回结果_在MySQL