爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4775|回复: 8

【源码】球面距离公式计算给定两点的距离

[复制链接]

新浪微博达人勋

发表于 2012-6-5 09:20:34 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
      在业务上经常需要计算2个地点的距离,如台风路径预报误差。两点之间的距离实际上是球面距离,参考了网上搜索后,编写了VB源程序,供大家参考。yry,2012.5 Haikou,以下是我的新浪博客相关内容:

http://blog.sina.com.cn/s/blog_0347471501014zu8.html

  1. Const EARTH_RADIUS = 6378.137
  2. Const pi = 3.1415926535898
  3. Public IS_stationP As Boolean

  4. Private Sub Command1_Click()
  5. Dim lon1 As Double, lon2 As Double, lat1 As Double, lat2 As Double
  6. lon1 = Val(Text1)
  7. lat1 = Val(Text2)
  8. lon2 = Val(Text3)
  9. lat2 = Val(Text4)
  10. Lab_距离.Caption = "近似距离: " & Format(GetDistance(lat1, lon1, lat2, lon2), "####.0") & " 公里"
  11. End Sub

  12. Function rad(ByVal d As Double) As Double
  13. rad = d * pi / 180
  14. End Function

  15. '知道两点经纬度,求近似距离
  16. Public Function GetDistance(lat1 As Double, lng1 As Double, lat2 As Double, lng2 As Double) As Double
  17. Dim radlat1 As Double, radlat2 As Double
  18. Dim a As Double, b As Double, s As Double, Temp As Double
  19. radlat1 = rad(lat1)
  20. radlat2 = rad(lat2)
  21. a = radlat1 - radlat2
  22. b = rad(lng1) - rad(lng2)
  23. Temp = Sqr(Sin(a / 2) ^ 2 + Cos(radlat1) * Cos(radlat2) * Sin(b / 2) ^ 2)
  24. s = 2 * Atn(Temp / Sqr(-Temp * Temp + 1))     '没有反正弦函数,网上找了个
  25. s = s * EARTH_RADIUS
  26. GetDistance = s
  27. End Function





dis.bmp

评分

参与人数 1金钱 +15 贡献 +5 体力 +200 收起 理由
mofangbao + 15 + 5 + 200

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-6-5 10:45:42 | 显示全部楼层
支持啦,记得以前那个气象计算器里面也有个这个功能,谢谢分享源码!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-6-6 08:34:43 | 显示全部楼层
好,我也觉得好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-26 13:55:51 | 显示全部楼层
,学习啦!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-9-17 11:08:43 | 显示全部楼层
好像不对   
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-11-19 09:32:52 | 显示全部楼层
感谢分享。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-27 18:07:38 | 显示全部楼层
不对  这个
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-31 10:40:10 | 显示全部楼层
学习,学习。希望能看懂代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-6-23 12:01:24 | 显示全部楼层
这个和micaps上的功能相似。。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表