- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在 Astropy 中进行坐标转换。但这不能正常工作。情况如下,我有一个 J2000 中的恒星坐标,我想将其转换为实际的纪元(或其他特定日期)。我正在使用 Stellarium 提供的坐标验证代码。问题是结果在大约 20 分钟内有所不同,这是一个很大的问题,因为我需要几十毫秒的精度。使用的代码如下:
from astropy.coordinates import SkyCoord
from astropy.coordinates import FK5
c = SkyCoord(20.398617733743833, 38.466348612533892,
unit='deg', frame='icrs')
c_fk5 = c.transform_to(FK5(equinox='2018-10-19 00:19:41'))
我想知道我的方法是不是错了,怎样才能得到更好的结果。请大家踊跃回答,发表意见和建议。谢谢。
最佳答案
您混淆了春分(赤经的经典零点)和纪元(当观察到某物时)。此外,FK5 是旧的天体引用系,已被 ICRS 取代,并且两个引用系非常紧密对齐,因此在两者之间进行转换没有意义。
Astropy 使用 ERFA,它是 SOFA 的重新实现。执行 IAU2000/2006 决议以计算位置并使用基于现代 CIO 的转换的代码。 Stellarium 使用旧的基于 equinox 的方法。您可以在 SOFA Tools for Earth Attitude 的图 2 中看到两种方法之间的区别。食谱,其中 Astropy 沿右侧 CIO 分支向下延伸,而 Stellarium 沿左侧基于 equinox 的分支向下延伸。
您可以计算出您要问的内容,即“在我的 2018 年 10 月 19 日 00:19:41 UTC 时间,我的物体在天空中的哪个位置具有这些 ICRS 坐标 J2000.0”,这将是使用天体的天体中间引用系统 (CIRS),但这与 Stellarium 中报告的地心表观位置不可比。这是因为两种方法的地球极点模型(进动-章动模型)、赤经起源和地球自转模型不同。这使得比较事物变得更加困难,直到两种方法在图 2 中的 local apparent [h, delta]
步骤再次相遇(对应于 HA/Dec (apparent)
在 Stellarium 中)。 Astropy 并没有真正的 HA/Dec 框架这一事实并没有帮助,因为它通常是 Alt/Az 框架的中间步骤,即一个物体在地球上的西/东和地平线以上的距离-基于观察者。
下面的代码应该可以让你计算一个本地明显的 HA,Dec 以与 Stellarium 进行比较(前提是你在 Stellarium 中发送的日期和地点相同)。这将适用于自行和视差可以忽略不计的远处物体;否则,您需要在声明 SkyCoord
时添加这些 - 请参阅 Using velocities with SkyCoord了解更多详情。
import astropy.units as u
from astropy.coordinates import SkyCoord, ITRS, EarthLocation
from astropy.time import Time
c = SkyCoord(20.398617733743833, 38.466348612533892, unit='deg', frame='icrs')
t = Time('2018-10-19 00:19:41', scale='utc')
loc = EarthLocation(lon=30*u.deg, lat=30*u.deg, height=0*u.m)
c_ITRS = c.transform_to(ITRS(obstime=t))
# Calculate local apparent Hour Angle (HA), wrap at 0/24h
local_ha = loc.lon - c_ITRS.spherical.lon
local_ha.wrap_at(24*u.hourangle, inplace=True)
# Calculate local apparent Declination
local_dec = c_ITRS.spherical.lat
print("Local apparent HA, Dec={} {}".format(local_ha.to_string(unit=u.hourangle, sep=':'), local_dec.to_string(unit=u.deg, sep=':', alwayssign=True) ))
由于使用的模型不同,考虑到地球方向参数(UT1-UTC,极移)等,会有一些差异,但它们应该在亚秒级别进行比较。
关于python - Astropy 中的坐标变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52900678/
Java 是否存在任何开源或“免费”库,我可以在其中执行从一个空间系统到另一个空间系统的坐标转换? 我找到了 Opengeo http://opengeo.org/但它是一个庞大而全面的图书馆,可以容
我正在尝试使用 java 2d 图形库绘制图形,我认为我已经有了它。我想在坐标系中绘制,其中 0,0 位于面板左边缘的中心。我使用了以下代码,它似乎给了我我需要的结果。 private void do
给出的是一个旋转的矩形,它内接于另一个矩形。 两个矩形都有自己的坐标系。 在内接和旋转的矩形中,有一个点P,其坐标相对于该矩形(红色)。 想要的是该点相对于外部矩形(绿色)的坐标: 编辑:还给出了两个
我试图理解这段代码: def add_inset(ax, rect, *args, **kwargs): box = ax.get_position() inax_position =
在 Python 的 Numpy 模块中,是否有一个函数可以计算数组上的长/高级数学表达式?我听说过 numexp 模块,但不想进一步依赖它。 更好的是,我能否将这些表达式限制为仅表示数组中子数组的第
我有 2 个 3D 体积,它们是彼此的变形版本,我正在尝试估计变形函数。我知道失真是连续且可区分的,但不是简单的仿射变换。我也知道每个点的失真幅度可能不是很大。我有几对 anchor ,我知道它们对应
我是一名优秀的程序员,十分优秀!