微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyEphem 从水平坐标返回不一致的赤经和赤纬

如何解决PyEphem 从水平坐标返回不一致的赤经和赤纬

我已经使用 PyEphem 一段时间了,最​​近我的软件出现了一个问题,尽管当地地平线的高度是恒定的,但计算出的偏角不是恒定的。我可以想象,只要当地地平线上的高度也是恒定的,只有赤经发生变化,赤纬就会恒定?

我将 radec_of() 函数与根据纬度/经度坐标、海拔和压力设置为 0 创建的观察者类一起使用。

self.QTH.lat = str(lat)
self.QTH.lon = str(lon)
self.QTH.pressure = 0
self.QTH.elevation = 0

我的函数从本地/水平坐标返回赤道坐标。

# Returns equatorial coordinates
def equatorial(self):
    ra,dec = self.QTH.radec_of(str(self.az),str(self.alt))
    return round(ra / degree,1),round(dec / degree,1)

在我的代码中,用户可以选择特定的度数 (RA) 间隔来在接下来的 24 小时内执行程序。我的预期输出将是持续的赤纬和赤经,随着用户选择的间隔而增加。例如,如果间隔为 4,则预期输出将类似于以下内容

ra=100.1,dec=40.5
ra=104.1,dec=40.5
ra=108.1,dec=40.5
ra=112.1,dec=40.5
...

输出如下所示,其中变化的坐标用“**”标记

18.05.21 16:37:00 805465 ra=102.8,dec=48.0.png
18.05.21 16:53:00 807480 ra=106.8,dec=48.0.png
18.05.21 17:09:00 801372 ra=110.8,dec=48.0.png
18.05.21 17:25:00 803262 ra=114.8,dec=48.0.png
18.05.21 17:41:00 799578 ra=118.8,dec=48.1.png
18.05.21 17:57:00 804559 ra=122.9,dec=48.1.png **
18.05.21 18:13:00 807459 ra=126.9,dec=48.1.png
18.05.21 18:29:00 808064 ra=130.9,dec=48.1.png
18.05.21 18:45:00 810290 ra=134.9,dec=48.1.png
18.05.21 19:01:00 806551 ra=138.9,dec=48.1.png
18.05.21 19:17:00 809136 ra=143.0,dec=48.1.png **
18.05.21 19:33:00 808622 ra=147.0,dec=48.1.png
18.05.21 19:49:00 806295 ra=151.0,dec=48.1.png
18.05.21 20:05:00 807896 ra=155.0,dec=48.1.png
18.05.21 20:21:00 809402 ra=159.0,dec=48.1.png
18.05.21 20:37:00 810583 ra=163.0,dec=48.1.png
18.05.21 20:53:00 805021 ra=167.1,dec=48.1.png **
18.05.21 21:09:00 797692 ra=171.1,dec=48.1.png
18.05.21 21:25:00 807645 ra=175.1,dec=48.1.png
18.05.21 21:41:00 805415 ra=179.1,dec=48.1.png
18.05.21 21:57:00 804573 ra=183.1,dec=48.1.png
18.05.21 22:13:00 806138 ra=187.2,dec=48.1.png **
18.05.21 22:29:00 804337 ra=191.2,dec=48.1.png
18.05.21 22:45:00 808220 ra=195.2,dec=48.1.png
18.05.21 23:01:00 808257 ra=199.2,dec=48.1.png
18.05.21 23:17:00 802124 ra=203.2,dec=48.1.png
18.05.21 23:33:00 807289 ra=207.3,dec=48.1.png **

用于生成上述值的命令如下:

python3 H-line.py -n 50000 -i 4 -c

请记住,运行此命令时,还应在 config.txt 文件添加天空上的纬度/经度和高度/方位角坐标。 起初我预计这是由于 PyEphem 的高度精确计算也考虑了折射,因此我将压力设置为 0。我目前怀疑计算时间可能是问题所在。如果给定时间间隔,控制代码何时运行的整个循环可以在 this GitHub repository 中找到,如果它可能有帮助的话。打开的问题可以是 found herecoordinate function here

编辑: 根据我的 Brandon Rhodes 的建议,我将开始时间重新定位到 for 循环之外,并使结束时间仅取决于每次数据收集之间的开始时间和计算间隔。

end_time = current_time + timedelta(seconds = second_interval * (i + 1))
time_remaining = end_time - datetime.utcNow()

通过这种方式,我希望 RA 每次增加一个恒定量,但我仍然得到以下结果:

07/06/2021  05:32 PM         1,004,512 ra=122.8426,dec=14.5368.png
07/06/2021  05:48 PM           974,403 ra=126.8922,dec=14.5436.png
07/06/2021  06:04 PM           979,557 ra=130.8667,dec=14.5499.png
07/06/2021  06:20 PM           974,845 ra=134.8789,dec=14.5559.png
07/06/2021  06:36 PM           981,583 ra=138.8912,dec=14.5615.png
07/06/2021  06:52 PM           975,283 ra=142.9035,dec=14.5666.png
07/06/2021  07:08 PM           984,823 ra=146.9160,dec=14.5713.png
07/06/2021  07:24 PM         1,000,268 ra=150.9285,dec=14.5756.png
07/06/2021  07:40 PM           998,461 ra=154.9410,dec=14.5793.png
07/06/2021  07:56 PM           994,188 ra=158.9536,dec=14.5825.png
07/06/2021  08:12 PM           978,760 ra=162.9662,dec=14.5852.png
07/06/2021  08:28 PM           983,823 ra=166.9789,dec=14.5873.png
07/06/2021  08:44 PM           998,307 ra=170.9916,dec=14.5889.png
07/06/2021  09:00 PM           980,310 ra=175.0042,dec=14.5899.png

*请注意,赤纬也在发生变化,我希望它不会发生变化。

我现在开始认为每次 for 循环运行时都启动一个新的观察者会导致问题吗?

for i in range(num_data + 1):
    # Get current equatorial and galactic coordinates of antenna RA and Declination
    Coordinates_class = Coordinates(lat = lat,lon = lon,alt = alt,az = az)
    ra,dec = Coordinates_class.equatorial()

我希望有人能帮助我。提前致谢!

解决方法

您的开始时间是否有可能因为每次循环都重新计算开始时间而缓慢向前推进?将这行代码移到 for 循环之外可能会很有用:

current_time = datetime.utcnow()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。