wgs84 通过两坐标点计算两点间距离
(2015-09-22 18:00:57)
标签:
健康 |
计算方法一:
public double caulateLength(double x1,double
y1,double x2,double y2){
double r =
6378137;
double x11 =
x1 * Math.PI / 180;
double x21 =
x2 * Math.PI / 180;
double y11 =
y1 * Math.PI / 180;
double y21 =
y2 * Math.PI / 180;
double dx =
Math.abs(x11 - x21);
double dy =
Math.abs(y11 - y21);
double p =
Math.pow(Math.sin(dx / 2), 2) + Math.cos(x11) * Math.cos(x21) *
Math.pow(Math.sin(dy / 2), 2);
double d= r
* 2 * Math.asin(Math.sqrt(p));
return
d;
}
计算方法二:
public double getDistance(double aLon,double
alat,double zLon,double zlat) {
Long
length=null;
int Ri =
6371;
Double d = (
Ri *
Math.acos(Math.sin(alat*(Math.PI/180))*Math.sin(zlat*(Math.PI/180))
+
Math.cos(alat*(Math.PI/180))*Math.cos(zlat*(Math.PI/180))*Math.cos((aLon
- zLon)*(Math.PI/180))));
length =
Math.round(d*1000);
return
length;
}
其中两个方法的计算结果是不一致的,第一种方法计算的结果比较大,应该是最后乘以地球半径
计算方法二:
public double
其中两个方法的计算结果是不一致的,第一种方法计算的结果比较大,应该是最后乘以地球半径
后一篇:oracle函数介绍