Changeset 861 in Sophya for trunk/SophyaExt


Ignore:
Timestamp:
Apr 10, 2000, 3:30:31 PM (25 years ago)
Author:
ansari
Message:

modif lecture Header image

Location:
trunk/SophyaExt/FitsIOServer
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fitsfile.cc

    r839 r861  
    147147      }
    148148}
    149 void FitsFile::makeHeaderImageOnFits(char type, int naxis1,int naxis2,int naxis3) const
    150 {
    151   int status = 0;
    152   long naxis = 3;
    153   if (naxis3 <=1)
    154     {
    155       naxis--;
    156       if (naxis2 <=1) naxis--;
    157     }
    158   long naxes[3];
    159   naxes[0]= naxis1;
    160   naxes[1]= naxis2;
    161   naxes[2]= naxis3;
     149void FitsFile::makeHeaderImageOnFits(char type, int nbdim, int* naxisn) const
     150{
     151  int status = 0;
     152  long naxis = nbdim;
     153  long* naxes = new long[nbdim];
     154  for (int k=0; k< nbdim; k++) naxes[k] = (long)naxisn[k];
    162155  if (type == 'D')
    163156    fits_create_img(fptr_,DOUBLE_IMG,naxis,naxes,&status);
     
    173166          throw PException("FitsFile:::makeHeaderImageOnFits:unprogrammed type of data ");
    174167        }
     168  delete [] naxes;
    175169  if( status ) printerror( status );
    176170
     
    221215
    222216  // read the NAXIS1 and NAXIS2 keyword to get image size
    223   long naxes[3]= {0,0,0};
     217  long* naxes = new long[naxis_] ;
    224218  int nfound;
    225219  fits_read_keys_lng(fptr_,"NAXIS",1,naxis_,naxes,&nfound,&status);
    226220  if( status ) printerror( status );
    227 
    228   naxis1_ = (int)naxes[0];
    229   naxis2_ = (int)naxes[1];
    230   naxis3_ = (int)naxes[2];
    231 
    232   if(naxis_ == 3 && naxis3_ > 1)
    233     {
    234       cout << "multi-dimensional image =" << naxis << endl;
    235       cout << "length Z axis = " << naxis3_ << endl;
    236       throw IOExc("FitsFile::put_fits_image %%Expected 1-D data or 2-D data");
    237     }
    238 
    239   nbData_ =  naxis1_;
    240   if(naxis >= 2) nbData_*= naxis2_;
    241   if(naxis == 3) nbData_*= naxis3_;
    242 }
    243 
    244 int FitsFile::nbDimOfImage() const
    245 {
    246   int ndim=3;
    247   if (naxis_ <3 ||  naxis3_ <= 1) ndim-- ;
    248   if (naxis_ <2 || (naxis3_ <= 1 && naxis2_ <= 1) ) ndim--;
    249   return ndim;
    250 }
     221  if (nfound != naxis_ )
     222    cout << " WARNING : " << nfound << " axes found, expexted naxis= " << naxis_ << endl;
     223  int lastSize = naxes[naxis_-1];
     224  while (lastSize <= 1)
     225    {
     226      naxis_--;
     227      lastSize = naxes[naxis_-1];
     228    }
     229
     230  nbData_ =  1;
     231  for (int k=0; k<naxis_; k++)
     232    {
     233      naxisn_.push_back( (int)naxes[k] );
     234      if (naxisn_[k] > 0) nbData_ *= naxisn_[k];
     235
     236    }
     237  delete [] naxes;
     238}
     239
    251240 
    252241  void FitsFile::GetBinTabFCol(double* valeurs,int nentries, int NoCol) const
  • trunk/SophyaExt/FitsIOServer/fitsfile.h

    r839 r861  
    2626  void    GetSingleColumn(float*  map, int nentries) const;
    2727  void    GetSingleColumn(int* map, int nentries) const;
    28   int     nbDimOfImage() const;
     28inline int nbDimOfImage() const {return naxis_;}
    2929inline int nbOfImageData() const { return nbData_; }
    30  inline void dimOfImageAxes(int& naxis1, int& naxis2, int& naxis3) const
    31    {
    32      naxis1 = naxis1_;
    33      naxis2 = naxis2_;
    34      naxis3 = naxis3_;
    35    }
     30 inline const vector<int>& dimOfImageAxes() const { return naxisn_;}
    3631  int     NbColsFromFits() const;
    3732  char    ColTypeFromFits(int nocol) const;
     
    5348  void putColToFits(int nocol, int nentries, char** donnees) const;
    5449  // Write elements into an ASCII or binary table column
    55   void makeHeaderImageOnFits(char type, int naxis1,int naxis2,int naxis3) const;
     50  void makeHeaderImageOnFits(char type, int nbdim, int* naxisn) const;
    5651  void makeHeaderBntblOnFits ( char* fieldType, char** Noms, int nentries, int tfields, DVList &dvl, char* extname,  vector<int> taille_des_chaines) const;
    5752
     
    7974  int bitpix_;
    8075  int naxis_;
    81   int naxis1_;
    82   int naxis2_;
    83   int naxis3_;
     76  vector<int> naxisn_;
    8477  int nbData_;
    8578
Note: See TracChangeset for help on using the changeset viewer.