访问远程资源的方法的使用提示/建议#

目前有两种方法依赖于远程数据的工作。

第一个是 SkyCoord from_name() 方法,该方法使用 Sesame 要检索特定命名对象的坐标,请执行以下操作:

>>> from astropy.coordinates import SkyCoord
>>> SkyCoord.from_name("PSR J1012+5307")  
<SkyCoord (ICRS): (ra, dec) in deg
    ( 153.1393271,  53.117343)>

第二个是 EarthLocation of_site() 方法,它提供了类似的快速方法来获取 EarthLocation 来自一个天文台的名字:

>>> from astropy.coordinates import EarthLocation
>>> apo = EarthLocation.of_site('Apache Point Observatory')  
>>> apo  
<EarthLocation (-1463969.3018517173, -5166673.342234327, 3434985.7120456537) m>
可用天文台名称的完整列表可通过

astropy.coordinates.EarthLocation.get_site_names() .

虽然这些方法很方便,但需要考虑以下几点:

  • 由于这些方法访问在线数据,数据可能会随着时间的推移而变化(例如,坐标的精度可能会提高,并且可能会增加新的观测站)。因此,这意味着一个使用这些并且目前正在运行的脚本可能在五年后给出不同的答案。因此,关注再现性的用户不应该在他们的最终脚本中使用这些方法,而是可以使用它们来获得所需的值,然后将它们硬编码到脚本中。例如,我们可以使用以下方法检查基特峰天文台的坐标:

    >>> loc = EarthLocation.of_site('Kitt Peak')  
    

    请注意,此命令需要internet连接。

    然后我们可以查看天文台的实际笛卡尔坐标:

    >>> loc  
    <EarthLocation (-1994502.6043061386, -5037538.54232911, 3358104.9969029757) m>
    

    然后可以将其转换为代码:

    >>> loc = EarthLocation(-1994502.6043061386, -5037538.54232911, 3358104.9969029757, unit='m')
    

    后一行可以包含在脚本中,并将确保结果随着时间的推移保持不变。

  • 在线数据对您的目的可能不够准确。如果最大精度是最重要的,我们建议您自己确定天体或地球坐标,并硬编码这些,而不是使用方便的方法。

  • 如果internet连接不可用,这些方法将无法工作。因此,如果脱机时需要处理脚本,请按照上面第一个项目点中的说明在脱机前对坐标进行硬编码。