数か月間断続的に検索した後、別の潜在的な解決策を見つけました。まだあまりテストしていないので、気をつけてください!
上記の Saul のソリューション 2が鍵です (素晴らしい提案です!)
基本的に、パッケージ内の機能( http://reproject.readthedocs.org/en/stable/healpy.mollview
) と( gnomview
、cartview
、およびorthview
work 同様に)の機能を組み合わせます。reproject_to_healpix
reproject
結果のマップは私の角度スケールに適していますが、他の方法と比較して変換がどれほど正確かはわかりません.
------基本的な概要----------
ステップ 1:マップを読み込み、 で長方形配列を作成しcartview
ます。上で Saul が示したように、これもローテーションを行う 1 つの方法です。標準の回転/座標変換を行っているだけの場合、必要なのはcoord
キーワードだけです。天体から銀河座標まで、セットcoord = ['C','G']
map_Gal = hp.cartview(map_Cel, coord=['C','G'], return_projected_map=True, xsize=desired_xsize, norm='hist',nest=False)
ステップ 2:テンプレート全天 FITS ヘッダーを記述します (以下の例のように)。私は、希望する HEALPix マップと同じ平均ピクセル スケールになるように作成しました。
ステップ 3:使用するreproject.transform_to_healpix
reproject
「通常の」配列 (または FITS ファイル) を HEALPix プロジェクションにマッピングする関数が含まれています。これを、healpy.mollview/cartview/orthview/gnomview によって作成された配列を返す機能と組み合わせると、ある座標系 (Celestial) の HEALPix マップを別の座標系 (Galactic) に回転させることができます。
map_Gal_HP, footprint_Gal_HP = rp.reproject_to_healpix((map_Gal, target_header), coord_system_out= 'GALACTIC', nside=nside, nested=False)
基本的に、これら 2 つのコマンドに帰着します。ただし、作成する中間の全天マップに対応するピクセル スケールとサイズを指定して、テンプレート ヘッダーを作成する必要があります。
-----完全な作業例 (iPython ノートブック形式 + FITS サンプル データ)------
https://github.com/aaroncnb/healpix_coordtrans_example/tree/master
そこのコードは非常に速く実行されるはずですが、それはマップが大幅に劣化しているためです。NSIDE 1024 と 2048 マップでも同じことを行いましたが、約 1 時間かかりました。
------前後の画像------