Changeset 10328 in ntrip


Ignore:
Timestamp:
Feb 9, 2024, 12:00:35 PM (8 months ago)
Author:
stuerze
Message:

hDOP and vDOP values are now computed from the variances of the NEU components of the receiver position estimates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/PPP/pppFilter.cpp

    r10327 r10328  
    465465    const unsigned numPar = 4;
    466466    Matrix AA(obsVector.size(), numPar);
     467    t_pppParam* parX = 0;
     468    t_pppParam* parY = 0;
     469    t_pppParam* parZ = 0;
    467470    _numSat = 0;
    468471    for (unsigned ii = 0; ii < obsVector.size(); ii++) {
     
    471474        ++_numSat;
    472475        for (unsigned iPar = 0; iPar < numPar; iPar++) {
    473           const t_pppParam* par = _parlist->params()[iPar];
     476          t_pppParam* par = _parlist->params()[iPar];
    474477          AA[_numSat - 1][iPar] = par->partial(_epoTime, obs, t_lc::c1);
     478          if      (par->type() == t_pppParam::crdX) {
     479            parX = par;
     480          }
     481          else if (par->type() == t_pppParam::crdY) {
     482            parY = par;
     483          }
     484          else if (par->type() == t_pppParam::crdZ) {
     485            parZ = par;
     486          }
    475487        }
    476488      }
     
    482494    SymmetricMatrix NN; NN << AA.t() * AA;
    483495    SymmetricMatrix QQ = NN.i();
    484 
    485     _dop.H = sqrt(QQ(1, 1) + QQ(2, 2));
    486     _dop.V = sqrt(QQ(3, 3));
     496    SymmetricMatrix QQxyz = QQ.SymSubMatrix(1,3);
     497
     498    ColumnVector xyz(3), neu(3);
     499    SymmetricMatrix QQneu(3);
     500    const t_pppStation *sta = PPP_CLIENT->staRover();
     501    xyz[0] = _xFlt[parX->indexNew()];
     502    xyz[1] = _xFlt[parY->indexNew()];
     503    xyz[2] = _xFlt[parZ->indexNew()];
     504    xyz2neu(sta->ellApr().data(), xyz.data(), neu.data());
     505    covariXYZ_NEU(QQxyz, sta->ellApr().data(), QQneu);
     506
     507    _dop.H = sqrt(QQneu(1, 1) + QQneu(2, 2));
     508    _dop.V = sqrt(QQneu(3, 3));
    487509    _dop.P = sqrt(QQ(1, 1) + QQ(2, 2) + QQ(3, 3));
    488510    _dop.T = sqrt(QQ(4, 4));
Note: See TracChangeset for help on using the changeset viewer.