LocationFile Class Reference

Locations of the observatories. More...

#include <orsa_file.h>

Inheritance diagram for LocationFile:

Inheritance graph
[legend]
Collaboration diagram for LocationFile:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 LocationFile ()
void Read ()
Vector ObsPos (const std::string, const Date &)
void Open ()
void Close ()
virtual std::string GetFileName () const
virtual void SetFileName (std::string name_in)
virtual void SetFileName (char *name_in)

Public Attributes

std::map< std::string, Locationlocations
std::list< std::string > codes

Protected Attributes

std::string filename
FILE_TYPE file
FILE_STATUS status


Detailed Description

Locations of the observatories.

Definition at line 200 of file orsa_file.h.


Constructor & Destructor Documentation

LocationFile (  ) 

Definition at line 1058 of file orsa_file.cc.

01058 : ReadFile() { }


Member Function Documentation

void Read (  )  [virtual]

Implements ReadFile.

Definition at line 1060 of file orsa_file.cc.

References LocationFile::codes, File::file, orsa::FromUnits(), GETS_FILE, LocationFile::locations, Location::lon, Location::name, ReadFile::Open(), orsa::OPEN_R, ORSA_ERROR, orsa::pi, Location::pxy, Location::pz, orsa::REARTH, orsa::remove_leading_trailing_spaces(), REWIND_FILE, and File::status.

01060                           {
01061     
01062     Open();
01063     
01064     if (status != OPEN_R) {
01065       ORSA_ERROR("Status error!");
01066       return;
01067     }
01068     
01069     string obscode,longitude,pos_xy,pos_z,name;
01070     
01071     char line[300];
01072     
01073     Location dummy_loc;
01074     
01075     // dummy_loc.present = true;
01076     
01077     REWIND_FILE(file);
01078     
01079     string stag, spre="<pre>", spreend="</pre>";
01080     char tag[256];
01081     
01082     // reach <pre> and skip header
01083     while (GETS_FILE(line,300,file) != 0) {
01084       sscanf(line,"%s",tag);
01085       stag = tag;
01086       if (stag == spre) {
01087         // skip another line (header) and break;
01088         GETS_FILE(line,300,file);
01089         break;
01090       } 
01091     }
01092     
01093     while (GETS_FILE(line,300,file) != 0) {
01094       
01095       sscanf(line,"%s",tag);
01096       stag = tag;
01097       // cerr << "stag: " << stag << endl;
01098       if (stag == spreend) break;
01099       
01100       if (strlen(line) < 30) continue;
01101       
01102       obscode.assign(line,0,3);
01103       longitude.assign(line,4,8);
01104       pos_xy.assign(line,13,7);
01105       pos_z.assign(line,21,8);
01106       name.assign(line,30,strlen(line)-30-1); // the last -1 is set to avoid the '\n' character in the name
01107       
01108       remove_leading_trailing_spaces(longitude);
01109       remove_leading_trailing_spaces(pos_xy);
01110       remove_leading_trailing_spaces(pos_z);
01111       remove_leading_trailing_spaces(name);
01112       
01113       // set zero values, for locations like SOHO, HST...
01114       dummy_loc.lon = dummy_loc.pxy = dummy_loc.pz = 0.0;
01115       
01116       if (longitude.size()) dummy_loc.lon  = (pi/180.0) * atof(longitude.c_str());
01117       if (pos_xy.size())    dummy_loc.pxy  = FromUnits(atof(pos_xy.c_str()),REARTH);
01118       if (pos_z.size())     dummy_loc.pz   = FromUnits(atof(pos_z.c_str()), REARTH);
01119       //
01120       dummy_loc.name = name;
01121       
01122       locations[obscode] = dummy_loc;
01123       
01124       codes.push_back(obscode);
01125     }
01126     
01127   }

Here is the call graph for this function:

Vector ObsPos ( const std::string  ,
const Date  
)

void Open (  )  [inherited]

void Close (  )  [inherited]

virtual std::string GetFileName (  )  const [inline, virtual, inherited]

Definition at line 99 of file orsa_file.h.

References File::filename.

Referenced by OrsaFile::Read().

00099 { return filename; }

virtual void SetFileName ( std::string  name_in  )  [inline, virtual, inherited]

Definition at line 101 of file orsa_file.h.

References File::Close(), orsa::CLOSE, File::filename, and File::status.

Referenced by OrsaConfigFile::OrsaConfigFile(), and File::SetFileName().

00101                                                         {
00102       if (status != CLOSE) Close();
00103       filename = name_in;
00104     }

Here is the call graph for this function:

virtual void SetFileName ( char *  name_in  )  [inline, virtual, inherited]

Definition at line 106 of file orsa_file.h.

References File::SetFileName().

00106                                                      {
00107       std::string n = name_in;
00108       SetFileName (n);
00109     }

Here is the call graph for this function:


Member Data Documentation

std::map<std::string,Location> locations

Definition at line 211 of file orsa_file.h.

Referenced by LocationFile::Read().

std::list<std::string> codes

Definition at line 215 of file orsa_file.h.

Referenced by LocationFile::Read().

std::string filename [protected, inherited]

FILE_TYPE file [protected, inherited]

FILE_STATUS status [protected, inherited]


The documentation for this class was generated from the following files:

Generated on Sat May 10 00:04:07 2008 for liborsa by  doxygen 1.5.5