長方形の FOV に対応するピクセル インデックスを見つけるために、healpy.query_polygon を使用しています。ただし、返されるインデックスは入力と一致しません。FOV よりも ~100 倍大きい (または、予想される ~30 ピクセルではなく ~14000 ピクセルを返す) ポリゴンを healpy 空間に作成します。
query_disc 関数は期待どおりに機能しますが、これは私が使用しようとしている関数ではありません。
対応する出力: 上(ディスク)、下(ポリゴン)
hp.query_disc の場合:
disc_center = astropy.coordinates.spherical_to_cartesian(1, np.deg2rad(47.3901), np.deg2rad(319.6428))
#(<Quantity 0.5158909828269898>, <Quantity -0.4383926760027675>, <Quantity 0.7359812195055898>)
radius = 0.06208
qd = hp.query_disc(128,disc_center,radius)
#plotting
for ind in range(len(prob)):
if ind in qd:
prob[ind] = 1
else:
prob[ind] = 0
hp.query_polygon の場合:
ra_poly, dec_poly = (array([ 48.51458308, 48.51458308, 46.20781856, 46.20781856]), array([ 317.00403838, 322.28167591, 317.11703852, 322.16867577]))
xyzpoly = astropy.coordinates.spherical_to_cartesian(1, np.deg2rad(dec_poly), np.deg2rad(ra_poly))
#xyzpoly = array([[ 0.48450204, 0.52400015, 0.50709248, 0.5465906 ],
[-0.45174162, -0.40526109, -0.47093848, -0.42445795],
[ 0.74912435, 0.74912435, 0.72185467, 0.72185467]])
qp = hp.query_polygon(128,xyzpoly)
#plotting
for ind in range(len(prob)):
if ind in qp:
prob[ind] = 1
else:
prob[ind] = 0
誰もこの不一致を説明できますか? すべてのアカウントで、頂点が関数に正しく実装されていない限り、エラーは表示されません。