Changeset 10127 in ntrip for trunk/BNC/src/orbComp/sp3Comp.cpp


Ignore:
Timestamp:
Jul 20, 2023, 12:13:41 PM (9 months ago)
Author:
stuerze
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/orbComp/sp3Comp.cpp

    r10125 r10127  
    225225    for (map<t_prn, double>::iterator it = dc.begin(); it != dc.end(); it++) {
    226226      const t_prn& prn = it->first;
    227       std::string sys; sys.assign(1, prn.system());
     227      stringstream all; all << prn.system() << 99;
    228228      if (satIndex(clkSats, prn) != -1) {
    229229        int  index = epochs.size() + satIndex(clkSats, prn);
     
    233233          dcRed[prn] = dc[prn] - dr.find(prn)->second[0]; // clock minus radial component
    234234          stat[prn.toString()]._dcRedMean += dcRed[prn];
    235           stat[sys           ]._dcRedMean += dcRed[prn];
     235          stat[all.str()     ]._dcRedMean += dcRed[prn];
    236236          stat[prn.toString()]._nc        += 1;
    237           stat[sys           ]._nc        += 1;
     237          stat[all.str()     ]._nc        += 1;
    238238        }
    239239      }
     
    380380    for (map<t_prn, ColumnVector>::const_iterator it = dr.begin(); it != dr.end(); it++) {
    381381      const t_prn&  prn = it->first;
    382       std::string sys; sys.assign(1, prn.system());
     382      stringstream all; all << prn.system() << 99;
    383383      if (!excludeSat(prn)) {
    384384        const ColumnVector& rao = it->second;
     
    390390        }
    391391        stat[prn.toString()]._rao += SP(rao, rao); // Schur product
    392         stat[sys           ]._rao += SP(rao, rao);
     392        stat[all.str()     ]._rao += SP(rao, rao);
    393393        stat[prn.toString()]._nr  += 1;
    394         stat[sys           ]._nr  += 1;
     394        stat[all.str()     ]._nr  += 1;
    395395        if (dc.find(prn) != dc.end() && dcRed.find(prn) != dc.end()) {
    396396          double clkRes    = dc.find(prn)->second;
     
    401401          }
    402402          stat[prn.toString()]._dcRMS     += clkRes * clkRes;
    403           stat[sys           ]._dcRMS     += clkRes * clkRes;
     403          stat[all.str()     ]._dcRMS     += clkRes * clkRes;
    404404          stat[prn.toString()]._dcRedRMS  += clkResRed * clkResRed;
    405           stat[sys           ]._dcRedRMS  += clkResRed * clkResRed;
     405          stat[all.str()     ]._dcRedRMS  += clkResRed * clkResRed;
    406406          stat[prn.toString()]._dcRedSig  += (clkResRed - stat[prn.toString()]._dcRedMean) *
    407407                                             (clkResRed - stat[prn.toString()]._dcRedMean);
    408           stat[sys           ]._dcRedSig  += (clkResRed - stat[sys           ]._dcRedMean) *
    409                                              (clkResRed - stat[sys           ]._dcRedMean);
     408          stat[all.str()     ]._dcRedSig  += (clkResRed - stat[all.str()     ]._dcRedMean) *
     409                                             (clkResRed - stat[all.str()     ]._dcRedMean);
    410410        }
    411411        else {
     
    432432    const string& prn  = it->first;
    433433    t_stat&       stat = it->second;
    434     std::string sys; sys.assign(1, prn[0]);
     434    stringstream all; all << prn[0] << 99;
    435435    if (stat._nr > 0) {
    436436      stat._rao[0] = sqrt(stat._rao[0] / stat._nr);
     
    438438      stat._rao[2] = sqrt(stat._rao[2] / stat._nr);
    439439      stat._rao3DRMS = stat._rao.NormFrobenius();
    440       if (prn != sys) {
    441         (_summaryOnly) ? out << "     " << prn << ' ' :
     440      // orbit values in millimeter
     441      if (prn != all.str()) {
     442        (_summaryOnly) ? out << "     "  << prn << ' ':
    442443                         out << "!     " << prn << ' ';
    443444      }
    444       // orbit values in millimeters
    445       if (prn != sys) {
    446         out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
    447             << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
    448             << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
    449             << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
    450             << setw( 7) << stat._nr << " ";
    451       }
     445      else {
     446        (_summaryOnly) ? out << "     "   << QString("%1  ").arg(all.str()[0]).toStdString() << " ":
     447                         out << "!     "  << QString("%1  ").arg(all.str()[0]).toStdString() << " ";
     448      }
     449      out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
     450          << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
     451          << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
     452          << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
     453          << setw( 7) << stat._nr << " ";
     454      // clock values in nano seconds
    452455      if (stat._nc > 0) {
    453456        stat._dcRMS    = sqrt(stat._dcRMS    / stat._nc);
    454457        stat._dcRedRMS = sqrt(stat._dcRedRMS / stat._nc);
    455458        stat._dcRedSig = sqrt(stat._dcRedSig / stat._nc);
    456         // clock values in nano seconds
    457         if (prn != sys) {
    458           out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
    459               << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
    460               << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
    461               << setw( 9) << stat._nc << " "
    462               << setw( 9) << setprecision(2) << stat._offset / t_CST::c * 1e9;
    463         }
    464       }
    465       else {
    466         if  (prn != sys) {
    467 //          out << "  .       .    ";
    468         }
    469       }
    470       if (prn != sys) {
    471         out << "\n";
    472       }
    473     }
    474   }
    475   // Print Total
    476   // ------------
    477   out << "!\n! Mean";
    478   out << "\n! -----------------------------------------------------------------------------------------------------------------\n";
    479   out << "!\n!    GNSS   radialRMS   alongRMS    outRMS     3DRMS      nOrb    clkRMS    clkRedRMS   clkRedSig   nClk "
    480           "\n!              [mm]       [mm]        [mm]      [mm]      [-]      [ns]        [ns]        [ns]      [-] "
    481           "\n! -----------------------------------------------------------------------------------------------------------------";
    482   for (map<string, t_stat>::iterator it = stat.begin(); it != stat.end(); it++) {
    483     const string& prn  = it->first;
    484     t_stat&       stat = it->second;
    485     std::string sys; sys.assign(1, prn[0]);
    486     if (stat._nr > 0) {
    487       if (prn == sys) {
    488         (_summaryOnly) ? out << "\n       "   << sys << " " :
    489                          out << "\n!       "  << sys << " ";
    490       }
    491       // orbit values in millimeters
    492       if (prn == sys) {
    493         out << setw(10) << setprecision(1) << stat._rao[0]   * 1e3 << ' '
    494             << setw(10) << setprecision(1) << stat._rao[1]   * 1e3 << ' '
    495             << setw(10) << setprecision(1) << stat._rao[2]   * 1e3 << ' '
    496             << setw(10) << setprecision(1) << stat._rao3DRMS * 1e3 << ' '
    497             << setw( 7) << stat._nr << " ";
    498       }
    499       if (stat._nc > 0) {
    500         // clock values in nano seconds
    501         if (prn == sys) {
    502           out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
    503               << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
    504               << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
    505               << setw( 9) << stat._nc << " ";
    506         }
    507       }
    508       else {
    509         if (prn == sys) {
    510 //          out << "  .       .    ";
    511         }
    512       }
     459        out << setw(10) << setprecision(2) << stat._dcRMS    / t_CST::c * 1e9 << ' '
     460            << setw(10) << setprecision(2) << stat._dcRedRMS / t_CST::c * 1e9 << ' '
     461            << setw(10) << setprecision(2) << stat._dcRedSig / t_CST::c * 1e9 << ' '
     462            << setw( 9) << stat._nc << " ";
     463        if (prn != all.str()) {
     464          out << setw( 9) << setprecision(2) << stat._offset / t_CST::c * 1e9;
     465        }
     466      }
     467      out << "\n";
    513468    }
    514469  }
Note: See TracChangeset for help on using the changeset viewer.