Changeset 7983 in ntrip for branches/BNC_2.12/src/rinex


Ignore:
Timestamp:
Jul 21, 2016, 11:27:01 AM (8 years ago)
Author:
stuerze
Message:

Frequency specific signal priorities are added for RINEX3 to RINEX2 conversion and the default 'Signal priority' list is improved

Location:
branches/BNC_2.12/src/rinex
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/BNC_2.12/src/rinex/reqcedit.cpp

    r7941 r7983  
    643643  int key = 0;
    644644  QString systems = obsFile->header().usedSystems();
    645   QString comment = QString("RINEX 3 => 2 CONVERSION DETAILS:");
     645  QString comment = QString("Signal priorities for RINEX 3 => 2 conversion:");
    646646  QString commentKey = QString("COMMENT %1").arg(key, 3, 10, QChar('0'));
    647647  txtMap.insert(commentKey, comment);
    648648
    649649  for(int ii = 0; ii < obsFile->numSys(); ii++) {
    650     key++;
    651650    char sys = systems[ii].toAscii();
    652     QString preferredAttrib = obsFile->signalPriorities(sys);
    653     comment = QString("%1: Signal priority = %2").arg(sys).arg(preferredAttrib);
    654     commentKey = QString("COMMENT %1").arg(key, 3, 10, QChar('0'));
    655651    txtMap.insert(commentKey, comment);
     652    QMap <char, QString>  signalPriorityMap;
     653    QStringList preferredAttribListSys = obsFile->signalPriorities(sys);
    656654    QStringList types = obsFile->header().obsTypes(sys);
    657655    for (int jj = 0; jj < types.size(); jj++) {
    658       key++;
    659656      QString inType = types[jj];
    660       for (int iPref = 0; iPref < preferredAttrib.length(); iPref++) {
    661         if (preferredAttrib[iPref] == '?'                             ||
    662             (inType.length() == 2 && preferredAttrib[iPref] == '_'    ) ||
    663             (inType.length() == 3 && preferredAttrib[iPref] == inType[2]) ) {
    664           QString outType = t_rnxObsFile::type3to2(sys, inType);
    665           comment = QString("%1: %2 => %3").arg(sys).arg(inType).arg(outType);
    666           commentKey = QString("COMMENT %1").arg(key, 3, 10, QChar('0'));
    667           txtMap.insert(commentKey, comment);
    668           break;
    669         }
    670       }
    671     }
    672   }
    673 }
     657      char band = inType[1].toAscii();
     658      for (int ii = 0; ii < preferredAttribListSys.size(); ii++) {
     659        QString preferredAttrib;
     660        if (preferredAttribListSys[ii].indexOf("&") != -1) {
     661          QStringList hlp = preferredAttribListSys[ii].split("&", QString::SkipEmptyParts);
     662          if (hlp.size() == 2 && hlp[0].contains(band)) {
     663            preferredAttrib = hlp[1];
     664          }
     665        }
     666        else {
     667          preferredAttrib = preferredAttribListSys[ii];
     668        }
     669        if (!signalPriorityMap.contains(band) && !preferredAttrib.isEmpty()){
     670          signalPriorityMap[band] = preferredAttrib;
     671        }
     672      }
     673    }
     674    QMapIterator<char, QString> it(signalPriorityMap);
     675    while (it.hasNext()) {
     676        it.next();
     677        key++;
     678        comment = QString("%1 band %2: %3").arg(sys).arg(it.key()).arg(it.value());
     679        commentKey = QString("COMMENT %1").arg(key, 3, 10, QChar('0'));
     680        txtMap.insert(commentKey, comment);
     681    }
     682  }
     683}
  • branches/BNC_2.12/src/rinex/rnxobsfile.cpp

    r7895 r7983  
    12731273  }
    12741274}
    1275 
    12761275// Write Data Epoch (RINEX Version 2)
    12771276////////////////////////////////////////////////////////////////////////////
     
    13031302  }
    13041303  *stream << endl;
     1304 
    13051305  for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) {
    1306 
    13071306    const t_rnxSat& rnxSat = epo->rnxSat[iSat];
    13081307    char            sys    = rnxSat.prn.system();
    1309 
    13101308    for (int iTypeV2 = 0; iTypeV2 < header.nTypes(sys); iTypeV2++) {
    13111309      if (iTypeV2 > 0 && iTypeV2 % 5 == 0) {
     
    13141312      QString typeV2 = header.obsType(sys, iTypeV2);
    13151313      bool    found  = false;
    1316 
    1317       QString preferredAttrib = signalPriorities(sys);
    1318       for (int iPref = 0; iPref < preferredAttrib.length(); iPref++) {
     1314      QStringList preferredAttribList = signalPriorities(sys);
     1315      QString preferredAttrib;
     1316      for (int ii = 0; ii < preferredAttribList.size(); ii++) {
     1317        if (preferredAttribList[ii].indexOf("&") != -1) {
     1318          QStringList hlp = preferredAttribList[ii].split("&", QString::SkipEmptyParts);
     1319          if (hlp.size() == 2 && hlp[0].contains(typeV2[1])) {
     1320            preferredAttrib = hlp[1];
     1321          }
     1322        }
     1323        else {
     1324          preferredAttrib = preferredAttribList[ii];
     1325        }
     1326      }
     1327
     1328      for (int iPref = 0; iPref < preferredAttribList.size(); iPref++) {
    13191329        QMapIterator<QString, t_rnxObs> itObs(rnxSat.obs);
    13201330        while (itObs.hasNext()) {
     
    13581368}
    13591369
     1370
    13601371// Write Data Epoch (RINEX Version 3)
    13611372////////////////////////////////////////////////////////////////////////////
     
    15451556// Tracking Mode Priorities
    15461557////////////////////////////////////////////////////////////////////////////
    1547 QString t_rnxObsFile::signalPriorities(char sys) {
     1558QStringList t_rnxObsFile::signalPriorities(char sys) {
    15481559
    15491560  bncSettings settings;
    1550 
     1561 
    15511562  QStringList priorList;
    15521563  QString reqcAction = settings.value("reqcAction").toString();
     
    15551566  // ---------------------------------------------------
    15561567  if (reqcAction == "Edit/Concatenate") {
    1557   priorList = settings.value("reqcV2Priority").toString().split(" ", QString::SkipEmptyParts);
     1568    priorList = settings.value("reqcV2Priority").toString().split(" ", QString::SkipEmptyParts);
    15581569  }
    15591570
     
    15611572  // ----------------------------
    15621573  else {
    1563   priorList = settings.value("rnxV2Priority").toString().split(" ", QString::SkipEmptyParts);
    1564   }
    1565 
    1566   if (priorList.empty()) {
    1567     priorList << "CWPX_?";
    1568   }
    1569 
    1570   QString result;
     1574    priorList = settings.value("rnxV2Priority").toString().split(" ", QString::SkipEmptyParts);
     1575  }
     1576
     1577  QStringList result;
    15711578  for (int ii = 0; ii < priorList.size(); ii++) {
    15721579    if (priorList[ii].indexOf(":") != -1) {
    15731580      QStringList hlp = priorList[ii].split(":", QString::SkipEmptyParts);
    15741581      if (hlp.size() == 2 && hlp[0].length() == 1 && hlp[0][0] == sys) {
    1575         result = hlp[1];
     1582        result.append(hlp[1]);
     1583      }
     1584    }
     1585    else {
     1586      result.append(priorList[ii]);
     1587    }
     1588  }
     1589
     1590  if (result.empty()) {
     1591    switch (sys) {
     1592      case 'G':
     1593        result << "G:12&PWCSLXYN G:5&IQX";
    15761594        break;
    1577       }
    1578     }
    1579     else {
    1580       result = priorList[ii];
    1581     }
    1582   }
    1583 
     1595      case 'R':
     1596        result << "R:12&PC R:3&IQX";
     1597        break;
     1598      case 'E':
     1599        result << "E:16&BCX E:578&IQX";
     1600        break;
     1601      case 'J':
     1602        result << "J:1&SLXCZ J:26&SLX J:5&IQX";
     1603        break;
     1604      case 'C':
     1605        result << "C:IQX";
     1606        break;
     1607      case 'I':
     1608        result << "I:ABCX";
     1609        break;
     1610      case 'S':
     1611        result << "S:1&C S:5&IQX";
     1612        break;
     1613    }
     1614  }
    15841615  return result;
    15851616}
  • branches/BNC_2.12/src/rinex/rnxobsfile.h

    r7817 r7983  
    207207  static QString type2to3(char sys, const QString& typeV2);
    208208  static QString type3to2(char sys, const QString& typeV3);
    209   static QString signalPriorities(char sys);
     209  static QStringList signalPriorities(char sys);
    210210
    211211  static void writeEpoch(QTextStream* stream, const t_rnxObsHeader& header, const t_rnxEpo* epo) {
Note: See TracChangeset for help on using the changeset viewer.