You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Astroquery从Simbad获取天体星等?

解决Simbad获取星等数据的错误及正确方法

你遇到的错误是因为measurements并非Simbad官方支持的votable字段,导致astroquery无法解析返回的VOTABLE文件。要正确获取星等数据,有两种常用方案:

方案1:直接使用预定义星等字段

Simbad提供了整理好的单波段星等字段(如Vmag、Bmag、Umag等),直接调用即可获取对应星等数值,无需额外转换。

修正后的完整代码:

from astroquery.simbad import Simbad
import pandas as pd

inputObject = 'ABELL 2218; M33; M31; M101; M42; M98'
listObject = [obj.strip() for obj in inputObject.split(';')]  # 清理天体名称的空格

# 添加需要的字段:包含星等及你原本需要的其他字段
Simbad.add_votable_fields('z_value', 'rv_value', 'dim_majaxis', 'dim_minaxis', 'Vmag', 'Bmag')

# 查询天体数据
result_table = Simbad.query_objects(listObject)
dff = result_table.to_pandas()

# 保留需要的列(按需调整)
keep_columns = ['MAIN_ID', 'RA', 'DEC', 'Vmag', 'Bmag', 'z_value', 'rv_value', 'dim_majaxis', 'dim_minaxis']
dff = dff[keep_columns]

# 移除临时添加的字段
Simbad.remove_votable_fields('z_value', 'rv_value', 'dim_majaxis', 'dim_minaxis', 'Vmag', 'Bmag')

# 格式化显示结果
dff.style.format(precision=5, na_rep='No data')

方案2:获取完整测光数据(含多波段及误差)

如果需要获取天体的所有可用测光数据(包括波段、星等、误差等详细信息),可以使用photometry字段,不过该字段返回嵌套表,需要单独处理:

示例代码:

from astroquery.simbad import Simbad

inputObject = 'ABELL 2218; M33; M31; M101; M42; M98'
listObject = [obj.strip() for obj in inputObject.split(';')]

# 添加photometry字段
Simbad.add_votable_fields('photometry')
result_table = Simbad.query_objects(listObject)

# 遍历每个天体,提取测光数据
for idx, obj in enumerate(result_table):
    print(f"\n=== {listObject[idx]} ({obj['MAIN_ID']}) 的测光数据 ===")
    if obj['PHOTOMETRY'] is not None:
        print(obj['PHOTOMETRY'])
    else:
        print("无可用测光数据")

# 移除字段
Simbad.remove_votable_fields('photometry')

补充说明

  • 常用星等字段:Umag(U波段)、Bmag(B波段)、Vmag(V波段)、Rmag(R波段)、Imag(I波段)等。
  • 如果需要星等的误差,可以添加对应字段,比如Vmag_error、Bmag_error。

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:09:25