我正在使用pyEphem从我的位置获取ISS的下一个过关,但是我得到的结果与我在天堂上看到的结果不匹配使用相同的坐标
我可能犯了一个愚蠢的错误,但我无法弄清楚
我的代码返回结果:
上升时间:2017/5/25 20:34:39方位角:193:28:04.0
距离最近的天堂近3个小时,上升时间为:23:09:40
http://www.heavens-above.com/passdetails.aspx?&satid=25544&mjd=57898.9270155034&type=V
from datetime import datetime
import ephem
import pytz
line1 = 'ISS (ZARYA)'
line2 = '1 25544U 98067A 17145.52800275 .00016717 00000-0 10270-3 0 9015'
line3 = '2 25544 51.6372 151.2656 0005033 192.5139 167.5889 15.53913304 18224'
tle = [line1, line2, line3]
iss = ephem.readtle(tle[0], tle[1], tle[2])
longitude = -6.2282
latitude = 53.2842
altitude = 20
site = ephem.Observer()
site.lat = str(latitude)
site.lon = str(longitude)
site.elevation = 20
current_time = datetime(2017, 5, 25, 12, 0, 0, tzinfo=pytz.utc)
site.date = current_time
info = site.next_pass(iss)
print("Rise time: %s azimuth: %s" % (info[0], info[1]))
最佳答案 编辑问题后更新的答案:
唉,当我按照您的问题中的链接时,天堂以上会出现服务器错误.所以我重新访问了网站,从你的脚本输入坐标,并做了一些预测.为避免丢失它们,这里有一个快速截图:
当我将ISS的新TLE粘贴到您的脚本并调整current_time时,我可以得到一个非常接近他们的答案.然后脚本看起来像:
from datetime import datetime
import ephem
import pytz
line1, line2, line3 = """\
ISS (ZARYA)
1 25544U 98067A 17198.89938657 .00000988 00000-0 22167-4 0 9998
2 25544 51.6416 245.2318 0005849 47.2823 302.7554 15.54170925 66526
""".splitlines()
tle = [line1, line2, line3]
iss = ephem.readtle(tle[0], tle[1], tle[2])
longitude = -6.2282
latitude = 53.2842
altitude = 20
site = ephem.Observer()
site.lat = str(latitude)
site.lon = str(longitude)
site.elevation = 20
current_time = datetime(2017, 7, 21, 1, 0, 0, tzinfo=pytz.utc)
site.date = current_time
info = site.next_pass(iss)
for item in info:
print(item)
输出是:
2017/7/21 01:32:01
263:02:11.2
2017/7/21 01:37:29
66:12:31.4
2017/7/21 01:42:58
93:15:48.0
您可以在屏幕截图中看到相同的传递,以世界时间而非上海天堂使用的都柏林的UTC 1时区表示 – 所以PyEphem给出的最高点时间凌晨1点37分变为当地时间凌晨2:37都柏林时区.
我检查了另外一两个通道,他们似乎都非常认同 – 时区是否可能是混乱的根源?
原始答案:
您指定的东经53.2842°,南纬6.2282°,在世界地图上似乎位于印度洋西缘的某个地方.您是否可能打算使用负数-53.2842°,这会将位置改为巴西?