Я нашел еще одно потенциальное решение после нескольких месяцев поиска. Я еще не проверял это очень много, поэтому, пожалуйста, будьте осторожны!
Решение 2 Саула, приведенное выше, является ключевым (отличное предложение!)
По сути, вы комбинируете функциональность healpy.mollview
(также работают gnomview
, cartview
и orthview
) с функциональностью reproject_to_healpix
в пакете reproject
(http://reproject.readthedocs.org/en/stable/).
Полученная карта подходит для моих угловых масштабов, но я не могу сказать, насколько точно преобразование по сравнению с другими методами.
-----Основная схема----------
Шаг 1. Считайте карту и создайте прямоугольный массив с помощью cartview
. Как указал Саул выше, это также один из способов вращения. Если вы просто выполняете стандартное преобразование поворота/координаты, то все, что вам нужно, это ключевое слово 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. Напишите шаблон заголовка all-sky FITS (как в примере ниже). Я написал, что моя карта имеет тот же средний размер в пикселях, что и моя желаемая карта HEALPix.
Шаг 3. Используйте reproject.transform_to_healpix
reproject
включает функцию для сопоставления "обычного" массива (или файла FITS) с проекцией HEALPix. Объедините это с возможностью возврата массива, созданного healpy.mollview/cartview/orthview/gnomview, и вы сможете повернуть карту HEALPix из одной системы координат (небесной) в другую систему координат (галактическую).
map_Gal_HP, footprint_Gal_HP = rp.reproject_to_healpix((map_Gal, target_header), coord_system_out= 'GALACTIC', nside=nside, nested=False)
По сути, это сводится к этим двум командам. Однако вам придется создать заголовок шаблона, указав масштаб и размер в пикселях, соответствующие промежуточной карте всего неба, которую вы хотите создать.
-----Полный рабочий пример (формат блокнота iPython + пример данных FITS)------
https://github.com/aaroncnb/healpix_coordtrans_example/tree/master
Код там должен работать очень быстро, но это потому, что карты сильно деградировали. Я сделал то же самое для своих карт NSIDE 1024 и 2048, и это заняло около часа.
------Изображения до и после------
person
Aaron Bell
schedule
25.04.2016