python计算球坐标系的积分_计算球体上两个坐标之间的距离

该博客探讨了使用Python计算球体上两个坐标之间的距离的问题,作者遇到哈弗辛公式和余弦球定律在特定情况下的误差。文章提供了坐标转换和两个算法的实现代码,并展示了测试用例及其结果,寻求解决方案。
摘要由CSDN通过智能技术生成

我得到两个坐标对,形式为90°0′0″N 0°0′0″E作为字符串,并想计算半径R=6371km的球体上这些点之间的距离。在

我在网上找到了两个公式,哈弗辛公式和余弦球定律,但它们似乎不起作用。对于应返回2*pi*R / 4的90°角,haversine操作正确,但余弦失败并返回0。一个具有更多随机坐标的不同点在这两种算法中都会返回错误值:haversine太高,cosine太低。在

我的实现是错误的还是我选择了错误的算法?在

我应该如何进行这些计算(坐标对到地球表面的距离)?在

(是的,我知道我还没有检查N/S和E/W,但是测试的坐标都在东北半球。)

下面是我的Python 3代码:import math, re

R = 6371

PAT = r'(\d+)°(\d+)′(\d+)″([NSEW])'

def distance(first, second):

def coords_to_rads(s):

return [math.radians(int(d) +int(m)/60 +int(s)/3600) \

for d, m, s, nswe in re.findall(PAT, s)]

y1, x1 = coords_to_rads(first)

y2, x2 = coords_to_rads(second)

dx = x1 - x2

dy = y1 - y2

print("coord string:", first, "|", second)

print("c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值