71 RinexMetMap::const_iterator itr =
data.find(thistype);
72 if (itr ==
data.end())
74 FFStreamError
err(
"Couldn't find data for " +
84 for (
size_t i = maxObsPerLine;
88 if (((i - maxObsPerLine) % maxObsPerContinuationLine) == 0)
93 line += string(4,
' ');
96 RinexMetMap::const_iterator itr =
data.find(thistype);
97 if (itr ==
data.end())
99 FFStreamError
err(
"Couldn't find data for " +
130 processFirstLine(line, hdr, hdr.
version);
136 if ((
int)(hdr.
obsTypeList.size() -
data.size()) < maxObsPerContinuationLine)
140 processContinuationLine(line, hdr);
145 FFStreamError e(
"Incorrect number of records");
162 (i < maxObsPerLine) && (i <
int(hdr.
obsTypeList.size()));
165 int currPos = 7*i + yrLen;
169 catch (std::exception &e)
171 FFStreamError
err(
"std::exception: " +
string(e.what()));
181 int currentElements =
data.size();
182 for (
int i = currentElements;
183 (i < (maxObsPerContinuationLine + currentElements)) &&
187 int currPos = 7*((i - maxObsPerLine) % maxObsPerContinuationLine) + 4;
191 catch (std::exception &e)
193 FFStreamError
err(
"std::exception: " +
string(e.what()));
210 const int YearRollover = 80;
214 if ( line.size() < 18+addYrLen ||
216 (line[3+addYrLen] !=
' ') ||
217 (line[6+addYrLen] !=
' ') ||
218 (line[9+addYrLen] !=
' ') ||
219 (line[12+addYrLen] !=
' ') ||
220 (line[15+addYrLen] !=
' '))
222 FFStreamError e(
"Invalid time format");
229 year =
asInt(line.substr(1, 2+addYrLen));
231 day =
asInt(line.substr(6+addYrLen, 3));
232 hour =
asInt(line.substr(9+addYrLen, 3));
233 min =
asInt(line.substr(12+addYrLen,3));
234 sec =
asInt(line.substr(15+addYrLen,3));
238 if (
year < YearRollover)
248 catch (std::exception &e)
250 FFStreamError
err(
"std::exception: " +
string(e.what()));
265 return string(26,
' ');
287 s <<
" " << writeTime(
time) << endl;
289 RinexMetMap::const_iterator itr;
290 for(itr =
data.begin(); itr !=
data.end(); itr++)
293 <<
" " << (*itr).second << endl;
300 s <<
" " << writeTime(
time) << endl;
302 RinexMetMap::const_iterator itr;
303 for(itr =
data.begin(); itr !=
data.end(); itr++)
306 <<
" " << fixed << setprecision(1) << (*itr).second << endl;