【问题标题】:difference between bearing calculation methods轴承计算方法的区别
【发布时间】:2020-08-12 14:34:54
【问题描述】:

我希望能够使用 python 确定两个地理位置之间的角度。为了实现它,我考虑了movable-type 网站。在这个网站上查找 point1(42.386391,-71.019037) 和 point2(42.387728, -71.016153) 时,我得到了 57 度,这在谷歌地图中也完全有意义。

所以我已将网站上共享的公式转换为 python。 这是网站上的公式:

这是我的python代码:

def bearing1(lat1, long1, lat2, long2):
    cal = math.atan2(np.sin(long2-long1)*np.cos(lat2), np.cos(lat1)*np.sin(lat2)-np.sin(lat1)*np.cos(lat2)*np.cos(long2-long1))
    bearing = np.degrees(cal)
    return (360+bearing) % 360

但是当我运行这个函数时,我得到的角度是 357 度。

如果你认为红点是 point1,粉红色点是 point2,那么 57 度角比 357 度更有意义。 (绿色的X是我想学的角度)。

另外,我在this website 上尝试了相同的值,它又是 59 度,这还不错。显然,我的代码中遗漏了一些东西。所以你觉得我做错了什么?应该改变什么?

【问题讨论】:

  • lat1 等的 tp 以弧度表示。是吗?
  • 是的,它是@dmuir

标签: python math geolocation bearing


【解决方案1】:

我会小心 np.sin(long2-long1) = - np.sin(long1-long2) 可能会在计算 arctan(x/y) 与 np.atan2(x ,y)

不确定您的问题是否来自那里..

不确定我是否真的理解这个问题!您想通过直线前进(如地下)来计算沿朝向另一点的方向的某个点与地球的切线之间的角度?

【讨论】:

  • 对不起,我不够清楚。我添加了一个屏幕截图,也许它有助于描述我的问题。基本上我想学习面向方向。在我的计算中,我找到了 357,但正如你所看到的,它不一定是 357 之类的东西,它更接近于 50 左右。我对同样的问题进行了更多测试,我的脚本给出了完全不同的输出。因此,任何想法都可能对这个主题有所帮助。 (如果我不够清楚,请告诉我)
  • 是的,我玩过各种数学函数和减号语句。 (也像你说的那样尝试过),但不幸的是@Thibault Cimic 仍然没有变化
  • 嗯,我认为您所展示的网站通过考虑地球的圆度正在做更复杂的事情,而不是在 2D 表面上工作 在 2D 表面上会更容易:将 p1 转换为起源并说 p1(0,0) 和 p2(x2=42.387728-42.386391,-x1=71.016153-(-71.019037)),比 tan(teta)=x2/y2 和 teta = atan(x2/y2) 我得到25°:wolframalpha.com/input/…为什么说接近50?
  • 因为如果你看截图,我们可以说它大致在30到90度之间,绝对不是350度。我测试了更多位置的计算,当我期望看到大约 200-270 度时,我得到了 45 度,所以这可能不是我们想要的。
  • “图纸不是证据” - 世界上的每一位老师 :D 我很确定谷歌地图以一定的角度显示地球表面,这样你就可以从上方获得视觉“就像你是一只鸟什么的,这可能会与我们在屏幕截图上感知角度的方式发生变化
猜你喜欢
  • 1970-01-01
  • 2011-04-24
  • 1970-01-01
  • 2018-12-05
  • 2020-07-14
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
相关资源
最近更新 更多