4

私は healpy を使用して読み取った HEALPix マップを持っていますが、それは銀河座標であり、天体/赤道座標で必要です。マップを変換する簡単な方法を知っている人はいますか?

healpy.Rotator(l,b) から (phi,theta) に変換してから、ピクセルを並べ替えようとhealpy.ang2pixしましたが、マップはまだ奇妙に見えます。

Rotator次のように呼び出すことができるのと同様の関数があれば、それは素晴らしいことです: map = AnotherRotator(map,coord=['G','C']). そのような機能を知っている人はいますか??

ありがとう、

アレックス

4

3 に答える 3

3

数か月間断続的に検索した後、別の潜在的な解決策を見つけました。まだあまりテストしていないので、気をつけてください!

上記の Saul のソリューション 2が鍵です (素晴らしい提案です!)

基本的に、パッケージ内の機能( http://reproject.readthedocs.org/en/stable/healpy.mollview ) と( gnomviewcartview、およびorthviewwork 同様に)の機能を組み合わせます。reproject_to_healpixreproject

結果のマップは私の角度スケールに適していますが、他の方法と比較して変換がどれほど正確かはわかりません.

------基本的な概要----------

ステップ 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 時間かかりました。

------前後の画像------

NSIDE 128、天体座標: *前*

NSIDE 128、銀河座標: *後*

于 2016-04-25T05:26:30.227 に答える