用java写:求地球上任意两个点之间的距离,知道这两个点的经纬度

北京116.40728839.904549北京市;东城区;台基厂头条东160米;中国太平洋经济合作全国委员会;中国军控与裁军协会;陕西108.95273634.26464... 北京 116.407288 39.904549
北京市;东城区;台基厂头条东160米;中国太平洋经济合作全国委员会;中国军控与裁军协会;

陕西 108.952736 34.264648
陕西省;西安市;新城区;新城国际(西安)东南110米;ATM(中国银行)西南110米;陕西三力工贸公司公共安全工程部东南90米;
你看看这两个点的距离是多少???
下边是我查到的东西。。。我算出来的和awnhdy给的公式算出来的差距挺大。。。。
北京西到西安铁路距离1200公里。
2 北京火车站---西安火车站地图直线距离929.1公里。

3 公路距离(北京火车站---西安火车站):
总距离962.04公里

double radius=6371000;
double distance=radius*Math.acos((Math.cos(lat2)*Math.cos(lat2)*Math.cos(lon1-lon2)+Math.sin(lat1)*Math.sin(lat2)));
这是我的计算公式,在java里,结果是5995217.512567182m
展开
awnhdy
2010-10-01 · TA获得超过1587个赞
知道小有建树答主
回答量:277
采纳率:0%
帮助的人:370万
展开全部
距离可以用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千米
甜欣花儿
2010-09-28
知道答主
回答量:49
采纳率:0%
帮助的人:18.8万
展开全部
北京 116.407288 39.904549
北京市;东城区;台基厂头条东160米;中国太平洋经济合作全国委员会;中国军控与裁军协会;

陕西 108.952736 34.264648
陕西省;西安市;新城区;新城国际(西安)东南110米;ATM(中国银行)西南110米;陕西三力工贸公司公共安全工程部东南90米;
你看看这两个点的距离是多少???
下边是我查到的东西。。。我算出来的和awnhdy给的公式算出来的差距挺大。。。。
北京西到西安铁路距离1200公里。
2 北京火车站---西安火车站地图直线距离929.1公里。

3 公路距离(北京火车站---西安火车站):
总距离962.04公里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luoxidi204
2010-09-28 · TA获得超过101个赞
知道答主
回答量:64
采纳率:0%
帮助的人:51.9万
展开全部
如果是同一纬度的话:纬度差.111.cos纬度数
否者没有纬度算不了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式