首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Astroquery SIMBAD :获取所有帧的坐标

Astroquery SIMBAD :获取所有帧的坐标
EN

Stack Overflow用户
提问于 2016-12-28 20:16:45
回答 2查看 684关注 0票数 4

我试图使用Simbad类从astroquery获取所有帧的坐标,就像SIMBAD网页 (基本数据部分)显示的那样

我有以下代码:

代码语言:javascript
复制
from astroquery.simbad import Simbad

def get():
    Simbad.reset_votable_fields()
    Simbad.remove_votable_fields('coordinates')

    Simbad.add_votable_fields('ra(:;A;ICRS;J2000)', 'dec(:;D;ICRS;2000)')
    Simbad.add_votable_fields('ra(:;A;FK5;J2000)', 'dec(:;D;FK5;2000)')

    table = Simbad.query_object("Betelgeuse", wildcard=False)

但我发现了错误:

KeyError:‘ra (:;A;FK5;J 2000):字段已经存在。字段ra、dec、id、otype和bibcodelist只能指定一次。要更改它们的选项,首先删除现有条目,然后添加一个新条目。

我在文档中所能找到的关于操作选票字段(特别是坐标)的所有内容如下:

http://astroquery.readthedocs.io/en/latest/simbad/simbad.html#specifying-the-format-of-the-included-votable-fields

是否有一种方法可以获得发送一个查询到SIMBAD的所有帧的坐标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-30 23:26:27

与从SIMBAD查询多个坐标(这在星象查询中似乎是不可能的)不同,您可以使用astropy.coordinates.SkyCoord转换坐标。

例如:

代码语言:javascript
复制
from astroquery.simbad import Simbad
from astropy.coordinates import SkyCoord

Simbad.reset_votable_fields()
Simbad.remove_votable_fields('coordinates')
Simbad.add_votable_fields('ra(:;A;ICRS;J2000)', 'dec(:;D;ICRS;2000)')
table = Simbad.query_object("Betelgeuse", wildcard=False)
coords = SkyCoord(ra=['{}h{}m{}s'.format(*ra.split(':')) for ra in table['RA___A_ICRS_J2000']], 
                  dec=['{}d{}m{}s'.format(*dec.split(':')) for dec in table['DEC___D_ICRS_2000']],
                  frame='icrs', equinox='J2000')

它现在是一个可以转换为其他框架的SkyCoord对象:

代码语言:javascript
复制
>>> coords
<SkyCoord (ICRS): (ra, dec) in deg
    ( 88.79293875,  7.40706389)>
>>> coords.fk4
<SkyCoord (FK4: equinox=J2000.000, obstime=B1950.000): (ra, dec) in deg
    ( 88.79274075,  7.40705223)>
>>> coords.fk5
<SkyCoord (FK5: equinox=J2000.000): (ra, dec) in deg
    ( 88.79294545,  7.40705842)>

这可以再次转换为字符串,例如,在hms dms格式中:

代码语言:javascript
复制
>>> coords.fk5.to_string('hmsdms')
['05h55m10.3069s +07d24m25.4103s']

如果要将这些列作为表中的其他列,可以简单地添加以下内容:

代码语言:javascript
复制
>>> table['RA FK5'] = coords.fk5.ra
>>> table['DEC FK5'] = coords.fk5.dec
>>> table['FK4'] = coords.fk4.to_string('hmsdms')
>>> table
 MAIN_ID  RA___A_ICRS_J2000 DEC___D_ICRS_2000     RA FK5       DEC FK5                 FK4             
               "h:m:s"           "d:m:s"           deg           deg     
--------- ----------------- ----------------- ------------- ------------- -----------------------------
* alf Ori     05:55:10.3053     +07:24:25.430 88.7929454548 7.40705841559 05h55m10.2578s +07d24m25.388s
票数 3
EN

Stack Overflow用户

发布于 2017-01-02 23:42:21

由于无法确定的原因,天文查询不支持多个可配置的新增VO选项。不过,它很快就会出现:参见此拉请求。您发布的代码没有任何问题,只是查询中的一个bug。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41369114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档