2

我从 VizieR 目录中提取了 Simbad 名称列表,并希望从 NED 的直径表中找到对象的轴比。代码如下。

import numpy as np
from astropy.table import Table,Column
from astroquery.vizier import Vizier
from astroquery.ned import Ned

v = Vizier(columns = ['SimbadName','W50max'])
catalist = v.find_catalogs('VIII/73')
v.ROW_LIMIT = -1
a = v.get_catalogs(catalist.keys())

filter = a[0]['W50max'] > 500
targets = a[0][filter]
print targets
simName = targets['SimbadName']
W50max = targets['W50max']

counter  = 1
for objects in simName:

    result_table = Ned.get_table(objects, table='diameters')
    ## find where  Axis Ratio results are not masked
    notMasked = (np.where(result_table['NED Axis Ratio'].mask == False)) 
    ## calculate average value of Axis Ratio
    print counter, np.sum(result_table['NED Axis Ratio'])/np.size(notMasked)
    counter += 1

simNames 中的第四个对象没有直径表,因此会产生错误:

   File "/home/tom/VizRauto.py", line 40, in <module>
    result_table = Ned.get_table(objects, table='diameters')
  File "/usr/local/lib/python2.7/dist-packages/astroquery/ned/core.py", line 505, in get_table
    result = self._parse_result(response, verbose=verbose)
  File "/usr/local/lib/python2.7/dist-packages/astroquery/ned/core.py", line 631, in _parse_result
    raise RemoteServiceError("The remote service returned the following error message.\nERROR: {err_msg}".format(err_msg=err_msg))
RemoteServiceError: The remote service returned the following error message.
ERROR:  Unknown error 

所以我尝试了:

counter  = 1
for objects in simName:

try:
        result_table = Ned.get_table(objects, table='diameters')
        ## find where  Axis Ratio results are not masked
        notMasked = (np.where(result_table['NED Axis Ratio'].mask == False)) 

        ## calculate average value of Axis Ratio
        print counter, np.sum(result_table['NED Axis Ratio'])/np.size(notMasked)

except RemoteServiceError:
        continue


counter += 1

产生:

Traceback (most recent call last):
  File "/home/tom/Dropbox/AST03CosmoLarge/Project/scripts/VizRauto.py", line 57, in <module>
    except RemoteServiceError:
NameError: name 'RemoteServiceError' is not defined

所以很明显来自 core.py 的 RemoteServiceError 是无法识别的。处理此问题的最佳方法是什么,或者是否有更好的方法来使用对象列表查询 NED?

4

0 回答 0