pyorbital 中的经度计算错误
Wrong longitude calculation in pyorbital
在玩 pyorbital
时,我注意到函数 get_lonlatalt()
对我来说似乎 return 不是正确的经度值。所以我将 returned Lon/Lat/Alt 与其他跟踪软件进行了比较:
returned 的海拔高度和纬度是正确的,但经度似乎是关闭的(使用下面的代码示例函数 returns 比国际空间站的实际位置低大约 15 度是现在)。
下面的代码每秒将 ISS 的 Lat/Lon/Alt 打印到控制台一次,可用于比较位置,例如http://www.n2yo.com/?s=25544
有没有人对如何解决 this/why 这种情况有任何建议?
P.S。不幸的是,Whosebug 不允许我在 1500 声望之前创建标签 "pyorbital"
..
from pyorbital.orbital import Orbital
from datetime import datetime
import time
tle_object_name = "ISS (ZARYA)"
sat = Orbital(tle_object_name) #Fetches TLE from the internet by itself
while True:
now = datetime.utcnow()
lon, lat, alt = sat.get_lonlatalt(now)
print "{} UTC at {}E, {}N, {}km".format(now, round(lon, 3), round(lat, 3), round(alt, 3))
time.sleep(1)
我刚刚试过了,似乎效果很好。您确定您查看的是您提供的网站上的卫星位置,而不是您自己的位置吗?我一开始也犯了同样的错误
编辑:
所以我深入研究了源代码,试图找出为什么只有 lon 显示这种行为。
在orbital.py中,函数astronomy.gmst()
仅用于计算lon。在 astronomy.py 中,gmst()
调用 jdays2000()
,我们在其中看到这行代码:np.datetime64('2000-01-01T12:00')
。检查 numpy.datetime (https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.datetime.html), we see that the way this function works (timezone wise) was changed numpy 1.11 (2016), and pyorbital also took this change into account some time later (https://github.com/pytroll/pyorbital/commit/08bb5be87c65412af5d7293c00fa2680b068d150) 的文档。
所以我猜要么你的 pyorbital 包不是最新的,要么你的 numpy 不是最新的。
我的版本(numpy==1.14.2,pyorbital==1.3.1)
在玩 pyorbital
时,我注意到函数 get_lonlatalt()
对我来说似乎 return 不是正确的经度值。所以我将 returned Lon/Lat/Alt 与其他跟踪软件进行了比较:
returned 的海拔高度和纬度是正确的,但经度似乎是关闭的(使用下面的代码示例函数 returns 比国际空间站的实际位置低大约 15 度是现在)。
下面的代码每秒将 ISS 的 Lat/Lon/Alt 打印到控制台一次,可用于比较位置,例如http://www.n2yo.com/?s=25544
有没有人对如何解决 this/why 这种情况有任何建议?
P.S。不幸的是,Whosebug 不允许我在 1500 声望之前创建标签 "pyorbital"
..
from pyorbital.orbital import Orbital
from datetime import datetime
import time
tle_object_name = "ISS (ZARYA)"
sat = Orbital(tle_object_name) #Fetches TLE from the internet by itself
while True:
now = datetime.utcnow()
lon, lat, alt = sat.get_lonlatalt(now)
print "{} UTC at {}E, {}N, {}km".format(now, round(lon, 3), round(lat, 3), round(alt, 3))
time.sleep(1)
我刚刚试过了,似乎效果很好。您确定您查看的是您提供的网站上的卫星位置,而不是您自己的位置吗?我一开始也犯了同样的错误
编辑:
所以我深入研究了源代码,试图找出为什么只有 lon 显示这种行为。
在orbital.py中,函数astronomy.gmst()
仅用于计算lon。在 astronomy.py 中,gmst()
调用 jdays2000()
,我们在其中看到这行代码:np.datetime64('2000-01-01T12:00')
。检查 numpy.datetime (https://docs.scipy.org/doc/numpy-1.14.0/reference/arrays.datetime.html), we see that the way this function works (timezone wise) was changed numpy 1.11 (2016), and pyorbital also took this change into account some time later (https://github.com/pytroll/pyorbital/commit/08bb5be87c65412af5d7293c00fa2680b068d150) 的文档。
所以我猜要么你的 pyorbital 包不是最新的,要么你的 numpy 不是最新的。
我的版本(numpy==1.14.2,pyorbital==1.3.1)