Как создать не квадратные изображения с помощью ccfits?

Я хотел бы создать набор изображений не в квадрате, используя ccfits. Я могу сделать один в primaryHDU, например:

long axes[2] = { jmax, imax };
std::auto_ptr<CCfits::FITS> pFits(0);
pFits.reset ( new CCfits::FITS ( "fitfile.fits", FLOAT_IMG, 2, axes ) );

std::valarray<double> h2a0array ( jmax * imax );
for ( int i = 0 ; i < imax ; i++
for ( int j = 0 ; j < jmax ; j++ )
h2a0array [ j + jmax * i ] = i + j;

pFits->pHDU().write  ( fpixel, imax * jmax, h2a0array );

Но я не знаю, как добавить другие не квадратные изображения в мой файл FITS. Я предполагаю, что мне нужно использовать функцию CCFITS :: addImage, но я могу получить только квадратные изображения, используя ее:

long fpixel ( 1 );
std::vector<long> extAx ( 2, dim );
CCfits::ExtHDU* imageExt2 = pFits->addImage ( "h2a0array", FLOAT_IMG, extAx );
imageExt2->write ( fpixel, imax * jmax, h2a0array );

Вектор extAx содержит только два значения: первое — это размер (1D, 2D, 3D) изображения, добавляемого в файл FITS, а второе — его размер. Я не знаю другого способа добавить изображение в файл FITS. Если кто-то делает, ваша помощь очень приветствуется!

Спасибо,
Arnaud.

1

Решение

Вектор последнего аргумента addImage может иметь любое измерение
и разные длины осей в размерах. Там нет требования, что
длины осей одинаковы («квадрат», как вы его называете):

vector<long> extAx ;
extAx.push_back(imax) ;
extAx.push_back(jmax) ;
extAx.push_back(kmax) ;

pFits->addImage("h2a0array", FLOAT_IMG, extAx );
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]