Changeset 2902 in Sophya for trunk/SophyaPI/ProgPI/fitsbtadapter.cc
- Timestamp:
- Jan 16, 2006, 11:35:04 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/ProgPI/fitsbtadapter.cc
r2615 r2902 1 1 /* Interface Fits BINARY/ASCII Table cmv 21/05/2001 */ 2 /* Ajout commandes generique lecture/ecriture FITS */ 3 /* Reza , Jan 2006 */ 4 5 2 6 #include "sopnamsp.h" 3 7 #include "machdefs.h" … … 15 19 #include "fbtntintf.h" 16 20 21 #include "fitsmanager.h" 22 #include "fitshandler.h" 23 #include "fiosinit.h" 24 17 25 //////////////////////////////////////////////////////////// 18 26 class NOMAdapter_FitsBT : public NObjMgrAdapter { … … 95 103 fitsbtadapterExecutor::fitsbtadapterExecutor() 96 104 { 105 FitsIOServerInit(); // On s'assure de l'initialisation du module FitsIOServer 106 97 107 NamedObjMgr omg; 98 108 PIACmd * mpiac = omg.GetImgApp()->CmdInterpreter(); … … 111 121 usage += "\n hdu : Fits HDU (if <=0 take first binary/ascii table)"; 112 122 usage += "\n buflen[,bufsens,lp] : buffer length (sens) for fits reading (default is 100,1,0)"; 123 usage += "\n See also scanfits writefits readfits "; 113 124 mpiac->RegisterCommand(kw, usage, this, hgrp); 125 126 kw = "scanfits"; 127 usage = "scanfits: scan fits files and print information on each HDU\n" ; 128 usage += "Usage: scanfits FileName [slev=0 ... 3]\n"; 129 usage += "slev=1,3: header keywords , slev=2,3: try to read each HDU"; 130 mpiac->RegisterCommand(kw, usage, this, hgrp); 131 132 kw = "writefits"; 133 usage = "writefits: Write objects to a fits file \n" ; 134 usage += "Usage: writefits nameobj/pattern FileName \n"; 135 usage += "(use FitsManager) .... "; 136 usage += "See also scanfits readfits fitsadapt "; 137 mpiac->RegisterCommand(kw, usage, this, hgrp); 138 139 kw = "readfits"; 140 usage = "readfits: Read all HDU's of a fits file \n" ; 141 usage += "Usage: readfits nameobj/pattern FileName \n"; 142 usage += "(use FitsManager) .... "; 143 usage += "See also scanfits writefits fitsadapt "; 144 mpiac->RegisterCommand(kw, usage, this, hgrp); 114 145 } 115 146 … … 137 168 omg.AddObj(fbt,nom_obj); 138 169 } 170 else if (kw == "scanfits") { 171 if(tokens.size() < 1) { 172 cout<<"Usage: scanfits FileName [slev] "<<endl; 173 return 1; 174 } 175 int slev = 0; 176 if(tokens.size() > 1) slev = atoi(tokens[1].c_str()); 177 FitsManager::ScanFile(tokens[0], slev); 178 return 0; 179 } 180 else if (kw == "writefits") { 181 if(tokens.size() < 2) { 182 cout<<"Usage: writefits nameobj/pattern FileName "<<endl; 183 return 1; 184 } 185 vector<string> noms; 186 omg.GetObjList(tokens[0], noms); 187 if (noms.size() < 1) { 188 cout<<"writefits/Error: no object with this name "<<endl; 189 return 2; 190 } 191 cout << "writefits: Opening/Creating fits file " << tokens[1] << endl; 192 FitsInOutFile fos(tokens[1], FitsInOutFile::Fits_Create); 193 for(int kk=0; kk<noms.size(); kk++) { 194 AnyDataObj* co = omg.GetObj(noms[kk]); 195 if (co == NULL) continue; 196 fos.SetNextExtensionName(noms[kk]); 197 try { 198 FitsManager::Write(fos, *co); 199 cout << "writefits: Object " << noms[kk] << " written to HDU No " << fos.CurrentHDU() << endl; 200 } 201 catch (NotFoundExc & exc) { 202 cout << "writefits/Error writing object " << noms[kk] << " -> " << exc.Msg() << endl; 203 } 204 } 205 return 0; 206 } 207 else if (kw == "readfits") { 208 if(tokens.size() < 1) { 209 cout<<"Usage: readfits FileName "<<endl; 210 return 1; 211 } 212 cout << "readfits: Opening fits file " << tokens[0] << endl; 213 FitsInOutFile fis(tokens[0], FitsInOutFile::Fits_RO); 214 string bnom = omg.GetServiceObj()->FileName2Name(tokens[0]); 215 string nom = bnom; 216 char bun[16]; 217 int kon = 0; 218 for(int k=0; k<fis.NbHDUs(); k++) { 219 try { 220 FitsHandlerInterface* fhi = FitsManager::Read(fis); 221 AnyDataObj* obj = fhi->DataObj(); 222 if (obj) { 223 kon++; 224 if (kon > 1) { 225 sprintf(bun, "%d", kon); 226 nom = bnom + bun; 227 } 228 omg.AddObj(obj, nom, false); 229 cout << "readfits: " << (string)typeid(*obj).name() 230 << " read From HDU " << k+1 << " ->" << nom << endl; 231 } 232 else delete fhi; 233 //Reza, Jan 2006: Sinon, le fhi ne sera jamais supprime, tant pis 234 // Il ne prend pas beaucoup de place, une fois que son objet est delete 235 } 236 catch (NotFoundExc & exc) { 237 cout << "readfits/Error - HDU=" << k+1 << " : " << exc.Msg() << endl; 238 } 239 fis.MoveToNextHDU(); 240 } 241 return 0; 242 } 139 243 return(0); 140 244 }
Note:
See TracChangeset
for help on using the changeset viewer.