我正在使用Astropy.coordinates将两个天文星表与RA,DEC坐标进行匹配。
我可以通过遵循astropy documentation(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给出了匹配之间的2d间隔,而d3d给出了匹配之间的3d间隔。
因此,要在所需的匹配半径之间选择匹配,例如,使用1“半径,我可以这样做:
matched=idx[np.argwhere(d2d<1.*u.arcsec)[0]]现在,为了选择最后一步的合适半径,我想检查一下cat1中每个源与其第二近邻之间的距离d2d。
有谁知道如何在记录第二个邻居的同时进行这种匹配过程?
发布于 2018-12-15 07:33:52
请注意,match_to_catalog_sky接受一个关键字nthneighbor,该关键字的默认值为1(即最近),但可以设置为其他值。改变这一点应该是可行的。
看起来你可能还想要注意search_around_sky方法,使用它你可以找到所有的匹配项,直到分隔限制。
https://stackoverflow.com/questions/52166769
复制相似问题