Changeset 2197 in Sophya for trunk/SophyaExt/FitsIOServer/fitsxntuple.cc
- Timestamp:
- Sep 24, 2002, 4:03:36 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsxntuple.cc
r1499 r2197 86 86 for (k=0; k<nbcols;k++) 87 87 { 88 88 89 FitsFile::FitsDataType ss= is.ColTypeFromFits(k); 89 if (ss == FitsFile::FitsDataType_double) DfitsCol.push_back(k); 90 else if (ss == FitsFile::FitsDataType_float) FfitsCol.push_back(k); 91 else if (ss == FitsFile::FitsDataType_int) IfitsCol.push_back(k); 92 else if (ss == FitsFile::FitsDataType_long) IfitsCol.push_back(k); 93 else if (ss == FitsFile::FitsDataType_byte) IfitsCol.push_back(k); 94 else if (ss == FitsFile::FitsDataType_char) SfitsCol.push_back(k); 95 else { 96 cout << " FITS_XNTuple: colonne fits " << k << " type= " << (int) ss << endl; 97 throw IOExc("type de champ inconnu"); 98 } 90 switch (ss) 91 { 92 case FitsFile::FitsDataType_double : 93 { 94 DfitsCol.push_back(k); 95 break; 96 } 97 case FitsFile::FitsDataType_float : 98 { 99 FfitsCol.push_back(k); 100 break; 101 } 102 case FitsFile::FitsDataType_int : 103 { 104 IfitsCol.push_back(k); 105 break; 106 } 107 case FitsFile::FitsDataType_long : 108 { 109 IfitsCol.push_back(k); 110 break; 111 } 112 case FitsFile::FitsDataType_byte : 113 { 114 IfitsCol.push_back(k); 115 break; 116 } 117 case FitsFile::FitsDataType_char : 118 { 119 SfitsCol.push_back(k); 120 break; 121 } 122 default : 123 { 124 cout << " FITS_XNTuple: colonne fits " << k << " type= " << (int) ss << endl; 125 throw IOExc("type de champ inconnu"); 126 } 127 } 99 128 } 100 129 char ** ColName = new char*[nbcols]; … … 143 172 if (ND != dobj_->NDVar() || NF != dobj_->NFVar() || NI != dobj_->NIVar() || NS != dobj_->NSVar()) 144 173 { 145 cout << " WARNING : FITS_XNTuple : XNTuple reconfigured " << endl;174 // cout << " WARNING : FITS_XNTuple : XNTuple reconfigured " << endl; 146 175 (*dobj_)= XNTuple(ND, NF, NI, NS,ColName); 147 176 } … … 155 184 delete [] ColName; 156 185 157 double* dligne;158 float* fligne;159 int * iligne;186 r_8* dligne; 187 r_4* fligne; 188 int_4* iligne; 160 189 char** cligne; 161 190 … … 188 217 for (numLigne=firstln; numLigne < lastln; numLigne++) 189 218 { 190 is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne ); 191 dobj_->Fill((r_8*)dligne, (r_4*)fligne, (int_4*)iligne, cligne); 219 const FitsFile::BufferLine& bfligne = is.GetBufferLine(numLigne); 220 int k; 221 int rang; 222 int dcount =0; 223 int fcount =0; 224 int icount =0; 225 int ccount = 0; 226 for (k=0; k<nbcols;k++) 227 { 228 rang = bfligne.identificateur()[k].second; 229 switch (bfligne.identificateur()[k].first) 230 { 231 case FitsFile::FitsDataType_double : 232 { 233 dligne[dcount++] = bfligne.r_8Array(rang); 234 break; 235 } 236 case FitsFile::FitsDataType_float : 237 { 238 fligne[fcount++] = bfligne.r_4Array(rang); 239 break; 240 } 241 case FitsFile::FitsDataType_short : 242 { 243 iligne[icount++] = bfligne.int_2Array(rang); 244 break; 245 } 246 case FitsFile::FitsDataType_int : 247 { 248 iligne[icount++] = bfligne.int_4Array(rang); 249 break; 250 } 251 case FitsFile::FitsDataType_long : 252 { 253 iligne[icount++] = (int_4)bfligne.int_8Array(rang); 254 break; 255 } 256 case FitsFile::FitsDataType_byte : 257 { 258 iligne[icount++] = (int_4)bfligne.u_charArray(rang); 259 break; 260 } 261 case FitsFile::FitsDataType_char : 262 { 263 strncpy( cligne[ccount++], bfligne.stringArray(rang).c_str(),bfligne.stringArray(rang).length()); 264 break; 265 } 266 267 default: 268 { 269 throw PException(" FITS_XNTuple::ReadFromFits : unsupported FITS data type"); 270 } 271 } 272 273 } 274 // is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne ); 275 // dobj_->Fill((r_8*)dligne, (r_4*)fligne, (int_4*)iligne, cligne); 276 dobj_->Fill(dligne, fligne, iligne, cligne); 192 277 } 193 278 delete [] dligne; … … 234 319 for (k=0; k<dobj_->NIVar();k++) 235 320 { 236 types+=' I';321 types+='J'; 237 322 } 238 323 for (k=0; k<dobj_->NSVar();k++) … … 277 362 { 278 363 for(int j = 0; j < nrows; j++) icolumn[j]= dobj_->GetIVal(j,compt); 364 cout << " fitsx.. va ecrire la colonne " << endl; 365 for(int j = 0; j < nrows; j++) cout << icolumn[j] << endl;; 366 279 367 os.PutColToFits(compt, nrows, icolumn); 280 368 compt++;
Note:
See TracChangeset
for help on using the changeset viewer.