【发布时间】:2022-08-19 01:03:38
【问题描述】:
例如,就彼此相对接近的地理坐标(经度、纬度)而言,我得到了三个 GPS 点:
p1 = (p1_lon, p1_lat)
p2 = (p2_lon, p2_lat)
p3 = (p3_lon, p3_lat)
假设存在从p1 到p2(称为段C)的路径,然后是从p2 到p3(称为段A)的路径。然后假设我画一条从p1 到p3 的直线(称为段B)。如何计算转角?是在段 C 和 A 之间形成的角度(即相反的段 B)。或者我应该从 180 度(或np.pi 弧度)中减去这个角度以获得转角?
另外,就上述角度的计算而言,我假设三角形的余弦定律是必需的?
B**2 = A**2 + C**2 - 2*A*C*cos(theta)
其中theta 是我们正在求解的角度。所以重新排列方程,我们得到:
theta = np.arccos((B**2 - A**2 - C**2)/(-2*A*C))
但我得到nan。我被引导相信使用余弦或反余弦是有问题的,尤其是对于小距离/角度。我目前正在使用测地线距离,我认为这是测量两个地理坐标之间的距离时最准确的距离。我想我在某处读过关于偏距的信息?但我不确定它是什么以及用于测量距离是否准确。它会帮助计算theta 更容易和更快地避免nans。任何意见是极大的赞赏。谢谢你。
-
使用测地线库怎么样?例如地理库。无需重新发明轮子。
-
@Thinko 对不起,我不关注。我按照您的建议查看了这个库:geographiclib.sourceforge.io/html/python/code.html,但它似乎只计算距离/测地线距离。但是,我已经在使用 geopy 的方法了。所以测量测地线距离不是问题。我的问题是如何计算转角。
-
不清楚你想要什么角度。我写了答案,但重新阅读问题,我不确定它是否满足您的需求。能不能给个简单的图?
-
@M.Fire,GeographicLib 不仅测量距离,还计算从一个位置到另一个位置时的初始和最终航向。当您知道航向时,您可以计算转角。
标签: python-3.x geometry geospatial trigonometry angle