Ignore:
Timestamp:
Jan 11, 2007, 7:07:52 PM (19 years ago)
Author:
cmv
Message:

gestion gros fichiers FITS dans fabtcolread et fabtwriter cmv 11/01/2007

File:
1 edited

Legend:

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

    r3114 r3128  
    5353 DoubleKey.resize(0);
    5454 LongKey.resize(0);
     55 LongLongKey.resize(0);
    5556 StringKey.resize(0);
    5657
     
    7879
    7980 // create d'un Primary HDU
    80  //long naxes[1] = {0};
    81  //if(fits_create_img(FitsPtr,BYTE_IMG,0,naxes,&sta)) {
     81 //LONGLONG naxes[1] = {0};
     82 //if(fits_create_imgll(FitsPtr,BYTE_IMG,0,naxes,&sta)) {
    8283 //  printerror(sta);
    8384 //  throw NullPtrError("FitsWriter::cr_or_upd_fits: Error creating Primary extension\n");
     
    125126}
    126127
     128/*! Write a long long value into Fits Header */
     129void FitsWriter::WriteKey(const char *keyname,LONGLONG val,char* comment)
     130{
     131 if(keyname==NULL || strlen(keyname)<=0) return;
     132 KeyLongLong k;
     133 k.keyname=keyname;
     134 k.val=val;
     135 if(comment) k.comment=comment; else k.comment="";
     136 LongLongKey.push_back(k);
     137}
     138
    127139/*! Write a string value into Fits Header */
    128140void FitsWriter::WriteKey(const char *keyname,string val,char* comment)
     
    142154 int sta=0;
    143155 if(DoubleKey.size()>0)
    144    for(unsigned int i=0;i<DoubleKey.size();i++) {
     156   for(unsigned long i=0;i<DoubleKey.size();i++) {
    145157     char* key = const_cast<char*>(DoubleKey[i].keyname.c_str());
    146158     char* com = const_cast<char*>(DoubleKey[i].comment.c_str());
     
    150162   }
    151163 if(LongKey.size()>0)
    152    for(unsigned int i=0;i<LongKey.size();i++) {
     164   for(unsigned long i=0;i<LongKey.size();i++) {
    153165     char* key = const_cast<char*>(LongKey[i].keyname.c_str());
    154166     char* com = const_cast<char*>(LongKey[i].comment.c_str());
     
    157169       printerror(sta);
    158170   }
     171 if(LongLongKey.size()>0)
     172   for(unsigned long i=0;i<LongLongKey.size();i++) {
     173     char* key = const_cast<char*>(LongLongKey[i].keyname.c_str());
     174     char* com = const_cast<char*>(LongLongKey[i].comment.c_str());
     175     LONGLONG val = LongLongKey[i].val;
     176     if(fits_update_key(FitsPtr,TLONGLONG,key,&val,com,&sta))
     177       printerror(sta);
     178   }
    159179 if(StringKey.size()>0)
    160    for(unsigned int i=0;i<StringKey.size();i++) {
     180   for(unsigned long i=0;i<StringKey.size();i++) {
    161181     char* key = const_cast<char*>(StringKey[i].keyname.c_str());
    162182     char* com = const_cast<char*>(StringKey[i].comment.c_str());
     
    167187 DoubleKey.resize(0);
    168188 LongKey.resize(0);
     189 LongLongKey.resize(0);
    169190 StringKey.resize(0);
    170191}
    171192
    172 void FitsWriter::printerrorwrite(const char* type,int col,long row,int sta)
     193void FitsWriter::printerrorwrite(const char* type,int col,LONGLONG row,int sta)
    173194{
    174195 if(sta==NUM_OVERFLOW) {NOverFlow++; return;}
     
    176197 char str[256];
    177198 sprintf(str,"FitsWriter::Write_%s: Error Writing Fits c=%d r=%ld sta=%d"
    178         ,type,col,row,sta);
     199        ,type,col,(long)row,sta);
    179200 throw NotAvailableOperation(str);
    180201}
     
    208229  int c5 = fbtw.AddCol("vard","","arcmin",TDOUBLE);    // col=4
    209230  fbtw.SetDebug(3);
    210   for(long i=0;i<1000;i++) {
     231  for(LONGLONG i=0;i<1000;i++) {
    211232    double x = i;
    212233    fbtw.Write(c1,i,1000.*x); // if overflow, managed by cfitsio
     
    228249  TVector<float>  dataf(100);
    229250  TVector<int_4>  datal(100);
    230   for(long i=0;i<9990;i+=100) {
    231     long i2=i+100-1; if(i2>=9990) i2=9990-1;
    232     for(long j=0;j<100;j++) datad(i) =  ...;
    233     for(long j=0;j<100;j++) dataf(i) =  ...;
    234     for(long j=0;j<100;j++) datal(i) =  ...;
     251  for(LONGLONG i=0;i<9990;i+=100) {
     252    LONGLONG i2=i+100-1; if(i2>=9990) i2=9990-1;
     253    for(LONGLONG j=0;j<100;j++) datad(i) =  ...;
     254    for(LONGLONG j=0;j<100;j++) dataf(i) =  ...;
     255    for(LONGLONG j=0;j<100;j++) datal(i) =  ...;
    235256    fbtw.Write(1,i,datal);
    236257    fbtw.Write(2,i,dataf);
     
    251272   cout<<"Writing Keys"<<endl;
    252273   fbtw.WriteKey("MYKEYL",(long)123456789,"my LONG key");
     274   fbtw.WriteKey("MYKEYLL",(LONGLONG)123456789,"my LONGLONG key");
    253275   fbtw.WriteKey("MYKEYD",1.9999999,"my DOUBLE key");
    254276   fbtw.WriteKey("MYKEYC","how are you ?","my CHAR* key");
     
    265287   cout<<"Writing Keys"<<endl;
    266288   fbtw2.WriteKey("MYKEYL",(long)-123456789,"my new LONG key");
     289   fbtw2.WriteKey("MYKEYLL",(LONGLONG)-123456789,"my new LONGLONG key");
    267290   fbtw2.WriteKey("MYKEYD",-1.9999999,"my new clef DOUBLE key");
    268291   fbtw2.WriteKey("MYKEYC","how are you NOW ?","my new CHAR* key");
     
    275298
    276299   cout<<">>>>> Write into the 2 tables simultaneously"<<endl;
    277    for(int i=0;i<NNN;i++) {
     300   for(LONGLONG i=0;i<NNN;i++) {
    278301     fbtw.Write(i1,i,i+1.);
    279302     fbtw.Write(i2,i,i+11.);
     
    462485   throw ParmError("FitsABTWriter::createtbl: Zero column asked !\n");
    463486
    464  long nrows = 0;
     487 LONGLONG nrows = 0;
    465488 char *extname = NULL;
    466489 char **ttype   = (char **) malloc(tfields*sizeof(char *));
     
    472495   strcpy(extname,ExtName.c_str());
    473496 }
    474  int i;
    475  for(i=0;i<tfields;i++) {
     497 for(int i=0;i<tfields;i++) {
    476498   ttype[i] = (char *) malloc((strlen(Label[i].c_str())+1)*sizeof(char));
    477499     strcpy(ttype[i],Label[i].c_str());
     
    491513 // menage
    492514 if(extname) delete [] extname;
    493  for(i=0;i<tfields;i++) {
     515 for(int i=0;i<tfields;i++) {
    494516   if(ttype[i]) delete [] ttype[i];
    495517   if(tform[i]) delete [] tform[i];
     
    525547
    526548/*! Write signed char (1 Byte) data to FITS file (see below) */
    527 void FitsABTWriter::Write(int col,long row,int_1 val)
     549void FitsABTWriter::Write(int col,LONGLONG row,int_1 val)
    528550{
    529551#ifdef TSBYTE
     
    538560
    539561/*! Write unsigned char (1 Byte) data to FITS file (see below) */
    540 void FitsABTWriter::Write(int col,long row,uint_1 val)
     562void FitsABTWriter::Write(int col,LONGLONG row,uint_1 val)
    541563{
    542564  if(FirstTime) createtbl();
     
    547569
    548570/*! Write short (2 Bytes) data to FITS file (see below) */
    549 void FitsABTWriter::Write(int col,long row,int_2 val)
     571void FitsABTWriter::Write(int col,LONGLONG row,int_2 val)
    550572{
    551573  if(FirstTime) createtbl();
     
    556578
    557579/*! Write unsigned short (2 Bytes) data to FITS file (see below) */
    558 void FitsABTWriter::Write(int col,long row,uint_2 val)
     580void FitsABTWriter::Write(int col,LONGLONG row,uint_2 val)
    559581{
    560582  if(FirstTime) createtbl();
     
    565587
    566588/*! Write long (4 Bytes) data to FITS file (see below) */
    567 void FitsABTWriter::Write(int col,long row,int_4 val)
     589void FitsABTWriter::Write(int col,LONGLONG row,int_4 val)
    568590{
    569591  if(FirstTime) createtbl();
     
    576598
    577599/*! Write unsigned long (4 Bytes) data to FITS file (see below) */
    578 void FitsABTWriter::Write(int col,long row,uint_4 val)
     600void FitsABTWriter::Write(int col,LONGLONG row,uint_4 val)
    579601{
    580602  if(FirstTime) createtbl();
     
    587609
    588610/*! Write long long (8 Bytes) data to FITS file (see below) */
    589 void FitsABTWriter::Write(int col,long row,int_8 val)
     611void FitsABTWriter::Write(int col,LONGLONG row,int_8 val)
    590612{
    591613#ifdef TLONGLONG
     
    600622
    601623/*! Write float data to FITS file (see below) */
    602 void FitsABTWriter::Write(int col,long row,float val)
     624void FitsABTWriter::Write(int col,LONGLONG row,float val)
    603625{
    604626  if(FirstTime) createtbl();
     
    609631
    610632/*! Write double data to FITS file (see below) */
    611 void FitsABTWriter::Write(int col,long row,double val)
     633void FitsABTWriter::Write(int col,LONGLONG row,double val)
    612634{
    613635  if(FirstTime) createtbl();
     
    628650
    629651/*! Write a vector of unsigned short (2 Bytes) data to FITS file (see below) */
    630 long FitsABTWriter::Write(int col,long row,TVector<uint_2>& val)
    631 {
    632   if(FirstTime) createtbl();
    633   long nel = val.Size();
     652LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<uint_2>& val)
     653{
     654  if(FirstTime) createtbl();
     655  LONGLONG nel = val.Size();
    634656  int sta=0;
    635657  if(fits_write_col(FitsPtr,TUSHORT,col+1,row+1,1,nel,val.Data(),&sta))
     
    639661
    640662/*! Write a vector of long (4 Bytes) data to FITS file (see below) */
    641 long FitsABTWriter::Write(int col,long row,TVector<int_4>& val)
    642 {
    643   if(FirstTime) createtbl();
    644   long nel = val.Size();
     663LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<int_4>& val)
     664{
     665  if(FirstTime) createtbl();
     666  LONGLONG nel = val.Size();
    645667  int sta=0;
    646668  // Bug ou inconsistence cfitsio sur machine ou long=8Bytes ?
     
    652674
    653675/*! Write a vector of long long (8 Bytes) data to FITS file (see below) */
    654 long FitsABTWriter::Write(int col,long row,TVector<int_8>& val)
     676LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<int_8>& val)
    655677{
    656678#ifdef TLONGLONG
    657679  if(FirstTime) createtbl();
    658   long nel = val.Size();
     680  LONGLONG nel = val.Size();
    659681  int sta=0;
    660682  if(fits_write_col(FitsPtr,TLONGLONG,col+1,row+1,1,nel,val.Data(),&sta))
     
    667689
    668690/*! Write a vector of float data to FITS file (see below) */
    669 long FitsABTWriter::Write(int col,long row,TVector<float>&  val)
    670 {
    671   if(FirstTime) createtbl();
    672   long nel = val.Size();
     691LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<float>&  val)
     692{
     693  if(FirstTime) createtbl();
     694  LONGLONG nel = val.Size();
    673695  int sta=0;
    674696  if(fits_write_col(FitsPtr,TFLOAT,col+1,row+1,1,nel,val.Data(),&sta))
     
    678700
    679701/*! Write a vector of double data to FITS file (see below) */
    680 long FitsABTWriter::Write(int col,long row,TVector<double>& val)
    681 {
    682   if(FirstTime) createtbl();
    683   long nel = val.Size();
     702LONGLONG FitsABTWriter::Write(int col,LONGLONG row,TVector<double>& val)
     703{
     704  if(FirstTime) createtbl();
     705  LONGLONG nel = val.Size();
    684706  int sta=0;
    685707  if(fits_write_col(FitsPtr,TDOUBLE,col+1,row+1,1,nel,val.Data(),&sta))
     
    785807
    786808 int sta=0;
    787  if(fits_create_img(FitsPtr,BitPix,2,Naxis,&sta)) {
     809 if(fits_create_imgll(FitsPtr,BitPix,2,Naxis,&sta)) {
    788810   printerror(sta);
    789811   throw NullPtrError("FitsImg2DWriter::createimg: Error creating image extension\n");
     
    802824 uint_2* arr = new uint_2[Naxis[0]];
    803825
    804  for(int l=0;l<Naxis[1];l++) {
    805    for(int c=0;c<Naxis[0];c++) arr[c] = data(l,c);
    806    long deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
     826 for(LONGLONG l=0;l<Naxis[1];l++) {
     827   for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c);
     828   LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
    807829   fits_write_img(FitsPtr,TUSHORT,deb,nel,arr,&sta);
    808830   if(sta) {
     
    823845 int_4* arr = new int_4[Naxis[0]];
    824846
    825  for(int l=0;l<Naxis[1];l++) {
    826    for(int c=0;c<Naxis[0];c++) arr[c] = data(l,c);
    827    long deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
     847 for(LONGLONG l=0;l<Naxis[1];l++) {
     848   for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c);
     849   LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
    828850   fits_write_img(FitsPtr,T,deb,nel,arr,&sta);
    829851   if(sta) {
     
    843865 float* arr = new float[Naxis[0]];
    844866
    845  for(int l=0;l<Naxis[1];l++) {
    846    for(int c=0;c<Naxis[0];c++) arr[c] = data(l,c);
    847    long deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
     867 for(LONGLONG l=0;l<Naxis[1];l++) {
     868   for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c);
     869   LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
    848870   fits_write_img(FitsPtr,TFLOAT,deb,nel,arr,&sta);
    849871   if(sta) {
     
    863885 double* arr = new double[Naxis[0]];
    864886
    865  for(int l=0;l<Naxis[1];l++) {
    866    for(int c=0;c<Naxis[0];c++) arr[c] = data(l,c);
    867    long deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
     887 for(LONGLONG l=0;l<Naxis[1];l++) {
     888   for(LONGLONG c=0;c<Naxis[0];c++) arr[c] = data(l,c);
     889   LONGLONG deb = l*Naxis[0]+1, nel = Naxis[0]; int sta=0;
    868890   fits_write_img(FitsPtr,TDOUBLE,deb,nel,arr,&sta);
    869891   if(sta) {
     
    972994
    973995 int sta=0;
    974  if(fits_create_img(FitsPtr,BitPix,3,Naxis,&sta)) {
     996 if(fits_create_imgll(FitsPtr,BitPix,3,Naxis,&sta)) {
    975997   printerror(sta);
    976998   throw NullPtrError("FitsImg3DWriter::createimg: Error creating 3D image extension\n");
     
    9911013 uint_2* arr = new uint_2[Naxis[0]];
    9921014
    993  for(int k=0;k<Naxis[2];k++) for(int j=0;j<Naxis[1];j++) {
    994    for(int i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
    995    long deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
     1015 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) {
     1016   for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
     1017   LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
    9961018   fits_write_img(FitsPtr,TUSHORT,deb,nel,arr,&sta);
    9971019   if(sta) {
     
    10151037 int_4* arr = new int_4[Naxis[0]];
    10161038
    1017  for(int k=0;k<Naxis[2];k++) for(int j=0;j<Naxis[1];j++) {
    1018    for(int i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
    1019    long deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
     1039 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) {
     1040   for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
     1041   LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
    10201042   fits_write_img(FitsPtr,T,deb,nel,arr,&sta);
    10211043   if(sta) {
     
    10381060 float* arr = new float[Naxis[0]];
    10391061
    1040  for(int k=0;k<Naxis[2];k++) for(int j=0;j<Naxis[1];j++) {
    1041    for(int i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
    1042    long deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
     1062 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) {
     1063   for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
     1064   LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
    10431065   fits_write_img(FitsPtr,TFLOAT,deb,nel,arr,&sta);
    10441066   if(sta) {
     
    10611083 double* arr = new double[Naxis[0]];
    10621084
    1063  for(int k=0;k<Naxis[2];k++) for(int j=0;j<Naxis[1];j++) {
    1064    for(int i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
    1065    long deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
     1085 for(LONGLONG k=0;k<Naxis[2];k++) for(LONGLONG j=0;j<Naxis[1];j++) {
     1086   for(LONGLONG i=0;i<Naxis[0];i++) arr[i] = data(i,j,k);
     1087   LONGLONG deb = Naxis[0]*(j+Naxis[1]*k)+1, nel = Naxis[0]; int sta=0;
    10661088   fits_write_img(FitsPtr,TDOUBLE,deb,nel,arr,&sta);
    10671089   if(sta) {
Note: See TracChangeset for help on using the changeset viewer.