00001 #pragma ident "$Id: BLQDataReader.hpp 1717 2009-02-22 10:42:34Z architest $"
00002
00008 #ifndef GPSTK_BLQDATAREADER_HPP
00009 #define GPSTK_BLQDATAREADER_HPP
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #include <string>
00036 #include <map>
00037
00038 #include "FFTextStream.hpp"
00039 #include "StringUtils.hpp"
00040 #include "Matrix.hpp"
00041
00042
00043 using namespace std;
00044
00045 namespace gpstk
00046 {
00049
00096 class BLQDataReader : public FFTextStream
00097 {
00098 public:
00099
00101 BLQDataReader()
00102 {};
00103
00110 BLQDataReader(const char* fn)
00111 : FFTextStream(fn, std::ios::in)
00112 { loadData(); };
00113
00114
00121 BLQDataReader(const string& fn)
00122 : FFTextStream(fn.c_str(), std::ios::in)
00123 { loadData(); };
00124
00125
00128 virtual void open(const char* fn);
00129
00130
00133 virtual void open(const string& fn);
00134
00135
00137 virtual BLQDataReader& clearData()
00138 { OceanTidesData.clear(); return (*this); };
00139
00140
00152 virtual Matrix<double> getTideHarmonics(const string& station);
00153
00154
00156 virtual ~BLQDataReader() {};
00157
00158
00159 private:
00160
00161
00163 struct tideData
00164 {
00165
00166 tideData() : harmonics(6,11,0.0) {};
00167
00168 Matrix<double> harmonics;
00169 };
00170
00171
00173 typedef std::map<string, tideData>::const_iterator tideDataIt;
00174
00175
00177 std::map<string, tideData> OceanTidesData;
00178
00179
00186 void setData( const string& stationName,
00187 const tideData& data )
00188 { OceanTidesData.insert(pair<string, tideData>(stationName, data)); };
00189
00190
00192 virtual void loadData(void)
00193 throw( FFStreamError, gpstk::StringUtils::StringException );
00194
00195
00196 };
00197
00198
00200
00201 }
00202
00203 #endif