我正在使用Astropy.coordinates
来匹配两个具有RA,DEC坐标的天文目录。
通过遵循astropy
文档(link to astropy.coordinates documentation)并执行以下操作,我可以找到最近的邻居列表:
from astropy.coordinates import SkyCoord
from astropy import units as u
cat1 = SkyCoord(ra=ra1*u.degree, dec=dec1*u.degree)
cat2 = SkyCoord(ra=ra2*u.degree, dec=dec2*u.degree)
idx, d2d, d3d = cat1.match_to_catalog_sky(cat2)
其中ra1
,ra2
,dec1
,dec2
是包含目录1和2中坐标的向量。
对于目录1中的每个对象,结果idx
给出目录2中最接近的匹配ID。d2d
给出匹配之间的二维分隔,而d3d
给出比赛之间的3d间隔。
因此,要选择所需匹配半径之间的匹配,例如使用1“半径,我可以这样做:
matched=idx[np.argwhere(d2d<1.*u.arcsec)[0]]
现在,为了选择适合此最后一步的半径,我想研究d2d
中的每个源与它们的第二近邻之间的距离cat1
。
有人知道我如何在记录第二个邻居的同时进行此匹配过程吗?
答案 0 :(得分:1)
请注意,match_to_catalog_sky
使用关键字nthneighbor
,该关键字默认为1(即最接近),但可以设置为其他值。更改此设置即可。
似乎您可能还需要注意search_around_sky
方法,使用该方法可以找到所有不超过分隔限制的匹配项。