我想使用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向量只包含两个值,第一个是要添加到FITS文件的图像的尺寸(1D,2D,3D),第二个是它的大小。我不知道将图像添加到FITS文件的任何其他方法。如果有人这样做,我们非常欢迎您的帮助!
谢谢, 阿诺。
答案 0 :(得分:0)
addImage的最后一个参数的向量可以有任何维度 并且尺寸中的轴长度不同。没有要求 轴长度是相同的(你似乎称之为“方形”):
vector<long> extAx ;
extAx.push_back(imax) ;
extAx.push_back(jmax) ;
extAx.push_back(kmax) ;
pFits->addImage("h2a0array", FLOAT_IMG, extAx );