Changeset 9652 in ntrip


Ignore:
Timestamp:
Mar 11, 2022, 9:57:17 AM (4 months ago)
Author:
stuerze
Message:

Bias SINEX file can be written now during SSR upload

Location:
trunk/BNC/src
Files:
9 edited

Legend:

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

    r9559 r9652  
    267267      "Upload Corrections Panel keys:\n"
    268268      "   uploadMountpointsOut   {Upload corrections table [character string, semicolon separated list, each element in quotation marks, example:\n"
    269       "                          \"igs-ip.net,2101,SSRA03IGS0,1,,pass,IGS14,RTCM-SSR,0,/home/user/BNCOUTPUT${V3PROD}.sp3,/home/user/BNCOUTPUT${V3PROD}.clk,258,1,0;\n"
     269      "                          \"igs-ip.net,2101,SSRA03IGS0,1,,pass,IGS14,RTCM-SSR,0,/home/user/BNC0SSRRTS${V3PROD}.sp3,/home/user/BNC0SSRRTS${V3PROD}.clk,/home/user/BNC0SSRRTS${V3PROD}.bia,258,1,0;\n"
    270270      "                          euref-ip.net,2101,EUREF01,1,,pass,ETRF2000,RTCM-SSR,0,,,258,2,0\"]}\n"
    271       "   uploadIntr             {Length of SP3 and Clock RINEX file interval [character string: 1 min|2 min|5 min|10 min|15 min|30 min|1 hour|1 day]}\n"
     271      "   uploadIntr             {Length of SP3, Clock RINEX and Bias SINEX file interval [character string: 1 min|2 min|5 min|10 min|15 min|30 min|1 hour|1 day]}\n"
    272272      "   uploadSamplRtcmEphCorr {Orbit corrections stream sampling rate [integer number of seconds: 0|5|10|15|20|25|30|35|40|45|50|55|60]}\n"
    273273      "   uploadSamplSp3         {SP3 file sampling rate [integer number of minutes: 0-15]}\n"
     
    325325      "//user:pass@igs-ip.net:2101/FFMJ00DEU1 RTCM_3.1 DEU 50.09 8.66 no 2\"\n"
    326326      "(7) bnc --key cmbStreams \"CLK11 BLG 1.0;CLK93 CNES 1.0\"\n"
    327       "(8) bnc --key uploadMountpointsOut \"products.igs-ip.net,98756,TEST,letmein,IGS14,2,/Users/weber/BNCOUTPUT${V3PROD}.clk,,33,3,2;"
     327      "(8) bnc --key uploadMountpointsOut \"products.igs-ip.net,98756,TEST,letmein,IGS14,2,/Users/weber/BNC0SSRRTS${V3PROD}.clk,,33,3,2;"
    328328      "euref-ip.net,333,TEST2,aaaaa,ETRF2000,2,,,33,5,5\"\n"
    329329      "(9) bnc --key PPP/staTable \"FFMJ00DEU1,100.0,100.0,100.0,100.0,100.0,100.0,0.1,3e-6,7777;"
  • trunk/BNC/src/bncoutf.cpp

    r9418 r9652  
    7272  int indHlp = intStr.indexOf("min");
    7373  if (!sampl) {
    74     sampl++;
     74    if (_sklBaseName.contains("V3PROD")){
     75      sampl +=5;
     76    } else {
     77      sampl++;
     78    }
    7579  }
    7680
     
    160164      addition = QString("_CLK");
    161165    }
     166    if (_extension.contains("bia") || _extension.contains("BIA")) {
     167      addition = QString("_ABS");
     168    }
    162169  if (_extension.count(".") == 2) {
    163170    _extension.replace(0,1,"_");
     
    214221  return success;
    215222}
     223
     224QString bncoutf::agencyFromFileName() {
     225  return QString("%1").arg(_sklBaseName.left(3));
     226}
  • trunk/BNC/src/bncoutf.h

    r9158 r9652  
    77
    88#include "bncutils.h"
     9#include <iostream>
    910
    1011class bncoutf {
     
    1314  virtual ~bncoutf();
    1415  t_irc write(int GPSweek, double GPSweeks, const QString& str);
    15 
     16  QString agencyFromFileName();
    1617 protected:
    1718  virtual t_irc reopen(int GPSweek, double GPSweeks);
  • trunk/BNC/src/bncsettings.cpp

    r9424 r9652  
    188188    setValue_p("uploadSamplSp3",     "1");
    189189    setValue_p("uploadSamplClkRnx", "10");
     190    setValue_p("uploadSamplBiaSnx", "60");
    190191    setValue_p("trafo_dx",            "");
    191192    setValue_p("trafo_dy",            "");
  • trunk/BNC/src/bncwindow.cpp

    r9635 r9652  
    15071507  // WhatsThis, Upload Corrections
    15081508  // -----------------------------
    1509   _uploadTable->setWhatsThis(tr("<p>BNC can upload clock and orbit corrections to Broadcast Ephemeris (Broadcast Corrections) in different SSR formats. You may have a situation where clocks and orbits come from an external Real-time Network Engine (1) or a situation where clock and orbit corrections are combined within BNC (2).</p><p>(1) BNC identifies a stream as coming from a Real-time Network Engine if its format is specified as 'RTNET' and hence its decoder string in the 'Streams' canvas is 'RTNET'. It encodes and uploads that stream to the specified Ntrip Broadcaster Host and Port</p><p>(2) BNC understands that it is expected to encode and upload combined Broadcast Ephemeris Corrections if you specify correction streams in the 'Combine Corrections' table.</p><p>To fill the 'Upload Corrections' table, hit the 'Add Row' button, double click on the 'Host' field to enter the IP or URL of an Ntrip Broadcaster and hit Enter. Select the Ntrip Version that shall be used for data upload. Then double click on the 'Port', 'Mount' and 'Password' fields to enter the Ntrip Broadcaster IP port (default is 80), the mountpoint and the stream upload password. If Ntrip Version 2 is chosen, click to the 'User' field to enter a stream upload user name. An empty 'Host' option field means that you don't want to upload corrections.</p><p>Select a target coordinate reference System (e.g. IGS14) for outgoing clock and orbit corrections.</p><p>Select a target SSR format (e.g. IGS-SSR) for outgoing clock and orbit corrections.</p><p>By default orbit and clock corrections refer to Antenna Phase Center (APC). Tick 'CoM' to refer uploaded corrections to Center of Mass instead of APC.</p><p>Specify a path for saving generated Broadcast Corrections plus Broadcast Ephemeris as SP3 orbit files. If the specified directory does not exist, BNC will not create such files. The following is a path example for a Linux system: /home/user/BNCOUTPUT${V3PROD}.sp3<br>Note that '${V3PROD}' produces the time stamp in the filename, which is related to the RINEX version 3 filename concept.</p><p>Specify a path for saving generated Broadcast Correction clocks plus Broadcast Ephemeris clocks as Clock RINEX files. If the specified directory does not exist, BNC will not create Clock RINEX files. The following is a path example for a Linux system: /home/user/BNCOUTPUT${V3PROD}.clk<br>Note that '${V3PROD}' produces the time stamp in the filename, which is related to the RINEX version 3 filename concept.</p><p>Finally, specify a SSR Provider ID (issued by RTCM), SSR Solution ID, and SSR Issue of Data number.</p><p>In case the 'Combine Corrections' table contains only one Broadcast Correction stream, BNC will add that stream content to the Broadcast Ephemeris to save results in files specified via SP3 and/or Clock RINEX file path. You should then define only the SP3 and Clock RINEX file path and no further option in the 'Upload Corrections' table. <i>[key: uploadMountpointsOut]</i></p>"));
     1509  _uploadTable->setWhatsThis(tr("<p>BNC can upload clock and orbit corrections to Broadcast Ephemeris (Broadcast Corrections) as well as Code Biases in different SSR formats. You may have a situation where clocks, orbits and code biases come from an external Real-time Network Engine (1) or a situation where clock and orbit corrections are combined within BNC (2).</p><p>(1) BNC identifies a stream as coming from a Real-time Network Engine if its format is specified as 'RTNET' and hence its decoder string in the 'Streams' canvas is 'RTNET'. It encodes and uploads that stream to the specified Ntrip Broadcaster Host and Port</p><p>(2) BNC understands that it is expected to encode and upload combined Broadcast Ephemeris Corrections if you specify correction streams in the 'Combine Corrections' table.</p><p>To fill the 'Upload Corrections' table, hit the 'Add Row' button, double click on the 'Host' field to enter the IP or URL of an Ntrip Broadcaster and hit Enter. Select the Ntrip Version that shall be used for data upload. Then double click on the 'Port', 'Mount' and 'Password' fields to enter the Ntrip Broadcaster IP port (default is 80), the mountpoint and the stream upload password. If Ntrip Version 2 is chosen, click to the 'User' field to enter a stream upload user name. An empty 'Host' option field means that you don't want to upload corrections.</p><p>Select a target coordinate reference System (e.g. IGS14) for outgoing clock and orbit corrections.</p><p>Select a target SSR format (e.g. IGS-SSR) for outgoing clock and orbit corrections.</p><p>By default orbit and clock corrections refer to Antenna Phase Center (APC). Tick 'CoM' to refer uploaded corrections to Center of Mass instead of APC.</p><p>Specify a path for saving generated Broadcast Corrections plus Broadcast Ephemeris as SP3 orbit files. If the specified directory does not exist, BNC will not create such files. The following is a path example for a Linux system: /home/user/BNC0SSRRTS${V3PROD}.sp3.</p><p>Specify a path for saving generated Broadcast Correction clocks plus Broadcast Ephemeris clocks as Clock RINEX files. If the specified directory does not exist, BNC will not create Clock RINEX files. The following is a path example for a Linux system: /home/user/BNC0SSRRTS${V3PROD}.clk.</p><p>Specify a path for saving generated Code Biases as SINEX Bias files. If the specified directory does not exist, BNC will not create SINEX Bias files. The following is a path example for a Linux system: /home/user/BNC0SSRRTS${V3PROD}.bia.</p><p>Note that '${V3PROD}' produces the time stamp in the filename, which is related to the RINEX version 3 filename concept.</p><p>Finally, specify a SSR Provider ID (issued by RTCM), SSR Solution ID, and SSR Issue of Data number.</p><p>In case the 'Combine Corrections' table contains only one Broadcast Correction stream, BNC will add that stream content to the Broadcast Ephemeris to save results in files specified via SP3 and/or Clock RINEX file path. You should then define only the SP3 and Clock RINEX file path and no further option in the 'Upload Corrections' table. <i>[key: uploadMountpointsOut]</i></p>"));
    15101510  addUploadRowButton->setWhatsThis(tr("<p>Hit 'Add Row' button to add another line to the 'Upload Corrections' table.</p>"));
    15111511  delUploadRowButton->setWhatsThis(tr("<p>Hit 'Del Row' button to delete the highlighted line(s) from the 'Upload Corrections' table.</p>"));
    1512   _uploadIntrComboBox->setWhatsThis(tr("<p>Select the length of the SP3 and Clock RINEX files. <i>[key: uploadIntr]</i></p>"));
     1512  _uploadIntrComboBox->setWhatsThis(tr("<p>Select the length of the SP3, Clock RINEX and Bias SINEX files. <i>[key: uploadIntr]</i></p>"));
    15131513  _uploadSamplRtcmEphCorrSpinBox->setWhatsThis(tr("<p>Select a stream's orbit correction sampling interval in seconds.</p><p>A value of zero '0' tells BNC to upload all available orbit and clock correction samples together in combined messages. <i>[key: uploadSamplRtcmEphCorr]</i></p>"));
    15141514  _uploadSamplSp3SpinBox->setWhatsThis(tr("<p>Select a SP3 orbit file sampling interval in minutes.</p><p>A value of zero '0' tells BNC to store all available samples into SP3 orbit files. <i>[key: uploadSamplSp3]</i></p>"));
  • trunk/BNC/src/src.pri

    r9523 r9652  
    5858          bncmap.h bncantex.h bncephuser.h                            \
    5959          bncoutf.h bncclockrinex.h bncsp3.h bncsinextro.h            \
     60          bncbissinex.h                                               \
    6061          bncbytescounter.h bncsslconfig.h reqcdlg.h                  \
    6162          upload/bncrtnetdecoder.h upload/bncuploadcaster.h           \
     
    9697          bncmap_svg.cpp bncantex.cpp bncephuser.cpp                  \
    9798          bncoutf.cpp bncclockrinex.cpp bncsp3.cpp bncsinextro.cpp    \
     99          bncbiassinex.cpp                                            \
    98100          bncbytescounter.cpp bncsslconfig.cpp reqcdlg.cpp            \
    99101          ephemeris.cpp t_prn.cpp satObs.cpp                          \
  • trunk/BNC/src/upload/bncrtnetdecoder.cpp

    r9025 r9652  
    7676                                                       hlp[3], hlp[4],
    7777                                                       hlp[5], hlp[6], hlp[7], CoM,
    78                                                        hlp[9], hlp[10],
     78                                                       hlp[9], hlp[10],hlp[11],
    7979                                                       PID, SID, IOD, iRow);
    8080      newCaster->start();
  • trunk/BNC/src/upload/bncrtnetuploadcaster.cpp

    r9512 r9652  
    2020#include "bncephuser.h"
    2121#include "bncclockrinex.h"
     22#include "bncbiassinex.h"
    2223#include "bncsp3.h"
    2324#include "gnss.h"
     
    3334    const QString& userName, const QString& password,
    3435    const QString& crdTrafo, const QString& ssrFormat, bool CoM, const QString& sp3FileName,
    35     const QString& rnxFileName, int PID, int SID, int IOD, int iRow) :
     36    const QString& rnxFileName, const QString& bsxFileName, int PID, int SID, int IOD, int iRow) :
    3637    bncUploadCaster(mountpoint, outHost, outPort, ntripVersion, userName, password, iRow, 0) {
    3738
     
    5354  if (!rnxFileName.isEmpty()) {
    5455    _casterID += " " + rnxFileName;
     56  }
     57
     58  if (!bsxFileName.isEmpty()) {
     59    _casterID += " " + bsxFileName;
    5560  }
    5661
     
    8792  }
    8893  int samplClkRnx = settings.value("uploadSamplClkRnx").toInt();
    89   int samplSp3 = settings.value("uploadSamplSp3").toInt() * 60;
     94  int samplSp3    = settings.value("uploadSamplSp3").toInt() * 60;
     95  int samplBiaSnx = settings.value("uploadSamplBiaSnx").toInt();
    9096
    9197  if (_samplRtcmEphCorr == 0.0) {
     
    113119    _sp3 = 0;
    114120  }
     121
     122  // SINEX writer
     123  // ------------
     124  if (!bsxFileName.isEmpty()) {
     125    _bsx = new bncBiasSinex(bsxFileName, intr, samplBiaSnx);
     126  }
     127  else {
     128    _bsx = 0;
     129  }
     130
    115131
    116132  // Set Transformation Parameters
     
    674690            biasSat->Biases[ii].Type = type;
    675691            biasSat->Biases[ii].Bias = it.value();
     692            if (_bsx) {
     693              QString obsCode = 'C' + it.key();
     694              _bsx->write(epoTime.gpsw(), epoTime.gpssec(), prnStr, obsCode, it.value());
     695            }
    676696          }
    677697        }
     
    737757            phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator;
    738758            phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter;
     759            if (_bsx) {
     760              QString obsCode = 'L' + pbSig.type;
     761              _bsx->write(epoTime.gpsw(), epoTime.gpssec(), prnStr, obsCode, pbSig.bias);
     762            }
    739763          }
    740764        }
  • trunk/BNC/src/upload/bncrtnetuploadcaster.h

    r9512 r9652  
    1414class bncClockRinex;
    1515class bncSP3;
     16class bncBiasSinex;
    1617
    1718class bncRtnetUploadCaster : public bncUploadCaster {
     
    2627                  const QString& sp3FileName,
    2728                  const QString& rnxFileName,
     29                  const QString& bsxFileName,
    2830                  int PID, int SID, int IOD, int iRow);
    2931  void decodeRtnetStream(char* buffer, int bufLen);
     
    7880  bncClockRinex* _rnx;
    7981  bncSP3*        _sp3;
     82  bncBiasSinex*  _bsx;
    8083  QMap<QString, const t_eph*>* _usedEph;
    8184};
Note: See TracChangeset for help on using the changeset viewer.