用python计算球体体积,python求球体体积
我想得到两个形式为9000n000e的坐标对作为字符串,并计算半径为R=6371km的球体上这些点之间的距离。在
网上找了两个公式,哈夫辛公式和余弦球定律,但是好像都不行。对于应该返回2*pi*R/4的90角,haversine正常工作,但是余数字符串失败,返回0。具有更多随机坐标的不同点在两种算法中都将返回误差值。哈弗辛太高,余弦太低。在
我的实现有错吗?还是选错了算法?在
我们如何进行这些计算(坐标和地球表面之间的距离)?在
是的,我知道我没查过N/S和E/W,但是测试的坐标都在东北半球。)
以下是我的Python 3代码。进口,重新
R=6371
pat=r(d ) ) ) d ) ) d ) ) d ) (([nsew])
定义(第一,第二):
defCoords_to_rads(s):
return[math . radians(int(d)int)m)/60int)s)/3600]
对于d,m,s,NSWEinre.findall(pat,s ) ]
y1,x1=Coords_to_rads(First))。
y2,x2=Coords_to_rads(秒))))))))))).
dx=x1 - x2
dy=y1 - y2
print(coordstring:,first, ,second).
打印(坐标弧度3360 ,y1,x1, ,y2,x2))
打印(x/y距离:),dy,dx)。
a=math . sin(dx/2)* 2 math . cos)x1)math . cos)x2)math . sin)dy/2)* * 2)
c=2 *数学。Atan2(math.sqrt(a),math.sqrt (1- a)))))))))))).
哈弗辛=R * c
余弦定律=math . acos(math . sin(x1)math . sin(x2))
数学cos(x1)数学cos(x1 ) ) r
print(HS:),round)哈弗辛,2),LOC:),round)余弦定律,2))
恢复健康
#返回余弦定律
if __name__==__main__ :
deftest(结果,正确) :
Print (result:,result))。
打印(正确:,正确))。
测试(距离)9000N00 0 e)、00 0 n、000e)、10007.5)
测试(距离)512848n00e)、46120n、690e)、739.2)
测试(距离)900 0 n00 0 e)、9000s、000w)、20015.1)
测试(距离(335131s,1511251e ,4046 22 n7359 3 w ),15990.2)))
有以下输出。
^{pr2}$
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。