以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 求助算法~~~~~~~~~~~~~~~~~~~~  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=57011)

--  作者:qq121454970
--  发布时间:2014/9/16 18:56:00
--  [求助] 求助算法~~~~~~~~~~~~~~~~~~~~


图片点击可在新窗口打开查看此主题相关图片如下:a.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:b.jpg
图片点击可在新窗口打开查看

 

 


求助。。。。这个里程数是怎么算出来的?

[此贴子已经被作者于2014-9-16 18:55:52编辑过]

--  作者:有点甜
--  发布时间:2014/9/16 19:40: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


--  作者:qq121454970
--  发布时间:2014/9/16 20:18:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:c.png
图片点击可在新窗口打开查看
哎,不太明白,答案好像不对
--  作者:有点甜
--  发布时间:2014/9/16 20:22:00
--  
 肯定有偏差, rad的值是地球的半径,越精确越准
--  作者:有点甜
--  发布时间:2014/9/16 20:50:00
--  

 抱歉,重新查了一下公司,要这样写!!!

 

Dim x1 As Double = 37.856862
Dim y1 As Double = 112.525760
Dim x2 As Double = 37.857587
Dim y2 As Double = 112.525683


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 a As Double = p1X - p2X
Dim b As Double = p1Y - p2Y
Dim s As Double = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) + Math.Cos(p1X)*Math.Cos(p2X)*Math.Pow(Math.Sin(b/2),2))) * rad
output.show(s)


--  作者:qq121454970
--  发布时间:2014/9/19 12:18:00
--  
谢谢