Changeset 9783 in ntrip for trunk/BNC/src
- Timestamp:
- Jun 27, 2022, 5:09:40 PM (2 years ago)
- Location:
- trunk/BNC/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/PPP/pppClient.cpp
r9607 r9783 304 304 } 305 305 if (iObs + 1 < _opt->_minObs) { 306 LOG << "t_pppClient::cmpBancroft not enough observations: " << iObs + 1 << endl;306 LOG << "t_pppClient::cmpBancroft not enough observations: " << iObs + 1; 307 307 return failure; 308 308 } … … 335 335 if (print && _numEpoProcessing == 1) { 336 336 LOG.setf(ios::fixed); 337 LOG << "\nPPP of Epoch "; 338 if (!_epoTimeRover.undef()) LOG << string(_epoTimeRover); 339 LOG << "\n---------------------------------------------------------------\n"; 337 340 LOG << string(epoTime) << " BANCROFT:" << ' ' 338 341 << setw(14) << setprecision(3) << xyzc[0] << ' ' … … 376 379 ////////////////////////////////////////////////////////////////////////////// 377 380 void t_pppClient::finish(t_irc irc, int ind) { 378 381 #ifdef BNC_DEBUG_PPP 379 382 LOG << "t_pppClient::finish(" << ind << "): " << irc << endl; 383 #endif 380 384 381 385 clearObs(); … … 495 499 } 496 500 497 if (_numEpoProcessing == 1) {498 LOG << "\nPPP of Epoch ";499 if (!_epoTimeRover.undef()) LOG << string(_epoTimeRover);500 LOG << "\n---------------------------------------------------------------\n";501 }502 503 501 for (int iter = 1; iter <= 2; iter++) { 504 502 ColumnVector xyzc(4); xyzc = 0.0; … … 507 505 return finish(failure,3); 508 506 } 507 509 508 if (cmpModel(_staRover, xyzc, _obsRover) != success) { 510 509 return finish(failure,4); … … 525 524 // use observations only if satellite code biases are available 526 525 // ------------------------------------------------------------ 527 if (!_opt->_corrMount.empty() &&526 if (!_opt->_corrMount.empty() && 528 527 (OPT->_obsModelType == OPT->DCMcodeBias || 529 528 OPT->_obsModelType == OPT->DCMphaseBias)) { -
trunk/BNC/src/bncmain.cpp
r9780 r9783 148 148 " reqcOldAntennaNumber {Old antenna number [character string]}\n" 149 149 " reqcNewAntennaNumber {New antenna number [character string]}\n" 150 " reqcOldAntennadN {Old north eccentri tity [character string]}\n"150 " reqcOldAntennadN {Old north eccentricity [character string]}\n" 151 151 " reqcNewAntennadN {New north eccentricity [character string]}\n" 152 152 " reqcOldAntennadE {Old east eccentricity [character string]}\n" … … 207 207 " PPP/corrMount {Corrections mountpoint [character string]}\n" 208 208 " PPP/corrFile {Corrections file, full path [character string]}\n" 209 " PPP/v2filenames {Produce version 2 filenames, 0=no,2=yes}\n"210 209 " PPP/crdFile {Coordinates file, full path [character string]}\n" 211 210 " PPP/logPath {Directory for PPP log files [character string]}\n" 212 211 " PPP/antexFile {ANTEX file, full path [character string]}\n" 213 212 #ifdef USE_PPP 214 " PPP/blqFile {ANTEX file, full path [character string]}\n" 213 " PPP/blqFile {BLQ file, full path [character string]}\n" 214 " PPP/ionoMount {VTEC mountpoint, [char string]}\n" 215 " PPP/ionoFile {VTEC file, full path [char string]}\n" 215 216 #endif 216 217 " PPP/nmeaPath {Directory for NMEA output files [character string]}\n" -
trunk/BNC/src/bncoutf.cpp
r9655 r9783 48 48 49 49 _append = Qt::CheckState(settings.value("rnxAppend").toInt()) == Qt::Checked; 50 _v2filenames = settings.value("PPP/v2filenames").toBool();51 50 } 52 51 … … 84 83 if ( indHlp != -1) { 85 84 int step = intStr.left(indHlp-1).toInt(); 86 if (!_v2filenames) { 87 epoStr += QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0')); // H 88 } else { 89 epoStr += 'A' + datTim.time().hour(); 90 } 85 epoStr += QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0')); // H 91 86 92 87 if (datTim.time().minute() >= 60-step) { … … 101 96 } 102 97 } 103 104 if (!_v2filenames) { 105 epoStr += QString("_%1M").arg(step, 2, 10, QChar('0')); // period 106 } 98 epoStr += QString("_%1M").arg(step, 2, 10, QChar('0')); // period 107 99 108 100 _numSec = 60 * step; … … 110 102 else if (intStr == "1 hour") { 111 103 int step = intStr.left(indHlp-1).toInt(); 112 if (!_v2filenames) { 113 epoStr += QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0')); // H 114 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // M 115 epoStr += QString("_%1H").arg(step+1, 2, 10, QChar('0')); // period 116 } else { 117 epoStr += 'A' + datTim.time().hour(); 118 } 104 epoStr += QString("%1").arg(datTim.time().hour(), 2, 10, QChar('0')); // H 105 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // M 106 epoStr += QString("_%1H").arg(step+1, 2, 10, QChar('0')); // period 119 107 _numSec = 3600; 120 108 } 121 109 else { 122 110 int step = intStr.left(indHlp-1).toInt(); 123 if (!_v2filenames) { 124 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // H 125 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // M 126 epoStr += QString("_%1D").arg(step+1, 2, 10, QChar('0')); // period 127 } 111 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // H 112 epoStr += QString("%1").arg(0, 2, 10, QChar('0')); // M 113 epoStr += QString("_%1D").arg(step+1, 2, 10, QChar('0')); // period 128 114 _numSec = 86400; 129 115 } 130 116 131 if (!_v2filenames) { 132 if (sampl < 60) { 133 epoStr += QString("_%1S").arg(sampl, 2, 10, QChar('0')); 134 } 135 else { 136 sampl /= 60; 137 epoStr += QString("_%1M").arg(sampl, 2, 10, QChar('0')); 138 } 117 118 if (sampl < 60) { 119 epoStr += QString("_%1S").arg(sampl, 2, 10, QChar('0')); 120 } 121 else { 122 sampl /= 60; 123 epoStr += QString("_%1M").arg(sampl, 2, 10, QChar('0')); 139 124 } 140 125 -
trunk/BNC/src/bncoutf.h
r9652 r9783 35 35 QString _fName; 36 36 bool _append; 37 bool _v2filenames;38 37 }; 39 38 -
trunk/BNC/src/bncwindow.cpp
r9760 r9783 992 992 pppLayout1->addWidget(new QLabel("Data source"), ir, 0); 993 993 pppLayout1->addWidget(_pppWidgets._dataSource, ir, 1); 994 pppLayout1->addWidget(new QLabel(" Version 2 filenames"),ir, 4);995 pppLayout1->addWidget(_pppWidgets._ v2filenames,ir, 5, 1, 3);994 pppLayout1->addWidget(new QLabel(" Logfile directory"), ir, 4); 995 pppLayout1->addWidget(_pppWidgets._logPath, ir, 5, 1, 3); 996 996 ++ir; 997 997 pppLayout1->addWidget(new QLabel("Corrections stream"), ir, 0); … … 999 999 pppLayout1->addWidget(new QLabel("Corrections file"), ir, 2); 1000 1000 pppLayout1->addWidget(_pppWidgets._corrFile, ir, 3); 1001 pppLayout1->addWidget(new QLabel(" Logfile directory"), ir, 4); 1002 pppLayout1->addWidget(_pppWidgets._logPath, ir, 5, 1, 3); 1001 pppLayout1->addWidget(new QLabel(" NMEA directory"), ir, 4); 1002 pppLayout1->addWidget(_pppWidgets._nmeaPath, ir, 5, 1, 3); 1003 ++ir; 1004 #ifdef USE_PPP 1005 pppLayout1->addWidget(new QLabel("Ionosphere stream"), ir, 0); 1006 pppLayout1->addWidget(_pppWidgets._ionoMount, ir, 1); 1007 pppLayout1->addWidget(new QLabel("Ionosphere file"), ir, 2); 1008 pppLayout1->addWidget(_pppWidgets._ionoFile, ir, 3); 1009 #endif 1010 pppLayout1->addWidget(new QLabel(" SNX TRO directory"), ir, 4); 1011 pppLayout1->addWidget(_pppWidgets._snxtroPath, ir, 5, 1, 3); 1003 1012 ++ir; 1004 1013 pppLayout1->addWidget(new QLabel("RINEX Obs file"), ir, 0); … … 1006 1015 pppLayout1->addWidget(new QLabel("RINEX Nav file"), ir, 2); 1007 1016 pppLayout1->addWidget(_pppWidgets._rinexNav, ir, 3); 1008 pppLayout1->addWidget(new QLabel(" NMEA directory"), ir, 4); 1009 pppLayout1->addWidget(_pppWidgets._nmeaPath, ir, 5, 1, 3); 1017 pppLayout1->addWidget(new QLabel(" SNX TRO interval"), ir, 4); 1018 pppLayout1->addWidget(_pppWidgets._snxtroIntr, ir, 5); 1019 pppLayout1->addWidget(new QLabel(" SNX TRO sampling"), ir, 6); 1020 pppLayout1->addWidget(_pppWidgets._snxtroSampl, ir, 7, Qt::AlignRight); 1010 1021 ++ir; 1011 pppLayout1->addWidget(new QLabel("Coordinates file"), ir, 0); 1012 pppLayout1->addWidget(_pppWidgets._crdFile, ir, 1); 1013 pppLayout1->addWidget(new QLabel("ANTEX file"), ir, 2); 1014 pppLayout1->addWidget(_pppWidgets._antexFile, ir, 3); 1015 pppLayout1->addWidget(new QLabel(" SNX TRO directory"), ir, 4); 1016 pppLayout1->addWidget(_pppWidgets._snxtroPath, ir, 5, 1, 3); 1022 pppLayout1->addWidget(new QLabel("ANTEX file"), ir, 0); 1023 pppLayout1->addWidget(_pppWidgets._antexFile, ir, 1); 1024 pppLayout1->addWidget(new QLabel("Coordinates file"), ir, 2); 1025 pppLayout1->addWidget(_pppWidgets._crdFile, ir, 3); 1026 pppLayout1->addWidget(new QLabel(" SNX TRO AC"), ir, 4); 1027 pppLayout1->addWidget(_pppWidgets._snxtroAc, ir, 5); 1028 pppLayout1->addWidget(new QLabel(" SNX TRO solution"), ir, 6); 1029 pppLayout1->addWidget(_pppWidgets._snxtroSol, ir, 7, Qt::AlignRight); 1017 1030 ++ir; 1018 1031 #ifdef USE_PPP … … 1020 1033 pppLayout1->addWidget(_pppWidgets._blqFile, ir, 1); 1021 1034 #endif 1022 pppLayout1->addWidget(new QLabel(" SNX TRO interval"), ir, 4);1023 pppLayout1->addWidget(_pppWidgets._snxtroIntr, ir, 5);1024 pppLayout1->addWidget(new QLabel(" SNX TRO sampling"), ir, 6);1025 pppLayout1->addWidget(_pppWidgets._snxtroSampl, ir, 7, Qt::AlignRight);1026 ++ir;1027 pppLayout1->addWidget(new QLabel("Ionosphere stream"), ir, 0);1028 pppLayout1->addWidget(_pppWidgets._ionoMount, ir, 1);1029 pppLayout1->addWidget(new QLabel("Ionosphere file"), ir, 2);1030 pppLayout1->addWidget(_pppWidgets._ionoFile, ir, 3);1031 pppLayout1->addWidget(new QLabel(" SNX TRO AC"), ir, 4);1032 pppLayout1->addWidget(_pppWidgets._snxtroAc, ir, 5);1033 pppLayout1->addWidget(new QLabel(" SNX TRO solution"), ir, 6);1034 pppLayout1->addWidget(_pppWidgets._snxtroSol, ir, 7, Qt::AlignRight);1035 1035 pppLayout1->setRowStretch(ir+1, 999); 1036 1036 pppGroup1->setLayout(pppLayout1); … … 1080 1080 pppLayout3->addWidget(_pppWidgets._minObs, ir, 4); 1081 1081 pppLayout3->addWidget(new QLabel("Min Elevation"), ir, 6, Qt::AlignLeft); 1082 pppLayout3->addWidget(_pppWidgets._minEle, ir, 7); 1082 pppLayout3->addWidget(_pppWidgets._minEle, ir, 7);_pppWidgets._minEle->setMaximumWidth(8*ww); 1083 1083 ++ir; 1084 1084 pppLayout3->addWidget(new QLabel("Model Obs"), ir, 0, Qt::AlignLeft); … … 1087 1087 pppLayout3->addWidget(_pppWidgets._corrWaitTime, ir, 4); 1088 1088 pppLayout3->addWidget(new QLabel("Seeding (sec)"), ir, 6, Qt::AlignLeft); 1089 pppLayout3->addWidget(_pppWidgets._seedingTime, ir, 7); 1089 pppLayout3->addWidget(_pppWidgets._seedingTime, ir, 7);_pppWidgets._seedingTime->setMaximumWidth(8*ww); 1090 1090 ++ir; 1091 1091 pppLayout3->addWidget(new QLabel("Pseudo Obs"), ir, 0, Qt::AlignLeft); … … 1464 1464 // WhatsThis, PPP (1) 1465 1465 // ------------------ 1466 _pppWidgets._dataSource->setWhatsThis(tr("<p>Select 'Real-time Streams' for real-time PPP from RTCM streams or 'RINEX Files' for post processing PPP from RINEX files.</p><p><ul><li>Real-time PPP requires that you pull a RTCM stream carrying GNSS observations plus a stream providing corrections to Broadcast Ephemeris. If the observations stream does not contain Broadcast Ephemeris then you must in addition pull a Broadcast Ephemeris stream like 'RTCM3EPH' from Ntrip Broadcaster <u>products.igs-ip.net</u>.<br></li><li>Post processing PPP requires RINEX Observation files, RINEX Navigation files and a file with corrections to Broadcast Ephemeris in plain ASCII format as saved beforehand using BNC.</li></ul></p><p>Note that BNC allows to carry out PPP solutions simultaneously for several stations.</p>")); 1467 _pppWidgets._rinexObs->setWhatsThis(tr("<p>Specify the RINEX Observation file.</p>")); 1468 _pppWidgets._rinexNav->setWhatsThis(tr("<p>Specify the RINEX Navigation file.</p>")); 1469 _pppWidgets._corrMount->setWhatsThis(tr("<p>Specify a 'mountpoint' from the 'Streams' canvas below which provides corrections to Broadcast Ephemeris.</p><p>If you don't specify a corrections stream via this option, BNC will fall back to Single Point Positioning (SPP, positioning from observations and Broadcast Ephemeris only) instead of doing PPP.</p>")); 1470 _pppWidgets._corrFile->setWhatsThis(tr("<p>Specify the Broadcast Ephemeris Corrections file as saved beforehand using BNC.</p><p>If you don't specify corrections by this option, BNC will fall back to Single Point Positioning (SPP, positioning from RINEX Obs and RINEX Nav files only) instead of doing PPP.</p>")); 1471 _pppWidgets._antexFile->setWhatsThis(tr("<p>Observations in RTCM streams or RINEX files should be referred to the receiver's and to the satellite's Antenna Phase Center (APC) and therefore be corrected for<ul><li>Receiver APC offsets</li><li>Receiver APC variations</li><li>Satellite APC offsets.</li></ul> Specify the full path to an IGS 'ANTEX file' which contains APC offsets and variations.</p><p>If you don't specify an 'ANTEX file' then observations will not be corrected for APC offsets and variations.</p>")); 1472 _pppWidgets._crdFile->setWhatsThis(tr("<p>Enter the full path to an ASCII file which specifies the streams or files of those stations you want to process. Specifying a 'Coordinates file' is optional. If it exists, it should contain one record per station with the following parameters separated by blank character:<p><ul><li>Specify the station either by<ul><li>the 'Mountpoint' of the station's RTCM stream (when in real-time PPP mode), or</li><li>the 4-charater station ID of the RINEX Observations file (when in post processing PPP mode).</li></ul></li><li>Approximate X,Y,Z coordinate of station's Antenna Reference Point [m] (ARP, specify '0.0 0.0 0.0' if unknown).</li><li>North, East and Up component of antenna eccentricity [m] (specify '0.0 0.0 0.0' if unknown).</li><li>20 Characters describing the antenna type and radome following the IGS 'ANTEX file' standard (leave blank if unknown).</li><li>Receiver type following the naming conventions for IGS equipment.</li></ul></p><p>Records with exclamation mark '!' in the first column or blank records will be interpreted as comment lines and ignored.</p>")); 1473 _pppWidgets._v2filenames->setWhatsThis(tr("<p>Tick 'Version 2 filenames' to let BNC create filenames for PPP logfiles , NMEA files and SINEX Troposphere files following the RINEX Version 2 standard.</p><p>Default is an empty check box, meaning to create filenames following the RINEX Version 3 standard. The file content is not affected by this option. It only concerns the filenames.</p>")); 1474 _pppWidgets._logPath->setWhatsThis(tr("<p>Specify a directory for saving daily PPP logfiles. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no PPP logfiles shall be produced.</p>")); 1475 _pppWidgets._nmeaPath->setWhatsThis(tr("<p>Specify a directory for saving coordinates in daily NMEA files. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no NMEA file shall be produced.</p>")); 1476 _pppWidgets._snxtroPath->setWhatsThis(tr("<p>Specify a directory for saving SINEX Troposphere files. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no SINEX Troposphere files shall be produced.</p>")); 1477 _pppWidgets._snxtroIntr->setWhatsThis(tr("<p>Select a length for SINEX Troposphere files.</p><p>Default 'SNX TRO interval' for saving SINEX Troposphere files on disk is '1 hour'.</p>")); 1478 _pppWidgets._snxtroSampl->setWhatsThis(tr("<p>Select a 'Sampling' rate for saving troposphere parameters.</p>")); 1479 _pppWidgets._snxtroAc->setWhatsThis(tr("<p>Specify a 3-character abbreviation describing you as the generating Analysis Center (AC) in your SINEX troposphere files.</p>")); 1480 _pppWidgets._snxtroSol->setWhatsThis(tr("<p>Specify a 4-character solution ID to allow a distingtion between different solutions per AC.</p>")); 1481 _pppWidgets._ionoMount->setWhatsThis(tr("<p>Specify a 'mountpoint' from the 'Streams' canvas below which provides VTEC informations in SSR format.</p><p>If you don't specify a corrections stream via this option, BNC will use VTEC informations from the Corrections stream 'mountpoint', if available.</p>")); 1466 _pppWidgets._dataSource->setWhatsThis(tr("<p>Select 'Real-time Streams' for real-time PPP from RTCM streams or 'RINEX Files' for post processing PPP from RINEX files.</p><p><ul><li>Real-time PPP requires that you pull a RTCM stream carrying GNSS observations plus a stream providing corrections to Broadcast Ephemeris. If the observations stream does not contain Broadcast Ephemeris then you must in addition pull a Broadcast Ephemeris stream like 'RTCM3EPH' from Ntrip Broadcaster <u>products.igs-ip.net</u>.<br></li><li>Post processing PPP requires RINEX Observation files, RINEX Navigation files and a file with corrections to Broadcast Ephemeris in plain ASCII format as saved beforehand using BNC.</li></ul></p><p>Note that BNC allows to carry out PPP solutions simultaneously for several stations. <i>[key: PPP/]</i></p>")); 1467 _pppWidgets._rinexObs->setWhatsThis(tr("<p>Specify the RINEX Observation file. <i>[key: PPP/rinexObs]</i></p>")); 1468 _pppWidgets._rinexNav->setWhatsThis(tr("<p>Specify the RINEX Navigation file. <i>[key: PPP/rinexNav]</i></p>")); 1469 _pppWidgets._corrMount->setWhatsThis(tr("<p>Specify a 'mountpoint' from the 'Streams' canvas below which provides corrections to Broadcast Ephemeris.</p><p>If you don't specify a corrections stream via this option, BNC will fall back to Single Point Positioning (SPP, positioning from observations and Broadcast Ephemeris only) instead of doing PPP. <i>[key: PPP/corrMount]</i></p>")); 1470 _pppWidgets._ionoMount->setWhatsThis(tr("<p>Specify a 'mountpoint' from the 'Streams' canvas below which provides VTEC informations in SSR format.</p><p>If you don't specify a corrections stream via this option, BNC will use VTEC informations from the Corrections stream 'mountpoint', if available. <i>[key: PPP/ionoMount]</i></p>")); 1471 _pppWidgets._corrFile->setWhatsThis(tr("<p>Specify the Broadcast Ephemeris Corrections file as saved beforehand using BNC.</p><p>If you don't specify corrections by this option, BNC will fall back to Single Point Positioning (SPP, positioning from RINEX Obs and RINEX Nav files only) instead of doing PPP. <i>[key: PPP/corrFile]</i></p>")); 1472 _pppWidgets._ionoFile->setWhatsThis(tr("<p>Specify the VTEC file as saved beforehand using BNC.</p><p>If you don't specify corrections by this option, BNC will use VTEC informations from the Corrections file, if available. <i>[key: PPP/ionoFile]</i></p>")); 1473 _pppWidgets._antexFile->setWhatsThis(tr("<p>Observations in RTCM streams or RINEX files should be referred to the receiver's and to the satellite's Antenna Phase Center (APC) and therefore be corrected for<ul><li>Receiver APC offsets</li><li>Receiver APC variations</li><li>Satellite APC offsets.</li></ul> Specify the full path to an IGS 'ANTEX file' which contains APC offsets and variations.</p><p>If you don't specify an 'ANTEX file' then observations will not be corrected for APC offsets and variations. <i>[key: PPP/antexFile]</i></p>")); 1474 _pppWidgets._crdFile->setWhatsThis(tr("<p>Enter the full path to an ASCII file which specifies the streams or files of those stations you want to process. Specifying a 'Coordinates file' is optional. If it exists, it should contain one record per station with the following parameters separated by blank character:<p><ul><li>Specify the station either by<ul><li>the 'Mountpoint' of the station's RTCM stream (when in real-time PPP mode), or</li><li>the 4-charater station ID of the RINEX Observations file (when in post processing PPP mode).</li></ul></li><li>Approximate X,Y,Z coordinate of station's Antenna Reference Point [m] (ARP, specify '0.0 0.0 0.0' if unknown).</li><li>North, East and Up component of antenna eccentricity [m] (specify '0.0 0.0 0.0' if unknown).</li><li>20 Characters describing the antenna type and radome following the IGS 'ANTEX file' standard (leave blank if unknown).</li><li>Receiver type following the naming conventions for IGS equipment.</li></ul></p><p>Records with exclamation mark '!' in the first column or blank records will be interpreted as comment lines and ignored. <i>[key: PPP/crdFile]</i></p>")); 1475 _pppWidgets._logPath->setWhatsThis(tr("<p>Specify a directory for saving daily PPP logfiles. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no PPP logficorrMountles shall be produced. <i>[key: PPP/logPath]</i></p>")); 1476 _pppWidgets._nmeaPath->setWhatsThis(tr("<p>Specify a directory for saving coordinates in daily NMEA files. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no NMEA file shall be produced. <i>[key: PPP/nmeaPath]</i></p>")); 1477 _pppWidgets._snxtroPath->setWhatsThis(tr("<p>Specify a directory for saving SINEX Troposphere files. If the specified directory does not exist, BNC will not create such files.</p><p>Default is an empty option field, meaning that no SINEX Troposphere files shall be produced. <i>[key: PPP/snxtroPath]</i></p>")); 1478 _pppWidgets._snxtroIntr->setWhatsThis(tr("<p>Select a length for SINEX Troposphere files.</p><p>Default 'SNX TRO interval' for saving SINEX Troposphere files on disk is '1 hour'. <i>[key: PPP/snxtroIntr]</i></p>")); 1479 _pppWidgets._snxtroSampl->setWhatsThis(tr("<p>Select a 'Sampling' rate for saving troposphere parameters. <i>[key: PPP/snxtroSampl]</i></p>")); 1480 _pppWidgets._snxtroAc->setWhatsThis(tr("<p>Specify a 3-character abbreviation describing you as the generating Analysis Center (AC) in your SINEX troposphere files. <i>[key: PPP/snxtroAc]</i></p>")); 1481 _pppWidgets._snxtroSol->setWhatsThis(tr("<p>Specify a 4-character solution ID to allow a distinction between different solutions per AC. <i>[key: PPP/snxtroSol]</i></p>")); 1482 1482 1483 1483 1484 // WhatsThis, PPP (3) -
trunk/BNC/src/pppMain.cpp
r9694 r9783 410 410 } 411 411 412 opt->_minObs = settings.value("PPP/minObs").toInt(); if (opt->_minObs < 5) opt->_minObs = 5;412 opt->_minObs = settings.value("PPP/minObs").toInt(); if (opt->_minObs < 4) opt->_minObs = 4; 413 413 opt->_minEle = settings.value("PPP/minEle").toDouble() * M_PI / 180.0; 414 414 opt->_maxResC1 = settings.value("PPP/maxResC1").toDouble(); if (opt->_maxResC1 <= 0.0) opt->_maxResC1 = 4.0; -
trunk/BNC/src/pppRun.cpp
r9709 r9783 185 185 + country; 186 186 } 187 bool v2filenames = settings.value("PPP/v2filenames").toBool();188 187 QString logFileSkl = settings.value("PPP/logPath").toString(); 189 188 int l = logFileSkl.length(); … … 195 194 logFileSkl += QDir::separator(); 196 195 } 197 if (!v2filenames) { 198 logFileSkl = logFileSkl + ID9 + "${V3PROD}" + distStr + ".ppp"; 199 } 200 else { 201 logFileSkl = logFileSkl + ID4 + "${GPSWD}" + distStr + ".ppp"; 202 } 196 197 logFileSkl = logFileSkl + ID9 + "${V3PROD}" + distStr + ".ppp"; 198 203 199 _logFile = new bncoutf(logFileSkl, intr, sampl); 204 200 } … … 213 209 nmeaFileSkl += QDir::separator(); 214 210 } 215 if (!v2filenames) { 216 nmeaFileSkl = nmeaFileSkl + ID9 + "${V3PROD}" + distStr + ".nmea"; 217 } 218 else { 219 nmeaFileSkl = nmeaFileSkl + ID4 + "${GPSWD}" + distStr + ".nmea"; 220 } 211 nmeaFileSkl = nmeaFileSkl + ID9 + "${V3PROD}" + distStr + ".nmea"; 212 221 213 _nmeaFile = new bncoutf(nmeaFileSkl, intr, sampl); 222 214 } … … 230 222 snxtroFileSkl += QDir::separator(); 231 223 } 232 if (!v2filenames) { 233 snxtroFileSkl = snxtroFileSkl + ID9 + "${V3PROD}" + distStr + ".tra"; 234 } 235 else { 236 snxtroFileSkl = snxtroFileSkl + ID4 + "${GPSWD}" + distStr + ".tro"; 237 } 224 snxtroFileSkl = snxtroFileSkl + ID9 + "${V3PROD}" + distStr + ".tra"; 238 225 sampl = settings.value("PPP/snxtroSampl").toString().split("sec").first().toInt(); 239 226 intr = settings.value("PPP/snxtroIntr").toString(); … … 350 337 // Process the front epoch 351 338 // ----------------------- 352 353 339 if (_opt->_corrWaitTime == 0 || 354 340 (_epoData.front()->_time - _lastClkCorrTime) < _opt->_corrWaitTime) { 355 341 356 if ( fabs(_epoData.front()->_time - _lastClkCorrTime) > 60.0) {342 if (_opt->_corrWaitTime != 0 && (fabs(_epoData.front()->_time - _lastClkCorrTime) > 60.0)) { 357 343 delete _epoData.front(); 358 344 _epoData.pop_front(); … … 563 549 if (!_opt->_corrFile.empty()) { 564 550 _corrFile = new t_corrFile(QString(_opt->_corrFile.c_str())); 565 566 551 if (_opt->_ionoFile.empty()) { 567 552 connect(_corrFile, SIGNAL(newTec(t_vTec)), this, SLOT(slotNewTec(t_vTec))); -
trunk/BNC/src/pppWidgets.cpp
r9599 r9783 78 78 _snxtroAc = new QLineEdit(); _snxtroAc ->setObjectName("PPP/snxtroAc"); _widgets << _snxtroAc; 79 79 _snxtroSol = new QLineEdit(); _snxtroSol ->setObjectName("PPP/snxtroSol"); _widgets << _snxtroSol; 80 _v2filenames = new QCheckBox(); _v2filenames ->setObjectName("PPP/v2filenames"); _widgets << _v2filenames;81 80 _staTable = new QTableWidget(); _staTable ->setObjectName("PPP/staTable"); _widgets << _staTable; 82 81 _lcGPS = new QComboBox(); _lcGPS ->setObjectName("PPP/lcGPS"); _widgets << _lcGPS; … … 115 114 _dataSource->addItems(QString(",Real-Time Streams,RINEX Files").split(",")); 116 115 connect(_dataSource, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets())); 116 connect(_pseudoObs, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets())); 117 117 connect(_modelObs, SIGNAL(currentIndexChanged(const QString&)), this, SLOT(slotEnableWidgets())); 118 118 connect(_snxtroPath, SIGNAL(textChanged(const QString &)), this, SLOT(slotPPPTextChanged())); … … 168 168 _snxtroIntr->setCurrentIndex(6); 169 169 170 _minObs->setMinimum( 5);170 _minObs->setMinimum(4); 171 171 _minObs->setMaximum(6); 172 172 _minObs->setSingleStep(1); … … 209 209 // WhatsThis, PPP (2) 210 210 // ------------------ 211 _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. </p><p>Specifying one record per Station is mandatory. BNC will only process data for stations which are listed here. To define a station, specify the 'Mountpoint' when in 'Real-Time Streams' mode or the 4-character station ID when in 'RINEX Files' mode.</p><p>'Sigma' is meant to describe the uncertainty of a single coordinate or tropospheric delay estimated for one epoch. 'Noise' is meant to describe the variation of estimates from epoch to epoch.</p><p><ul><li>A Sigma of 100.0 meters may be an appropriate choice e.g. for the initial N/E/H coordinates. However, this value may be significantly smaller (i.e. 0.01) for stations with well-known a priori coordinates.</li><li>A Noise of 100.0 meters for the estimated N/E/H coordinates may also be appropriate considering the potential movement of a rover position.</li><li>A value of 0.1 meters may be an appropriate Sigma for the a priori model based Tropospheric delay estimation.</li><li>Specify a Noise to describe the expected variation of the tropospheric effect over time. Supposing 1Hz observation data, specifying a value of 3e-6 would mean that the tropospheric effect may vary 3600 * 3e-6 = 0.01 meters per hour.</li></ul></p><p>You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host.<i>[key: PPP/staTable]</i></p>"));211 _staTable->setWhatsThis(tr("<p>Specify values for Sigma and white Noise of the Stations North, East and Height coordinate components in meters. Specify also a Sigma in meters for a priori model based Tropospheric delays and a Sigma in meters per second for the delay's Noise. You can also specify a 'NMEA Port' to output coordinates in NMEA format through an IP port of your local host.</p><p>Specifying one record per Station is mandatory. BNC will only process data for stations which are listed here. To define a station, specify the 'Mountpoint' when in 'Real-Time Streams' mode or the 4-character station ID when in 'RINEX Files' mode.</p><p>'Sigma' is meant to describe the uncertainty of a single coordinate or tropospheric delay estimated for one epoch. 'Noise' is meant to describe the variation of estimates from epoch to epoch.</p><p><ul><li>A Sigma of 100.0 meters may be an appropriate choice e.g. for the initial N/E/H coordinates. However, this value may be significantly smaller (i.e. 0.01) for stations with well-known a priori coordinates.</li><li>A Noise of 100.0 meters for the estimated N/E/H coordinates may also be appropriate considering the potential movement of a rover position.</li><li>A value of 0.1 meters may be an appropriate Sigma for the a priori model based Tropospheric delay estimation.</li><li>Specify a Noise to describe the expected variation of the tropospheric effect over time. Supposing 1Hz observation data, specifying a value of 3e-6 would mean that the tropospheric effect may vary 3600 * 3e-6 = 0.01 meters per hour.</li></ul></p><p> <i>[key: PPP/staTable]</i></p>")); 212 212 213 213 // WhatsThis, PPP (3) … … 248 248 delete _snxtroAc; 249 249 delete _snxtroSol; 250 delete _v2filenames;251 250 for (int iRow = _staTable->rowCount()-1; iRow >=0; iRow--) { 252 251 _staTable->removeRow(iRow); … … 395 394 _eleWgtCode ->setCheckState(Qt::CheckState(settings.value(_eleWgtCode ->objectName()).toInt())); 396 395 _eleWgtPhase->setCheckState(Qt::CheckState(settings.value(_eleWgtPhase->objectName()).toInt())); 397 _v2filenames->setCheckState(Qt::CheckState(settings.value(_v2filenames->objectName()).toInt()));398 396 399 397 // SpinBoxex … … 464 462 settings.setValue(_snxtroAc ->objectName(), _snxtroAc ->text()); 465 463 settings.setValue(_snxtroSol ->objectName(), _snxtroSol ->text()); 466 settings.setValue(_v2filenames ->objectName(), _v2filenames ->checkState());467 464 settings.setValue(_lcGPS ->objectName(), _lcGPS ->currentText()); 468 465 settings.setValue(_lcGLONASS ->objectName(), _lcGLONASS ->currentText()); … … 523 520 enablePseudoObs = true; 524 521 } 522 bool pseudoObsUsed = _pseudoObs->currentText() == "Ionosphere"; 525 523 526 524 QListIterator<QWidget*> it(_widgets); … … 557 555 if (enablePseudoObs) { 558 556 _pseudoObs->setEnabled(true); 559 _sigmaGIM->setEnabled(true); 560 _maxResGIM->setEnabled(true); 557 if (pseudoObsUsed) { 558 _sigmaGIM->setEnabled(true); 559 _maxResGIM->setEnabled(true); 560 } else { 561 _sigmaGIM->setEnabled(false); 562 _maxResGIM->setEnabled(false); 563 } 561 564 } else { 562 565 _pseudoObs->setEnabled(false); … … 593 596 if (iCol == 6) _staTable->setItem(iRow, iCol, new QTableWidgetItem("100.0")); 594 597 if (iCol == 7) _staTable->setItem(iRow, iCol, new QTableWidgetItem("0.1")); 595 if (iCol == 8) _staTable->setItem(iRow, iCol, new QTableWidgetItem(" 1e-6"));598 if (iCol == 8) _staTable->setItem(iRow, iCol, new QTableWidgetItem("3e-6")); 596 599 if (iCol == 9) _staTable->setItem(iRow, iCol, new QTableWidgetItem("0")); 597 600 } -
trunk/BNC/src/pppWidgets.h
r9599 r9783 62 62 QLineEdit* _snxtroAc; 63 63 QLineEdit* _snxtroSol; 64 QCheckBox* _v2filenames;65 64 QTableWidget* _staTable; 66 65 QComboBox* _lcGPS;
Note:
See TracChangeset
for help on using the changeset viewer.