-1

我浏览了 astropy 文档并得出结论,如果给定时间,没有可以转换为赤道坐标 RA、dec 的具有 lon、lat 坐标的本地 ECEF(地心、地球固定)框架。这是真的?

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

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

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

如果有人可以帮助我找到是否可以使用最新版本的 astropy 来定义这种情况,我将不胜感激。

谢谢!

埃里克

4

2 回答 2

0

HEALPix 本身和https://astropy-healpix.readthedocs.io主要是关于一个给定天空帧中的 HEALPix 像素。

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

我不熟悉 ECEF,但您也许可以使用现有的 ICRS 和 ITRF 框架进行您想要的计算(请参阅https://stackoverflow.com/a/49325584/498873)。

于 2018-12-03T10:31:33.727 回答
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'
于 2018-12-04T22:52:37.863 回答