我正在尝试编写一个程序,该程序使用JPL Horizons星历表从地球上某个特定的太阳系物体向我显示天空。我遇到了两个问题:astroquery.jplhorizons模块将无法工作,并且我没有足够的3D图形模块,我不知道该如何使用。这是第一个问题的代码;直接来自文档(https://astroquery.readthedocs.io/en/latest/jplhorizons/jplhorizons.html)。
from astroquery.jplhorizons import Horizons
obj = Horizons(id='Ceres', location='568',
epochs={'start':'2010-01-01', 'stop':'2010-03-01','step':'10d'})
eph = obj.ephemerides()
print(eph)
文档说我应该得到这个:
targetname datetime_str datetime_jd ... GlxLat RA_3sigma DEC_3sigma
--- --- d ... deg arcsec arcsec
---------- ----------------- ----------- ... --------- --------- ----------
1 Ceres 2010-Jan-01 00:00 2455197.5 ... 24.120057 0.0 0.0
1 Ceres 2010-Jan-11 00:00 2455207.5 ... 20.621496 0.0 0.0
1 Ceres 2010-Jan-21 00:00 2455217.5 ... 17.229529 0.0 0.0
1 Ceres 2010-Jan-31 00:00 2455227.5 ... 13.97264 0.0 0.0
1 Ceres 2010-Feb-10 00:00 2455237.5 ... 10.877201 0.0 0.0
1 Ceres 2010-Feb-20 00:00 2455247.5 ... 7.976737 0.0 0.0
但是,相反,从终端运行时出现此错误:
Traceback (most recent call last):
File ".\astrotest.py", line 4, in <module>
eph = obj.ephemerides()
File "C:\Users\ct_sk\AppData\Local\Programs\Python\Python36-32\lib\site-packages\astroquery\utils\class_or_instance.py", line 25, in f
return self.fn(obj, *args, **kwds)
File "C:\Users\ct_sk\AppData\Local\Programs\Python\Python36-32\lib\site-packages\astroquery\utils\process_asyncs.py", line 29, in newmethod
result = self._parse_result(response, verbose=verbose)
File "C:\Users\ct_sk\AppData\Local\Programs\Python\Python36-32\lib\site-packages\astroquery\jplhorizons\core.py", line 946, in _parse_result
data = self._parse_horizons(response.text)
File "C:\Users\ct_sk\AppData\Local\Programs\Python\Python36-32\lib\site-packages\astroquery\jplhorizons\core.py", line 852, in _parse_horizons
raise IOError('Cannot parse table column names.')
OSError: Cannot parse table column names.
我不知道该怎么办。对于3D问题,我在OpenGL中有些涉猎,我发现它太难了,我想找点简单的东西。通常,当我进行3D图形处理时,我会使用“处理”(https://processing.org/),类似的东西会很完美。感谢您的帮助。
答案 0 :(得分:0)
我试图查看该库的源代码,但是行号与您的不匹配,因此您需要在代码中进行检查。
查看文件core.py
和行852
,这是您的错误。您可以打印在那里使用的值/对象,并查看它是否符合您的期望。在Python中,错误通常会进一步传播,因此,如果值错误,则需要检查从何处获取并在那里进行调试。
如果您向我们显示错误所在的行,我们也许可以为您提供更多帮助。