astropy / healpix中的ECEF帧?

时间:2018-12-03 10:09:42

标签: coordinate-systems astropy healpy

我仔细查看了令人沮丧的文档,得出的结论是 没有本地的经纬度经纬度的ECEF(以地球为中心,固定在地球上)的帧,可以将其转换为赤道坐标RA(决定是否给出时间)。这是真的吗?

最终,我想使用以下方法创建地图:

map = HEALPix(nside=NSIDE, order='nested', frame=MY_REF_FRAME())

MY_REF_FRAME = ITRS显然不是一个选择。

如果有人可以帮助我找到最新版本的astropy可以定义的方法,我将不胜感激。

谢谢!

埃里克

2 个答案:

答案 0 :(得分:0)

HEALPix本身和https://astropy-healpix.readthedocs.io主要涉及给定天空框架中的HEALPix像素。

对于不同天空坐标系之间的转换,您应该查看astropy.coordinates

我对ECEF并不熟悉,但是您可以使用现有的ICRS和ITRF框架进行所需的计算(请参见https://stackoverflow.com/a/49325584/498873)。

答案 1 :(得分:0)

让我在这里发布对@Christoph的评论的答案,以便我粘贴完整的代码。这是我得到的代码和错误:

In [1]: import astropy.coordinates as coord                                                                                                                                                           
In [2]: import astropy.units as u                                                                                                                                                                     
In [3]: from astropy.time import Time                                                                                                                                                                 
In [4]: coord.ITRS( coord.SphericalRepresentation(lon= 0.0 *u.deg ,lat = 0.0 * u.deg, distance = 1 * u.m), obstime=Time('2018-12-03 14:00:00')).transform_to(coord.ICRS)                              

ValueError                                Traceback (most recent call last)
<ipython-input-4-1d50da4d3855> in <module>
----> 1 coord.ITRS( coord.SphericalRepresentation(lon= 0.0 *u.deg ,lat = 0.0 * u.deg, distance = 1 * u.m), obstime=Time('2018-12-03 14:00:00')).transform_to(coord.ICRS)

~/lib/python3.5/site-packages/astropy/coordinates/baseframe.py in transform_to(self, new_frame)
   1165             msg = 'Cannot transform from {0} to {1}'
   1166             raise ConvertError(msg.format(self.__class__, new_frame.__class__))
-> 1167         return trans(self, new_frame)
   1168 
   1169     def is_transformable_to(self, new_frame):
...
   474             # In case we want to convert 1e20 to int.
   475             try:
--> 476                 fill_value = np.array(fill_value, copy=False, dtype=ndtype)
   477             except OverflowError:
   478                 # Raise TypeError instead of OverflowError. 

ValueError: invalid literal for int() with base 10: 'N'


In [6]: astropy.__version__                                                                                                                                                                           
Out[6]: '3.0.5'

In [8]: numpy.__version__                                                                                                                                                                             
Out[8]: '1.15.3'