以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]数值计算问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=52295)

--  作者:gaixuebo
--  发布时间:2014/6/12 17:55:00
--  [求助]数值计算问题

已知A,B两点的经纬度,A为(第一列,第二列),B为(第三列,第四列)。算两点在地球上的距离。

 

 

公式是这个:


R*arccos(cos(lat1*pi()/180 )*cos(lat2*pi()/180)*cos(lng1*pi()/180 -lng2*pi()/180)+
sin(lat1*pi()/180 )*sin(lat2*pi()/180))
其中,R=6370996.81;//地球半径,pi()为圆周率π,(lng1,lat1),(lng2,lat2)分别是百度地图的两个经纬度,带入数值计算即可

 

 

 

= 6370996.81*arccos(cos([第二列]*3.1415926/180 )*cos([第四列]*3.1415926/180)*cos([第一列]*3.1415926/180 -[第二列]*3.1415926/180)+
sin([第三列]*3.1415926/180 )*sin([第四列]*3.1415926/180))

 

为什么得不出数据呢?


--  作者:Bin
--  发布时间:2014/6/12 17:59:00
--  
狐表没有arccos 这个函数吧

你分段计算看看,是哪一段有问题

--  作者:gaixuebo
--  发布时间:2014/6/12 18:04:00
--  

请问大神,那怎么实现我这个公式的计算呢?能帮忙写一个吗?图片点击可在新窗口打开查看


--  作者:有点甜
--  发布时间:2014/6/12 18:08:00
--  

如果没记错公式,应该是这样

 

Dim x1 As Double = 1
Dim y1 As Double = 1
Dim x2 As Double = 2
Dim y2 As Double = 2

Dim rad As Double = 6371
Dim p1X As Double = X1 / 180 * Math.PI
Dim p1Y As Double = Y2 / 180 * Math.PI
Dim p2X As Double = X2 / 180 * Math.PI
Dim p2Y As Double = Y2 / 180 * Math.PI
Dim result As Double = Math.Acos(Math.Sin(p1Y) * Math.Sin(p2Y) + Math.Cos(p1Y) * Math.Cos(p2Y) * Math.Cos(p2X - p1X)) * rad
msgbox(result)