【问题标题】:PyEphem returning inconsistent right ascension and declination from horizontal coordinatesPyEphem 从水平坐标返回不一致的赤经和赤纬
【发布时间】:2021-06-28 20:13:04
【问题描述】:

我使用 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 here,也可以是coordinate 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()

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

【问题讨论】:

  • 您是否可以提供一个脚本,或者在命令行上提供参数,这会使您的脚本产生类似于您问题中显示的输出的输出? (虽然星号不存在也没关系。)如果您的读者都无法通过查看您的问题来了解正在发生的事情,那么工作脚本或命令将让他们实际运行代码并进行实验以在内部了解正在发生的事情开。
  • 嗨,是的,我添加了用于产生上述结果的确切命令(配置文件中的 lat/lon 和 alt/az 除外)。谢谢提醒!

标签: python astronomy pyephem


【解决方案1】:

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

current_time = datetime.utcnow()

【讨论】:

  • 我尝试这样做并且在过去几天一直在测试其他改进,但无论我做什么,赤经仍然增加了大约 0.01 度。请参阅原始问题以获取更新的数据。
  • 尝试运行脚本时,我得到了Please check your config file or use command line arguments. — 你能提供一个有效的config.txt,我认为它需要非none 值吗?
  • 当然!这是配置文件的示例{ "latitude": 20.7, "longitude": 12.5, "azimuth": -90, "altitude": 45, "low_y": -0.2, "high_y": 1.3 } 您可能还会遇到没有软件定义无线电的问题?在这种情况下,将这两行 Receiver_class = Receiver(sample_rate = args.sample_rate, ppm = args.ppm, resolution = args.resolution, num_FFT = args.num_FFT, num_med = args.num_med)freqs, data = Receiver_class.receive() 替换为 freqs = np.linspace(1420405000 - 1200000, 1420405000 + 1200000, 2048)data = np.ones_like(freqs)
  • 谢谢 — 您可能会考虑添加一个命令行选项来在内部触发这些调用,而不是需要手动编辑脚本。我已经进行了这些编辑,但我没有看到任何行输出,如您在问题中显示的行。程序中的哪个打印调用产生它们?
  • Todo-list 中肯定有一个调试选项,其中涉及到这样的内容;) 要获得像上面这样的打印输出,我只需在 Linux 的频谱文件夹中调用 dir (Win) 或 ls .我还将 Ephem.py 中的小数舍入更改为 4 而不是赤道泛函中的 1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2015-06-14
  • 1970-01-01
  • 2019-04-15
  • 2018-03-11
相关资源
最近更新 更多