如何使用 pyephem 计算折射校正 RA/DEC 坐标?
How to calculate refraction-corrected RA/DEC coordinates with pyephem?
我尝试将对象的 J2000 RA/DEC 坐标转换为 "observed position",即包含折射效应的地心 RA/DEC 坐标。按照文档 (http://rhodesmill.org/pyephem/radec.html#how-the-three-positions-differ) 我这样做了:
from math import pi
import ephem
from datetime import datetime
ra = 20.370473492 / 12. * pi
dec = 40.256674958 / 180. * pi
tt = datetime(2016, 07, 27, 23, 30, 0)
lowell = ephem.Observer()
lowell.lon = '-111:32.1'
lowell.lat = '35:05.8'
lowell.elevation = 2198
lowell.date = tt
lowell.pressure = 1000
bd = ephem.FixedBody()
bd._ra = ra
bd._dec = dec
bd.compute(lowell)
print "Pressure: ", lowell.pressure
print "Input: ", bd._ra, bd._dec
print "Astrometric Geocentric Position: ", bd.a_ra, bd.a_dec
print "Apparent Geocentric Position ", bd.g_ra, bd.g_dec
print "Apparent Topocentric Position: ", bd.ra, bd.dec
print "Horizontal Position: ", bd.alt, bd.az
lowell.pressure = 0
bd.compute(lowell)
print "Pressure: ", lowell.pressure
print "Input: ", bd._ra, bd._dec
print "Astrometric Geocentric Position: ", bd.a_ra, bd.a_dec
print "Apparent Geocentric Position ", bd.g_ra, bd.g_dec
print "Apparent Topocentric Position: ", bd.ra, bd.dec
print "Horizontal Position: ", bd.alt, bd.az
首先值得注意的是:表观地心坐标和表观地心坐标没有区别。如果按照文档中的说明对视差和折射进行了校正,则它们应该有所不同。
第二件事:如果我将压力设置为零,折射应该会消失并且某些东西会发生变化。然而,只有水平坐标发生变化(大约 11 弧分,看起来是正确的),但所有 ra/dec 坐标保持不变。
我在这里错过了什么?
或者换句话说:我能以某种方式从 pyephem 获得折射校正 RA/DEC 坐标吗?
(顺便说一句,我使用的是最新的 pyepehm 版本,3.7.6.0)
简短的回答是折射根本不会影响赤经和赤纬。
有两种可视化方法。第一种是对您感兴趣的物体进行成像,它位于 RA 网格和赤纬线之间,这些网格构成了它所在的天球部分。现在,在你的脑海中,想象一下看着物体和它周围的网格,因为它们被大气弯曲了。因为它们穿过相同的大气层,它们将被折射相同的量——并且物体的折射图像相对于折射 RA 和赤纬线图像的位置将与之前相同!所以它的赤经和偏角仍然是一样的。
另一种形象化的方法是想象行星的赤经和偏角告诉你行星将在几小群遥远的物体前面——物体将位于哪些遥远的星系和类星体之中。现在,如果你想象物体所在的那片天空,并想象那片天空被大气折射的图像,你会看到物体和行星都被折射在一起。因此,同样,折射不会改变物体的赤经和偏角——它会出现在完全相同的星系前面,就像完全没有折射时一样。
长话短说,要创建你想象中的数字,你可能会取水平坐标,将观察者的大气压力设置为零,然后使用观察者的 .radec_of(...)
方法来转动水平坐标回到 RA 和 dec,如果大气不折射它们,它们将位于天空中的那个位置。但我希望上面的讨论清楚你得到的数字,严格来说,不会有任何物理意义或意义:赤经和赤纬不会因为折射而改变,你得到的改变的赤经和赤纬不会参考天空图上的任何真实位置。
我尝试将对象的 J2000 RA/DEC 坐标转换为 "observed position",即包含折射效应的地心 RA/DEC 坐标。按照文档 (http://rhodesmill.org/pyephem/radec.html#how-the-three-positions-differ) 我这样做了:
from math import pi
import ephem
from datetime import datetime
ra = 20.370473492 / 12. * pi
dec = 40.256674958 / 180. * pi
tt = datetime(2016, 07, 27, 23, 30, 0)
lowell = ephem.Observer()
lowell.lon = '-111:32.1'
lowell.lat = '35:05.8'
lowell.elevation = 2198
lowell.date = tt
lowell.pressure = 1000
bd = ephem.FixedBody()
bd._ra = ra
bd._dec = dec
bd.compute(lowell)
print "Pressure: ", lowell.pressure
print "Input: ", bd._ra, bd._dec
print "Astrometric Geocentric Position: ", bd.a_ra, bd.a_dec
print "Apparent Geocentric Position ", bd.g_ra, bd.g_dec
print "Apparent Topocentric Position: ", bd.ra, bd.dec
print "Horizontal Position: ", bd.alt, bd.az
lowell.pressure = 0
bd.compute(lowell)
print "Pressure: ", lowell.pressure
print "Input: ", bd._ra, bd._dec
print "Astrometric Geocentric Position: ", bd.a_ra, bd.a_dec
print "Apparent Geocentric Position ", bd.g_ra, bd.g_dec
print "Apparent Topocentric Position: ", bd.ra, bd.dec
print "Horizontal Position: ", bd.alt, bd.az
首先值得注意的是:表观地心坐标和表观地心坐标没有区别。如果按照文档中的说明对视差和折射进行了校正,则它们应该有所不同。
第二件事:如果我将压力设置为零,折射应该会消失并且某些东西会发生变化。然而,只有水平坐标发生变化(大约 11 弧分,看起来是正确的),但所有 ra/dec 坐标保持不变。
我在这里错过了什么?
或者换句话说:我能以某种方式从 pyephem 获得折射校正 RA/DEC 坐标吗?
(顺便说一句,我使用的是最新的 pyepehm 版本,3.7.6.0)
简短的回答是折射根本不会影响赤经和赤纬。
有两种可视化方法。第一种是对您感兴趣的物体进行成像,它位于 RA 网格和赤纬线之间,这些网格构成了它所在的天球部分。现在,在你的脑海中,想象一下看着物体和它周围的网格,因为它们被大气弯曲了。因为它们穿过相同的大气层,它们将被折射相同的量——并且物体的折射图像相对于折射 RA 和赤纬线图像的位置将与之前相同!所以它的赤经和偏角仍然是一样的。
另一种形象化的方法是想象行星的赤经和偏角告诉你行星将在几小群遥远的物体前面——物体将位于哪些遥远的星系和类星体之中。现在,如果你想象物体所在的那片天空,并想象那片天空被大气折射的图像,你会看到物体和行星都被折射在一起。因此,同样,折射不会改变物体的赤经和偏角——它会出现在完全相同的星系前面,就像完全没有折射时一样。
长话短说,要创建你想象中的数字,你可能会取水平坐标,将观察者的大气压力设置为零,然后使用观察者的 .radec_of(...)
方法来转动水平坐标回到 RA 和 dec,如果大气不折射它们,它们将位于天空中的那个位置。但我希望上面的讨论清楚你得到的数字,严格来说,不会有任何物理意义或意义:赤经和赤纬不会因为折射而改变,你得到的改变的赤经和赤纬不会参考天空图上的任何真实位置。