Changeset 7983 in ntrip
- Timestamp:
- Jul 21, 2016, 11:27:01 AM (9 years ago)
- Location:
- branches/BNC_2.12/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified branches/BNC_2.12/src/bnchelp.html ¶
r7956 r7983 1532 1532 </p> 1533 1533 <p> 1534 Default 'Signal priority' list is an empty option string, meaning a priority sequence of 'CWPX_?' attributes when mapping RINEX 3 to RINEX 2. The meaning of this sequence of characters - take it as an example - is as follows: 1534 Signal priorities can be specified as equal for all systems, as system specific or as system and frequency specific. For example:</li> 1535 <ul> 1536 <li>'CWPX_?' (General signal priorities valid for all GNSS)</li> 1537 <li>'C:IQX I:ABCX' (System specific signal priorities for BDS and IRNSS)</li> 1538 <li>'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX' (System and frequency specific signal priorities)</li> 1539 </ul> 1540 </p> 1541 <p> 1542 The default 'Signal priority' list is defined as follows: 1543 <ul> 1544 <li>'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX'</li> 1545 </ul> 1546 1547 As an example the 'Signal priority' of 'CWPX_?' is explained in more detail: 1535 1548 <ul> 1536 1549 <li>Signals with attribute 'C' enjoy the highest priority. If such a Version 3 observation becomes available, it is presented as RINEX Version 2 observation if that is the format you wish to see. Observations with other attributes are being ignored.</li> … … 1541 1554 </p> 1542 1555 1543 <p>1544 Signal priorities can be specified either as equal for all systems or system specific. The following are example priority strings:</li>1545 <ul>1546 <li>CWPX_? (Same signal priorities valid for all systems)</li>1547 <li>G:CWPX_? R:PCX_? E:CPX_? (Specific signal priorities for GPS, GLONASS and Galileo system)</li>1548 </ul>1549 1550 </p>1551 1556 <p> 1552 1557 You may like to specify your own 'Signal priority' string(s) for producing RINEX Version 2 files. If you neither convert observation streams to RINEX Version 2 nor concatenate RINEX Version 3 to Version 2 files, then the 'Version 2' option is meaningless. -
TabularUnified branches/BNC_2.12/src/bncmain.cpp ¶
r7977 r7983 107 107 " rnxOnlyWithSKL {Using RINEX skeleton file is mandatory [integer number: 0=no,2=yes]}\n" 108 108 " rnxScript {File upload script, full path [character string]}\n" 109 " rnxV2Priority {Priority of signal attributes [character string, list separated by blank character, example: G: CWPX_? R:CP]}\n"109 " rnxV2Priority {Priority of signal attributes [character string, list separated by blank character, example: G:12&PWCSLXYN G:5&IQX C:IQX]}\n" 110 110 " rnxV3 {Produce version 3 file contents [integer number: 0=no,2=yes]}\n" 111 111 " rnxV3filenames {Produce version 3 filenames [integer number: 0=no,2=yes]}\n" … … 130 130 " reqcRnxVersion {RINEX version [integer number: 2|3]}\n" 131 131 " reqcSampling {RINEX output file sampling rate [integer number of seconds: 0|5|10|15|20|25|30|35|40|45|50|55|60]}\n" 132 " reqcV2Priority {Version 2 priority of signal attributes [character string, list separated by blank character, example: G: CWPX_? R:CP]}\n"132 " reqcV2Priority {Version 2 priority of signal attributes [character string, list separated by blank character, example: G:12&PWCSLXYN G:5&IQX C:IQX]}\n" 133 133 " reqcStartDateTime {Start time [character string, example: 1967-11-02T00:00:00]}\n" 134 134 " reqcEndDateTime {Stop time [character string, example: 2099-01-01T00:00:00 }\n" -
TabularUnified branches/BNC_2.12/src/bncsettings.cpp ¶
r7513 r7983 134 134 setValue_p("reqcOldReceiverNumber", ""); 135 135 setValue_p("reqcUseObsTypes", ""); 136 setValue_p("reqcV2Priority", ""); 136 setValue_p("reqcV2Priority", "G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX"); 137 137 // SP3 138 138 setValue_p("sp3CompFile", ""); -
TabularUnified branches/BNC_2.12/src/bncwindow.cpp ¶
r7950 r7983 223 223 QString hlp = settings.value("rnxV2Priority").toString(); 224 224 if (hlp.isEmpty()) { 225 hlp = " CWPX_?";225 hlp = "G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX"; 226 226 } 227 227 _rnxV2Priority = new QLineEdit(hlp); … … 681 681 _rnxSamplSpinBox->setMaximumWidth(9*ww); 682 682 683 _rnxV2Priority->setMaximumWidth(19*ww);684 685 683 oLayout->addWidget(new QLabel("Saving RINEX observation files.<br>"),0, 0, 1,50); 686 684 oLayout->addWidget(new QLabel("Directory"), 1, 0); … … 696 694 oLayout->addWidget(new QLabel("Script (full path)"), 4, 0); 697 695 oLayout->addWidget(_rnxScrpLineEdit, 4, 1, 1, 15); 698 oLayout->addWidget(new QLabel("Version 2"), 5, 0); 699 oLayout->addWidget(_rnxV2Priority, 5, 1); 700 oLayout->addWidget(new QLabel("Signal priority"), 5, 2); 696 oLayout->addWidget(new QLabel("Version 2 signal priority"), 5, 0); 697 oLayout->addWidget(_rnxV2Priority, 5, 1, 1, 15); 701 698 oLayout->addWidget(new QLabel("Version 3"), 6, 0); 702 699 oLayout->addWidget(_rnxV3CheckBox, 6, 1); … … 1252 1249 _rnxFileCheckBox->setWhatsThis(tr("<p>Tick check box 'Skeleton mandatory' in case you want that RINEX files are only produced if skeleton files are available for BNC. If no skeleton file is available for a particular source then no RINEX Observation file will be produced from the affected stream.</p><p>Note that a skeleton file contains RINEX header information such as receiver and antenna types. In case of stream conversion to RINEX Version 3, a skeleton file should also contain information on potentially available observation types. A missing skeleton file will therefore enforce BNC to only save a default set of RINEX 3 observation types.</p>")); 1253 1250 _rnxScrpLineEdit->setWhatsThis(tr("<p>Whenever a RINEX Observation file is finally saved, you may want to compress, copy or upload it immediately, for example via FTP. BNC allows you to execute a script/batch file to carry out such operation.</p><p>Specify the full path of a script or batch file. BNC will pass the full RINEX Observation file path to the script as command line parameter (%1 on Windows systems, $1 on Unix/Linux/Mac systems).</p>")); 1254 _rnxV2Priority->setWhatsThis(tr("<p>Specify a priority list of characters defining signal attributes as defined in RINEX Version 3. Priorities will be used to map observations with RINEX Version 3 attributes from incoming streams to Version 2. The underscore character '_' stands for undefined attributes. A question mark '?' can be used as wildcard which represents any one character.</p><p>Signal priorities can be specified eitheras equal for all systemsor as system specific. The following are example priority strings:</li><ul><li>'CWPX_?' (Samesignal priorities valid for allsystems)</li><li>'G:CWPX_? R:PCX_? E:CPX_?' (Specific signal priorities for GPS, GLONASS and Galileo system)</li></ul>Default is priority list 'CWPX_?'.</p>"));1251 _rnxV2Priority->setWhatsThis(tr("<p>Specify a priority list of characters defining signal attributes as defined in RINEX Version 3. Priorities will be used to map observations with RINEX Version 3 attributes from incoming streams to Version 2. The underscore character '_' stands for undefined attributes. A question mark '?' can be used as wildcard which represents any one character.</p><p>Signal priorities can be specified as equal for all systems, as system specific or as system and freq. specific. For example: </li><ul><li>'CWPX_?' (General signal priorities valid for all GNSS) </li><li>'C:IQX I:ABCX' (System specific signal priorities for BDS and IRNSS) </li><li>'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX' (System and frequency specific signal priorities) </li></ul>Default is the following priority list 'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX'.</p>")); 1255 1252 _rnxV3CheckBox->setWhatsThis(tr("<p>The default format for RINEX Observation files is RINEX Version 2.</p><p>Select 'Version 3' if you want to save observations in RINEX Version 3 format.</p>")); 1256 1253 _rnxV3filenameCheckBox->setWhatsThis(tr("<p>Tick 'Version 3 filenames' to let BNC create so-called extended filenames following the RINEX Version 3 standard.</p><p>Default is an empty check box, meaning to create filenames following the RINEX Version 2 standard although the file content is saved in RINEX Version 3 format.</p>")); -
TabularUnified branches/BNC_2.12/src/reqcdlg.cpp ¶
r7678 r7983 138 138 QString hlp = settings.value("reqcV2Priority").toString(); 139 139 if (hlp.isEmpty()) { 140 hlp = " CWPX_?";140 hlp = "G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX"; 141 141 } 142 142 _reqcV2Priority = new QLineEdit(hlp); … … 152 152 grid->addWidget(_reqcSampling, ir, 4); 153 153 ++ir; 154 grid->addWidget(new QLabel("Version 2 Signal Priority"), ir, 1);155 grid->addWidget(_reqcV2Priority, ir, 2);154 grid->addWidget(new QLabel("Version 2 signal priority"), ir, 1); 155 grid->addWidget(_reqcV2Priority, ir, 2, 1, 4); 156 156 ++ir; 157 157 grid->addWidget(new QLabel("Start"), ir, 1); … … 232 232 _reqcRnxVersion->setWhatsThis(tr("<p>Select version number of emerging new RINEX file.</p><p>Note the following:</p><p>When converting <u>RINEX Version 2 to Version 3 </u>Observation files, the tracking mode or channel information (signal attribute, see RINEX Version 3 documentation) in the (last out of the three characters) observation code is left blank if unknown.</p><p>When converting <u>RINEX Version 3 to Version 2</u>, the mapping of observations follows a 'Signal priority list' with signal attributes as defined in RINEX Version 3.</p>")); 233 233 _reqcSampling->setWhatsThis(tr("<p>Select sampling rate of emerging new RINEX Observation file.</p><p>'0 sec' means that observations from all epochs in the RINEX input file will become part of the RINEX output file.</p>")); 234 _reqcV2Priority->setWhatsThis(tr("<p>Specify a priority list of characters defining signal attributes as defined in RINEX Version 3. Priorities will be used in post processing mode to mapRINEX Version 3observation files to Version 2. The underscore character '_' stands for undefined attributes.Thequestion mark '?' can be used as wildcard which represents any one character.</p><p>Signal priorities can be specifiedeitheras equal for all systemsor as system specifics. The following are example priority strings:</li><ul><li>'CWPX_?' (Samesignal priorities valid for allsystems)</li><li>'G:CWPX_? R:PCX_? E:CPX_?' (Specific signal priorities for GPS, GLONASS and Galileo system)</li></ul>Default is priority list 'CWPX_?'.</p>"));234 _reqcV2Priority->setWhatsThis(tr("<p>Specify a priority list of characters defining signal attributes as defined in RINEX Version 3. Priorities will be used to map observations with RINEX Version 3 attributes from incoming streams to Version 2. The underscore character '_' stands for undefined attributes. A question mark '?' can be used as wildcard which represents any one character.</p><p>Signal priorities can be specified as equal for all systems, as system specific or as system and freq. specific. For example: </li><ul><li>'CWPX_?' (General signal priorities valid for all GNSS) </li><li>'C:IQX I:ABCX' (System specific signal priorities for BDS and IRNSS) </li><li>'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX' (System and frequency specific signal priorities) </li></ul>Default is the following priority list 'G:12&PWCSLXYN G:5&IQX R:12&PC R:3&IQX E:16&BCX E:578&IQX J:1&SLXCZ J:26&SLX J:5&IQX C:IQX I:ABCX S:1&C S:5&IQX'.</p>")); 235 235 _reqcStartDateTime->setWhatsThis(tr("<p>Specify begin of emerging new RINEX Observation file.</p>")); 236 236 _reqcEndDateTime->setWhatsThis(tr("<p>Specify end of emerging new RINEX Observation file.</p>")); -
TabularUnified branches/BNC_2.12/src/rinex/reqcedit.cpp ¶
r7941 r7983 643 643 int key = 0; 644 644 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:"); 646 646 QString commentKey = QString("COMMENT %1").arg(key, 3, 10, QChar('0')); 647 647 txtMap.insert(commentKey, comment); 648 648 649 649 for(int ii = 0; ii < obsFile->numSys(); ii++) { 650 key++;651 650 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'));655 651 txtMap.insert(commentKey, comment); 652 QMap <char, QString> signalPriorityMap; 653 QStringList preferredAttribListSys = obsFile->signalPriorities(sys); 656 654 QStringList types = obsFile->header().obsTypes(sys); 657 655 for (int jj = 0; jj < types.size(); jj++) { 658 key++;659 656 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 } -
TabularUnified branches/BNC_2.12/src/rinex/rnxobsfile.cpp ¶
r7895 r7983 1273 1273 } 1274 1274 } 1275 1276 1275 // Write Data Epoch (RINEX Version 2) 1277 1276 //////////////////////////////////////////////////////////////////////////// … … 1303 1302 } 1304 1303 *stream << endl; 1304 1305 1305 for (unsigned iSat = 0; iSat < epo->rnxSat.size(); iSat++) { 1306 1307 1306 const t_rnxSat& rnxSat = epo->rnxSat[iSat]; 1308 1307 char sys = rnxSat.prn.system(); 1309 1310 1308 for (int iTypeV2 = 0; iTypeV2 < header.nTypes(sys); iTypeV2++) { 1311 1309 if (iTypeV2 > 0 && iTypeV2 % 5 == 0) { … … 1314 1312 QString typeV2 = header.obsType(sys, iTypeV2); 1315 1313 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++) { 1319 1329 QMapIterator<QString, t_rnxObs> itObs(rnxSat.obs); 1320 1330 while (itObs.hasNext()) { … … 1358 1368 } 1359 1369 1370 1360 1371 // Write Data Epoch (RINEX Version 3) 1361 1372 //////////////////////////////////////////////////////////////////////////// … … 1545 1556 // Tracking Mode Priorities 1546 1557 //////////////////////////////////////////////////////////////////////////// 1547 QString t_rnxObsFile::signalPriorities(char sys) { 1558 QStringList t_rnxObsFile::signalPriorities(char sys) { 1548 1559 1549 1560 bncSettings settings; 1550 1561 1551 1562 QStringList priorList; 1552 1563 QString reqcAction = settings.value("reqcAction").toString(); … … 1555 1566 // --------------------------------------------------- 1556 1567 if (reqcAction == "Edit/Concatenate") { 1557 priorList = settings.value("reqcV2Priority").toString().split(" ", QString::SkipEmptyParts); 1568 priorList = settings.value("reqcV2Priority").toString().split(" ", QString::SkipEmptyParts); 1558 1569 } 1559 1570 … … 1561 1572 // ---------------------------- 1562 1573 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; 1571 1578 for (int ii = 0; ii < priorList.size(); ii++) { 1572 1579 if (priorList[ii].indexOf(":") != -1) { 1573 1580 QStringList hlp = priorList[ii].split(":", QString::SkipEmptyParts); 1574 1581 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"; 1576 1594 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 } 1584 1615 return result; 1585 1616 } -
TabularUnified branches/BNC_2.12/src/rinex/rnxobsfile.h ¶
r7817 r7983 207 207 static QString type2to3(char sys, const QString& typeV2); 208 208 static QString type3to2(char sys, const QString& typeV3); 209 static QString signalPriorities(char sys); 209 static QStringList signalPriorities(char sys); 210 210 211 211 static void writeEpoch(QTextStream* stream, const t_rnxObsHeader& header, const t_rnxEpo* epo) {
Note:
See TracChangeset
for help on using the changeset viewer.