用java写:求地球上任意两个点之间的距离,知道这两个点的经纬度
发布网友
发布时间:2022-04-07 15:17
我来回答
共3个回答
热心网友
时间:2022-04-07 16:47
距离可以用r*arccos[cos(y1)*cos(y2)*cos(x1x2)+sin(y1)*sin(y2)]来算
r是地球半径6370km,x是经度,y是纬度
注意角度单位的转换。Math类里的sin和cos函数的参数是以弧度为单位的角度,所以x1、x2、y1、y2要用弧度表示,但一般经纬度都是用角度表示(如X1=120 东经120度)就要化成弧度(x1*Pi/180)
而acos函数返回值正好是以弧度为单位的,刚好符合要求
如果你的代码里的lat1、lat2、lon1、lon2单位是角度,可以这么改
double radius=6371000;
double distance=radius*Math.acos((Math.cos(lat2*Math.PI/180)*Math.cos(lat2*Math.PI/180)*Math.cos(lon1*Math.PI/180-lon2*Math.PI/180)+Math.sin(lat1*Math.PI/180)*Math.sin(lat2*Math.PI/180)));
我算出来是903.9千米
热心网友
时间:2022-04-07 18:05
北京 116.407288 39.904549
北京市;东城区;台基厂头条东160米;中国太平洋经济合作全国委员会;中*控与裁军协会;
陕西 108.952736 34.264648
陕西省;西安市;新城区;新城国际(西安)东南110米;ATM(中国银行)西南110米;陕西三力工贸公司公共安全工程部东南90米;
你看看这两个点的距离是多少???
下边是我查到的东西。。。我算出来的和awnhdy给的公式算出来的差距挺大。。。。
北京西到西安铁路距离1200公里。
2 北京火车站---西安火车站地图直线距离929.1公里。
3 公路距离(北京火车站---西安火车站):
总距离962.04公里
热心网友
时间:2022-04-07 19:39
如果是同一纬度的话:纬度差.111.cos纬度数
否者没有纬度算不了