Changeset 4481 in ntrip for trunk/BNC


Ignore:
Timestamp:
Aug 3, 2012, 8:06:24 PM (12 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncrinex.cpp

    r4479 r4481  
    7777  _headerWritten = false;
    7878  _reconnectFlag = false;
    79   _reloadTable   = false;
    80   _reloadDone    = false;
    8179
    8280  bncSettings settings;
     
    155153  QStringList table;
    156154  bncTableDlg::getFullTable(_ntripVersion, _mountPoint.host(),
    157                             _mountPoint.port(), table, _reloadTable);
     155                            _mountPoint.port(), table, true);
    158156  QString net;
    159157  QStringListIterator it(table);
     
    206204    query->waitForRequestResult(url, outData);
    207205    if (query->status() == bncNetQuery::finished) {
    208       _headerLines.clear();
    209       bool firstLineRead = false;
     206      irc = success;
    210207      QTextStream in(outData);
    211       QString line = in.readLine();
    212       while ( !line.isNull() ) {
    213         if (line.indexOf("MARKER NAME") != -1) {
    214           irc = success;
    215         }
    216         if (line.indexOf("RINEX VERSION") != -1) {
    217           if (_rinexVers == 3) {
    218             _headerLines.append("     3.00           OBSERVATION DATA"
    219                                 "    M (MIXED)"
    220                                 "           RINEX VERSION / TYPE");
    221           }
    222           else {
    223             _headerLines.append("     2.11           OBSERVATION DATA"
    224                                 "    M (MIXED)"
    225                                 "           RINEX VERSION / TYPE");
    226           }
    227           _headerLines.append("PGM / RUN BY / DATE");
    228           firstLineRead = true;
    229         }
    230         else if (firstLineRead) {
    231           if (line.indexOf("END OF HEADER") != -1) {
    232             _headerLines.append("# / TYPES OF OBSERV");
    233             if (_rinexVers == 2) {
    234               _headerLines.append(
    235                     QString("     1     1").leftJustified(60, ' ', true) +
    236                     "WAVELENGTH FACT L1/2");
    237             }
    238             _headerLines.append("TIME OF FIRST OBS");
    239             _headerLines.append( line );
    240             break;
    241           }
    242           else {
    243             _headerLines.append( line );
    244           }
    245         }
    246         line = in.readLine();
    247       }
    248     }
    249     else {
    250       delete query;
    251       return failure;
    252     }
     208      _header.read(&in);
     209    }
     210
    253211    delete query;
    254212  }
     
    265223  QFile skl(_sklName);
    266224  if ( skl.exists() && skl.open(QIODevice::ReadOnly) ) {
    267     _headerLines.clear();
    268225    QTextStream in(&skl);
    269     while ( !in.atEnd() ) {
    270       _headerLines.append( in.readLine() );
    271       if (_headerLines.last().indexOf("END OF HEADER") != -1) {
    272         break;
    273       }
    274     }
     226    _header.read(&in);
    275227  }
    276228
     
    281233    QDate currDate = currentDateAndTimeGPS().date();
    282234    if ( !_skeletonDate.isValid() || _skeletonDate != currDate ) {
    283       if ( downloadSkeleton() == success) {
    284         _skeletonDate = currDate;
    285         _reloadDone = false;
    286       }
    287       else {
    288         if(!_reloadDone) {
    289           _reloadTable = true;
    290           if ( downloadSkeleton() == success) {
    291             _skeletonDate = currDate;
    292           }
    293           _reloadTable = false;
    294           _reloadDone = true;
    295         }
    296       }
     235      downloadSkeleton();
     236      _skeletonDate = currDate;
    297237    }
    298238  }
     
    436376  // --------------------
    437377  readSkeleton();
    438   if (_headerLines.size() > 0) {
    439     bool typesOfObservationsWritten = false;
    440     QStringListIterator it(_headerLines);
    441     while (it.hasNext()) {
    442       QString line = it.next();
    443       if      (line.indexOf("PGM / RUN BY / DATE") != -1) {
    444         if (_rinexVers == 3) {
    445           QString hlp = currentDateAndTimeGPS().toString("yyyyMMdd hhmmss UTC").leftJustified(20, ' ', true);
    446           _out << _pgmName.toAscii().data() << _userName.toAscii().data()
    447                << hlp.toAscii().data() << "PGM / RUN BY / DATE" << endl;
    448         }
    449         else {
    450           QString hlp = currentDateAndTimeGPS().date().toString("dd-MMM-yyyy").leftJustified(20, ' ', true);
    451           _out << _pgmName.toAscii().data() << _userName.toAscii().data()
    452                << hlp.toAscii().data() << "PGM / RUN BY / DATE" << endl;
    453         }
    454       }
    455       else if ( !typesOfObservationsWritten &&
    456                 (line.indexOf("# / TYPES OF OBSERV") != -1 ||
    457                  line.indexOf("SYS / # / OBS TYPES") != -1) ) {
    458         typesOfObservationsWritten = true;
    459         writeObsTypes();
    460       }
    461       else if (line.indexOf("TIME OF FIRST OBS") != -1) {
    462         _out << datTim.toString("  yyyy    MM    dd"
    463                                 "    hh    mm   ss.zzz0000").toAscii().data();
    464         _out << "     GPS         TIME OF FIRST OBS"    << endl;
    465         QString hlp = (format.left(6) + QString(" %1").arg(_mountPoint.host() +
    466                       _mountPoint.path())).leftJustified(60, ' ', true);
    467         _out << hlp.toAscii().data() << "COMMENT" << endl;
    468       }
    469       else if (line.indexOf("MARKER NAME") != -1) {
    470         if (_rinexVers == 3) {
    471           _out << line.toAscii().data() << endl;
    472           _out << setw(71) << "GEODETIC                                                    MARKER TYPE" << endl;
    473         }
    474         else {
    475           _out << line.toAscii().data() << endl;
    476         }
    477       }
    478       else if (line.indexOf("END OF HEADER") != -1) {
    479         if (!typesOfObservationsWritten) {
    480           writeObsTypes();
    481         }
    482         _out << line.toAscii().data() << endl;
    483         break;
    484       }
    485       else {
    486         _out << line.toAscii().data() << endl;
    487       }
    488     }
    489   }
    490 
    491   // Write Dummy Header
    492   // ------------------
    493   else {
    494     double antennaNEU[3]; antennaNEU[0] = antennaNEU[1] = antennaNEU[2] = 0.0;
    495    
    496     if (_rinexVers == 3) {
    497       _out << "     3.00           OBSERVATION DATA    M (MIXED)           RINEX VERSION / TYPE" << endl;
    498       QString hlp = currentDateAndTimeGPS().toString("yyyyMMdd hhmmss UTC").leftJustified(20, ' ', true);
    499       _out << _pgmName.toAscii().data() << _userName.toAscii().data()
    500            << hlp.toAscii().data() << "PGM / RUN BY / DATE" << endl;
    501     }
    502     else {
    503       _out << "     2.11           OBSERVATION DATA    M (MIXED)           RINEX VERSION / TYPE" << endl;
    504       QString hlp = currentDateAndTimeGPS().date().toString("dd-MMM-yyyy").leftJustified(20, ' ', true);
    505       _out << _pgmName.toAscii().data() << _userName.toAscii().data()
    506            << hlp.toAscii().data() << "PGM / RUN BY / DATE" << endl;
    507     }
    508     _out.setf(ios::left);
    509     _out << setw(60) << _statID.data()                               << "MARKER NAME"          << endl;
    510     if (_rinexVers == 3) {
    511       _out << setw(60) << "unknown"                                  << "MARKER TYPE      "    << endl;
    512     }
    513     _out << setw(60) << "unknown             unknown"                << "OBSERVER / AGENCY"    << endl;
    514     _out << setw(20) << "unknown"   
    515          << setw(20) << "unknown"
    516          << setw(20) << "unknown"                                    << "REC # / TYPE / VERS"  << endl;
    517     _out << setw(20) << "unknown"
    518          << setw(20) << "unknown"
    519          << setw(20) << " "                                          << "ANT # / TYPE"         << endl;
    520     _out.unsetf(ios::left);
    521     _out << setw(14) << setprecision(4) << _approxPos[0]
    522          << setw(14) << setprecision(4) << _approxPos[1]
    523          << setw(14) << setprecision(4) << _approxPos[2]
    524          << "                  "                                     << "APPROX POSITION XYZ"  << endl;
    525     _out << setw(14) << setprecision(4) << antennaNEU[0]
    526          << setw(14) << setprecision(4) << antennaNEU[1]
    527          << setw(14) << setprecision(4) << antennaNEU[2]
    528          << "                  "                                     << "ANTENNA: DELTA H/E/N" << endl;
    529        
    530     writeObsTypes();
    531 
    532     _out << datTim.toString("  yyyy    MM    dd"
    533                                 "    hh    mm   ss.zzz0000").toAscii().data();
    534     _out << "     GPS         TIME OF FIRST OBS"    << endl;
    535     QString hlp = (format.left(6) + QString(" %1").arg(_mountPoint.host() +
    536           _mountPoint.path())).leftJustified(60, ' ', true);
    537     _out << hlp.toAscii().data() << "COMMENT" << endl;
    538 
    539     if (_nmea == "yes") {
    540     hlp = ("NMEA LAT=" + _latitude + " " + "LONG=" + _longitude).leftJustified(60, ' ',true);
    541     _out << hlp.toAscii().data() << "COMMENT" << endl; }
    542 
    543     _out << "                                                            END OF HEADER"        << endl;
    544   }
     378
     379  QByteArray headerLines;
     380  QTextStream outHlp(&headerLines);
     381  _header.write(&outHlp);
     382  outHlp.flush();
     383  _out << headerLines.data();
    545384
    546385  _headerWritten = true;
    547 }
    548 
    549 //
    550 ////////////////////////////////////////////////////////////////////////////
    551 void bncRinex::writeObsTypes() {
    552   if (_rinexVers == 3) {
    553     QMapIterator<char, QVector<QString> > it(_rnxTypes);
    554     while (it.hasNext()) {
    555       it.next();
    556       char sys                      = it.key();
    557       const QVector<QString>& types = it.value();
    558       QString hlp;
    559       QTextStream(&hlp) << QString("%1  %2").arg(sys).arg(types.size(), 3);
    560       for (int ii = 0; ii < types.size(); ii++) {
    561         QTextStream(&hlp) << QString(" %1").arg(types[ii], -3);   
    562         if ((ii+1) % 13 == 0 || ii == types.size()-1) {
    563           _out << QString(hlp.leftJustified(60) + "SYS / # / OBS TYPES\n").toAscii().data();
    564           hlp = QString().leftJustified(6);
    565         }
    566       }
    567     }
    568   }
    569   else {
    570     _out << "     1     1                                                WAVELENGTH FACT L1/2" << endl;
    571     _out << "     8    C1    P1    L1    S1    C2    P2    L2    S2      # / TYPES OF OBSERV"  << endl;
    572   }
    573386}
    574387
  • trunk/BNC/src/bncrinex.h

    r4406 r4481  
    3030
    3131#include "bncconst.h"
     32#include "rinex/rnxobsfile.h"
    3233
    3334class t_obs;
     
    6667   void closeFile();
    6768   t_irc downloadSkeleton();
    68    void writeObsTypes();
    6969
    7070   QByteArray    _statID;
     
    7272   QList<t_obs>  _obs;
    7373   std::ofstream _out;
    74    QStringList   _headerLines;
    7574   bool          _headerWritten;
    7675   QDateTime     _nextCloseEpoch;
     
    8786   QDate         _skeletonDate;
    8887   int           _rinexVers;
    89    bool          _reloadTable;
    90    bool          _reloadDone;
    9188   double        _approxPos[3];
    9289   int           _samplingRate;
     
    9794
    9895   QMap<char, QVector<QString> > _rnxTypes;
     96
     97   t_rnxObsHeader _header;
    9998};
    10099
  • trunk/BNC/src/combination/bnccomb.cpp

    r4183 r4481  
    3737const double sigObs        =   0.05;
    3838
    39 const int MAXPRN_GPS     = 32;
    4039const int MAXPRN_GLONASS = 24;
    4140
  • trunk/BNC/src/rinex/reqcedit.cpp

    r4364 r4481  
    180180        txtMap["COMMENT"]  = comment;
    181181      }
    182       outObsFile.writeHeader(&txtMap);
     182      obsFile->header().write(obsFile->stream(), &txtMap);
    183183    }
    184184    else {
  • trunk/BNC/src/rinex/rnxobsfile.cpp

    r4480 r4481  
    203203}
    204204
     205// Write Header
     206////////////////////////////////////////////////////////////////////////////
     207void t_rnxObsHeader::write(QTextStream* stream,
     208                           const QMap<QString, QString>* txtMap) const {
     209
     210  bncApp* app = (bncApp*) qApp;
     211
     212  QString     runBy = app->userName();
     213  QStringList comments;
     214
     215  if (txtMap) {
     216    QMapIterator<QString, QString> it(*txtMap);
     217    while (it.hasNext()) {
     218      it.next();
     219      if      (it.key() == "RUN BY") {
     220        runBy = it.value();
     221      }
     222      else if (it.key() == "COMMENT") {
     223        comments = it.value().split("\\n", QString::SkipEmptyParts);
     224      }
     225    }
     226  }
     227
     228  *stream << QString("%1           Observation data    Mixed")
     229    .arg(_version, 9, 'f', 2)
     230    .leftJustified(60)
     231           << "RINEX VERSION / TYPE\n";
     232
     233  const QString fmtDate = (_version < 3.0) ? "dd-MMM-yy hh:mm"
     234                                                  : "yyyyMMdd hhmmss UTC";
     235  *stream << QString("%1%2%3")
     236    .arg(app->pgmName(), -20)
     237    .arg(runBy.trimmed().left(20), -20)
     238    .arg(QDateTime::currentDateTime().toUTC().toString(fmtDate), -20)
     239    .leftJustified(60)
     240           << "PGM / RUN BY / DATE\n";
     241
     242  QStringListIterator itCmnt(comments);
     243  while (itCmnt.hasNext()) {
     244    *stream << itCmnt.next().trimmed().left(60).leftJustified(60) << "COMMENT\n";
     245  }
     246
     247  *stream << QString("%1")
     248    .arg(_markerName, -60)
     249    .leftJustified(60)
     250           << "MARKER NAME\n";
     251
     252  if (!_markerNumber.isEmpty()) {
     253    *stream << QString("%1")
     254      .arg(_markerNumber, -20)
     255      .leftJustified(60)
     256             << "MARKER NUMBER\n";
     257  }
     258
     259  *stream << QString("%1%2")
     260    .arg(_observer, -20)
     261    .arg(_agency,   -40)
     262    .leftJustified(60)
     263           << "OBSERVER / AGENCY\n";
     264
     265  *stream << QString("%1%2%3")
     266    .arg(_receiverNumber,  -20)
     267    .arg(_receiverType,    -20)
     268    .arg(_receiverVersion, -20)
     269    .leftJustified(60)
     270           << "REC # / TYPE / VERS\n";
     271
     272  *stream << QString("%1%2")
     273    .arg(_antennaNumber, -20)
     274    .arg(_antennaName,   -20)
     275    .leftJustified(60)
     276           << "ANT # / TYPE\n";
     277
     278  *stream << QString("%1%2%3")
     279    .arg(_xyz(1), 14, 'f', 4)
     280    .arg(_xyz(2), 14, 'f', 4)
     281    .arg(_xyz(3), 14, 'f', 4)
     282    .leftJustified(60)
     283           << "APPROX POSITION XYZ\n";
     284
     285  *stream << QString("%1%2%3")
     286    .arg(_antNEU(3), 14, 'f', 4)
     287    .arg(_antNEU(2), 14, 'f', 4)
     288    .arg(_antNEU(1), 14, 'f', 4)
     289    .leftJustified(60)
     290           << "ANTENNA: DELTA H/E/N\n";
     291
     292  if (_version < 3.0) {
     293    int defaultWlFact1 = _wlFactorsL1[1];
     294    int defaultWlFact2 = _wlFactorsL2[1];  // TODO check all prns
     295    *stream << QString("%1%2")
     296      .arg(defaultWlFact1, 6)
     297      .arg(defaultWlFact2, 6)
     298      .leftJustified(60)
     299             << "WAVELENGTH FACT L1/2\n";
     300  }
     301
     302  *stream << obsTypesStrings().join("");
     303
     304  *stream << QString("%1")
     305    .arg(_interval, 10, 'f', 3)
     306    .leftJustified(60)
     307           << "INTERVAL\n";
     308
     309  unsigned year, month, day, hour, min;
     310  double sec;
     311  _startTime.civil_date(year, month, day);
     312  _startTime.civil_time(hour, min, sec);
     313  *stream << QString("%1%2%3%4%5%6%7")
     314    .arg(year, 6)
     315    .arg(month, 6)
     316    .arg(day, 6)
     317    .arg(hour, 6)
     318    .arg(min, 6)
     319    .arg(sec, 13, 'f', 7)
     320    .arg("GPS", 8)
     321    .leftJustified(60)
     322           << "TIME OF FIRST OBS\n";
     323
     324  *stream << QString()
     325    .leftJustified(60)
     326           << "END OF HEADER\n";
     327}
     328
    205329// Number of Observation Types (satellite-system specific)
    206330////////////////////////////////////////////////////////////////////////////
     
    233357    }
    234358  }
     359}
     360
     361// Write Observation Types
     362////////////////////////////////////////////////////////////////////////////
     363QStringList t_rnxObsHeader::obsTypesStrings() const {
     364
     365  QStringList strList;
     366
     367  if (_version < 3.0) {
     368    QString hlp;
     369    QTextStream(&hlp) << QString("%1").arg(_obsTypesV2.size(), 6);
     370    for (int ii = 0; ii < _obsTypesV2.size(); ii++) {
     371      QTextStream(&hlp) << QString("%1").arg(_obsTypesV2[ii], 6);   
     372      if ((ii+1) % 9 == 0 || ii == _obsTypesV2.size()-1) {
     373        strList.append(hlp.leftJustified(60) + "# / TYPES OF OBSERV\n");
     374        hlp = QString().leftJustified(6);
     375      }
     376    }
     377  }
     378  else {
     379    QMapIterator<char, QVector<QString> > it(_obsTypesV3);
     380    while (it.hasNext()) {
     381      it.next();
     382      char sys                      = it.key();
     383      const QVector<QString>& types = it.value();
     384      QString hlp;
     385      QTextStream(&hlp) << QString("%1  %2").arg(sys).arg(types.size(), 3);
     386      for (int ii = 0; ii < types.size(); ii++) {
     387        QTextStream(&hlp) << QString(" %1").arg(types[ii], -3);   
     388        if ((ii+1) % 13 == 0 || ii == types.size()-1) {
     389          strList.append(hlp.leftJustified(60) + "SYS / # / OBS TYPES\n");
     390          hlp = QString().leftJustified(6);
     391        }
     392      }
     393    }
     394  }
     395
     396  return strList;
    235397}
    236398
     
    643805}
    644806
    645 // Write Header
    646 ////////////////////////////////////////////////////////////////////////////
    647 void t_rnxObsFile::writeHeader(const QMap<QString, QString>* txtMap) {
    648 
    649   bncApp* app = (bncApp*) qApp;
    650 
    651   QString     runBy = app->userName();
    652   QStringList comments;
    653 
    654   if (txtMap) {
    655     QMapIterator<QString, QString> it(*txtMap);
    656     while (it.hasNext()) {
    657       it.next();
    658       if      (it.key() == "RUN BY") {
    659         runBy = it.value();
    660       }
    661       else if (it.key() == "COMMENT") {
    662         comments = it.value().split("\\n", QString::SkipEmptyParts);
    663       }
    664     }
    665   }
    666 
    667   *_stream << QString("%1           Observation data    Mixed")
    668     .arg(_header._version, 9, 'f', 2)
    669     .leftJustified(60)
    670            << "RINEX VERSION / TYPE\n";
    671 
    672   const QString fmtDate = (version() < 3.0) ? "dd-MMM-yy hh:mm"
    673                                             : "yyyyMMdd hhmmss UTC";
    674   *_stream << QString("%1%2%3")
    675     .arg(app->pgmName(), -20)
    676     .arg(runBy.trimmed().left(20), -20)
    677     .arg(QDateTime::currentDateTime().toUTC().toString(fmtDate), -20)
    678     .leftJustified(60)
    679            << "PGM / RUN BY / DATE\n";
    680 
    681   QStringListIterator itCmnt(comments);
    682   while (itCmnt.hasNext()) {
    683     *_stream << itCmnt.next().trimmed().left(60).leftJustified(60) << "COMMENT\n";
    684   }
    685 
    686   *_stream << QString("%1")
    687     .arg(_header._markerName, -60)
    688     .leftJustified(60)
    689            << "MARKER NAME\n";
    690 
    691   if (!_header._markerNumber.isEmpty()) {
    692     *_stream << QString("%1")
    693       .arg(_header._markerNumber, -20)
    694       .leftJustified(60)
    695              << "MARKER NUMBER\n";
    696   }
    697 
    698   *_stream << QString("%1%2")
    699     .arg(_header._observer, -20)
    700     .arg(_header._agency,   -40)
    701     .leftJustified(60)
    702            << "OBSERVER / AGENCY\n";
    703 
    704   *_stream << QString("%1%2%3")
    705     .arg(_header._receiverNumber,  -20)
    706     .arg(_header._receiverType,    -20)
    707     .arg(_header._receiverVersion, -20)
    708     .leftJustified(60)
    709            << "REC # / TYPE / VERS\n";
    710 
    711   *_stream << QString("%1%2")
    712     .arg(_header._antennaNumber, -20)
    713     .arg(_header._antennaName,   -20)
    714     .leftJustified(60)
    715            << "ANT # / TYPE\n";
    716 
    717   *_stream << QString("%1%2%3")
    718     .arg(_header._xyz(1), 14, 'f', 4)
    719     .arg(_header._xyz(2), 14, 'f', 4)
    720     .arg(_header._xyz(3), 14, 'f', 4)
    721     .leftJustified(60)
    722            << "APPROX POSITION XYZ\n";
    723 
    724   *_stream << QString("%1%2%3")
    725     .arg(_header._antNEU(3), 14, 'f', 4)
    726     .arg(_header._antNEU(2), 14, 'f', 4)
    727     .arg(_header._antNEU(1), 14, 'f', 4)
    728     .leftJustified(60)
    729            << "ANTENNA: DELTA H/E/N\n";
    730 
    731   if (_header._version < 3.0) {
    732     int defaultWlFact1 = _header._wlFactorsL1[1];
    733     int defaultWlFact2 = _header._wlFactorsL2[1];  // TODO check all prns
    734     *_stream << QString("%1%2")
    735       .arg(defaultWlFact1, 6)
    736       .arg(defaultWlFact2, 6)
    737       .leftJustified(60)
    738              << "WAVELENGTH FACT L1/2\n";
    739   }
    740 
    741   *_stream << obsTypesStrings().join("");
    742 
    743   *_stream << QString("%1")
    744     .arg(_header._interval, 10, 'f', 3)
    745     .leftJustified(60)
    746            << "INTERVAL\n";
    747 
    748   unsigned year, month, day, hour, min;
    749   double sec;
    750   _header._startTime.civil_date(year, month, day);
    751   _header._startTime.civil_time(hour, min, sec);
    752   *_stream << QString("%1%2%3%4%5%6%7")
    753     .arg(year, 6)
    754     .arg(month, 6)
    755     .arg(day, 6)
    756     .arg(hour, 6)
    757     .arg(min, 6)
    758     .arg(sec, 13, 'f', 7)
    759     .arg("GPS", 8)
    760     .leftJustified(60)
    761            << "TIME OF FIRST OBS\n";
    762 
    763   *_stream << QString()
    764     .leftJustified(60)
    765            << "END OF HEADER\n";
    766 }
    767 
    768 // Write Observation Types
    769 ////////////////////////////////////////////////////////////////////////////
    770 QStringList t_rnxObsFile::obsTypesStrings() {
    771 
    772   QStringList strList;
    773 
    774   if (_header._version < 3.0) {
    775     QString hlp;
    776     QTextStream(&hlp) << QString("%1").arg(_header._obsTypesV2.size(), 6);
    777     for (int ii = 0; ii < _header._obsTypesV2.size(); ii++) {
    778       QTextStream(&hlp) << QString("%1").arg(_header._obsTypesV2[ii], 6);   
    779       if ((ii+1) % 9 == 0 || ii == _header._obsTypesV2.size()-1) {
    780         strList.append(hlp.leftJustified(60) + "# / TYPES OF OBSERV\n");
    781         hlp = QString().leftJustified(6);
    782       }
    783     }
    784   }
    785   else {
    786     QMapIterator<char, QVector<QString> > it(_header._obsTypesV3);
    787     while (it.hasNext()) {
    788       it.next();
    789       char sys                      = it.key();
    790       const QVector<QString>& types = it.value();
    791       QString hlp;
    792       QTextStream(&hlp) << QString("%1  %2").arg(sys).arg(types.size(), 3);
    793       for (int ii = 0; ii < types.size(); ii++) {
    794         QTextStream(&hlp) << QString(" %1").arg(types[ii], -3);   
    795         if ((ii+1) % 13 == 0 || ii == types.size()-1) {
    796           strList.append(hlp.leftJustified(60) + "SYS / # / OBS TYPES\n");
    797           hlp = QString().leftJustified(6);
    798         }
    799       }
    800     }
    801   }
    802 
    803   return strList;
    804 }
    805 
    806807// Write Data Epoch
    807808////////////////////////////////////////////////////////////////////////////
     
    10681069
    10691070  if (!same) {
    1070     QStringList strLst = obsTypesStrings();
     1071    QStringList strLst = _header.obsTypesStrings();
    10711072    int numBlanks = _header._version < 3.0 ? 26 : 29;
    10721073    *_stream << QString().leftJustified(numBlanks)
  • trunk/BNC/src/rinex/rnxobsfile.h

    r4480 r4481  
    4646  int             nTypes(char sys) const;
    4747  const QString&  obsType(char sys, int index) const;
     48  QStringList     obsTypesStrings() const;
     49  void            write(QTextStream* stream,
     50                        const QMap<QString, QString>* txtMap = 0) const;
    4851
    4952  static const QString          _emptyStr;
     
    134137  void setHeader(const t_rnxObsHeader& header, double version);
    135138  void checkNewHeader(const t_rnxObsHeader& header);
    136   void writeHeader(const QMap<QString, QString>* txtMap = 0);
    137   QStringList obsTypesStrings();
    138139  void writeEpoch(const t_rnxEpo* epo);
     140
     141  QTextStream* stream() {return _stream;}
    139142
    140143 private:
Note: See TracChangeset for help on using the changeset viewer.