我正在用毕节望远镜从我的位置得到下一个国际空间站的超程,但是我得到的结果与我在上面的天空上看到的不匹配,使用相同的坐标
我可能犯了个愚蠢的错误,但我想不出来
下面的代码返回结果:
上升时间:2017/5/25 20:34:39方位:193:28:04.0
离山口最近的天近三小时,上升的时候是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]))

最佳答案

问题编辑后更新答案:
唉,上面的天堂现在给了一个服务器错误,当我跟踪链接在你的问题。所以我重新访问了网站,输入了你脚本中的坐标,并得到了一些预测。为了避免丢失它们,下面是一个快速截图:
python - pyephem next_pass与上面的天堂不匹配-LMLPHP
当我在你的脚本中为国际空间站粘贴一个新的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时区-因此,毕节给出的最高点时间1:37变成都柏林当地时区的2:37。
我又检查了一两张通行证,他们似乎都相当一致——时区可能是造成混乱的原因吗?
原始答案:
您指定的经度为东经53.2842度,纬度为南纬6.2282度,在世界地图上,该经度似乎位于印度洋的西边。你是不是打算用负数-53.2842°代替巴西?

07-27 22:39