天体坐标:第二近邻
Astropy Coordinates: Second Nearest Neighbour
我正在使用 Astropy.coordinates
来匹配两个具有赤经、赤纬坐标的天文目录。
我可以按照 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坐标的向量。
结果idx
为目录1中的每个对象给出目录2中最近匹配的id。d2d
给出匹配之间的2d分隔,d3d
给出匹配之间的 3d 分离。
因此,为了 select 匹配所需的匹配半径,例如,使用 1" 半径,我可以这样做:
matched=idx[np.argwhere(d2d<1.*u.arcsec)[0]]
现在,为了为这最后一步选择合适的半径,我想检查 cat1
中每个源与其第二近的源之间的距离 d2d
是多少-邻居。
有谁知道如何在记录第二个邻居的同时进行此匹配过程?
请注意,match_to_catalog_sky
采用关键字 nthneighbor
,默认为 1(即最近),但可以设置为其他值。更改此设置即可。
看来您可能还想关注 search_around_sky
方法,使用该方法您可以找到达到分隔限制的所有匹配项。
我正在使用 Astropy.coordinates
来匹配两个具有赤经、赤纬坐标的天文目录。
我可以按照 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坐标的向量。
结果idx
为目录1中的每个对象给出目录2中最近匹配的id。d2d
给出匹配之间的2d分隔,d3d
给出匹配之间的 3d 分离。
因此,为了 select 匹配所需的匹配半径,例如,使用 1" 半径,我可以这样做:
matched=idx[np.argwhere(d2d<1.*u.arcsec)[0]]
现在,为了为这最后一步选择合适的半径,我想检查 cat1
中每个源与其第二近的源之间的距离 d2d
是多少-邻居。
有谁知道如何在记录第二个邻居的同时进行此匹配过程?
请注意,match_to_catalog_sky
采用关键字 nthneighbor
,默认为 1(即最近),但可以设置为其他值。更改此设置即可。
看来您可能还想关注 search_around_sky
方法,使用该方法您可以找到达到分隔限制的所有匹配项。