Changeset 2649 in ntrip


Ignore:
Timestamp:
Nov 7, 2010, 6:54:37 PM (13 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncmodel.cpp

    r2648 r2649  
    774774  if (settings.value("pppOrigin").toString() == "Plot - X Y Z" ||
    775775      settings.value("pppOrigin").toString() == "QuickStart - Static") {
     776
    776777    double xyzRef[3];
    777     double ellRef[3];
    778     double _xyz[3];
    779     double _neu[3];
    780778    xyzRef[0] = settings.value("pppRefCrdX").toDouble();
    781779    xyzRef[1] = settings.value("pppRefCrdY").toDouble();
    782780    xyzRef[2] = settings.value("pppRefCrdZ").toDouble();
    783     _xyz[0] = x() - xyzRef[0];
    784     _xyz[1] = y() - xyzRef[1];
    785     _xyz[2] = z() - xyzRef[2];
     781
     782    pppPos* newPos = new pppPos;
     783    newPos->time   = epoData->tt;
     784    newPos->xn[0] = x() - xyzRef[0];
     785    newPos->xn[1] = y() - xyzRef[1];
     786    newPos->xn[2] = z() - xyzRef[2];
     787
     788    double ellRef[3];
    786789    xyz2ell(xyzRef, ellRef);
    787     xyz2neu(ellRef, _xyz, _neu);
     790    xyz2neu(ellRef, newPos->xn, &newPos->xn[3]);
     791
    788792    strC << "  NEU "
    789          << setw(8) << setprecision(3) << _neu[0] << " "
    790          << setw(8) << setprecision(3) << _neu[1] << " "
    791          << setw(8) << setprecision(3) << _neu[2];
     793         << setw(8) << setprecision(3) << newPos->xn[3] << " "
     794         << setw(8) << setprecision(3) << newPos->xn[4] << " "
     795         << setw(8) << setprecision(3) << newPos->xn[5];
     796
     797    _posAverage.push_back(newPos); // remember for the computation of mean
    792798  }
    793799
    794800  emit newMessage(QByteArray(strC.str().c_str()), true);
    795801
    796   if (settings.value("pppOrigin").toString() != "None"                  &&
    797       settings.value("pppOrigin").toString() != "QuickStart - Mobile"   &&
    798       settings.value("pppOrigin").toString() != "Plot - Start position" &&
    799       settings.value("pppAverage").toString() != "") {
    800 
    801     // Remember new position
    802     // ---------------------
    803     pppPos* newPos = new pppPos;
    804     newPos->time      = epoData->tt;
    805     newPos->xyz[0]    = x();
    806     newPos->xyz[1]    = y();
    807     newPos->xyz[2]    = z();
    808     newPos->xyzRef[0] = settings.value("pppRefCrdX").toDouble();
    809     newPos->xyzRef[1] = settings.value("pppRefCrdY").toDouble();
    810     newPos->xyzRef[2] = settings.value("pppRefCrdZ").toDouble();
    811 
    812     _posAverage.push_back(newPos);
     802  if (settings.value("pppAverage").toString() != "") {
    813803
    814804    // Time Span for Average Computation
     
    824814    // Compute the Mean
    825815    // ----------------
    826     double meanX = 0.0;
    827     double meanY = 0.0;
    828     double meanZ = 0.0;
     816    ColumnVector mean(6); mean = 0.0;
    829817
    830818    QMutableVectorIterator<pppPos*> it(_posAverage);
     
    836824      }
    837825      else {
    838         meanX += pp->xyz[0] - pp->xyzRef[0];
    839         meanY += pp->xyz[1] - pp->xyzRef[1];
    840         meanZ += pp->xyz[2] - pp->xyzRef[2];
     826        for (int ii = 0; ii < 6; ++ii) {
     827          mean[ii] += pp->xn[ii];
     828        }
    841829      }
    842830    }
     
    844832    int nn = _posAverage.size();
    845833
    846     meanX /= nn;
    847     meanY /= nn;
    848     meanZ /= nn;
    849 
    850     // Compute the Deviation
    851     // ---------------------
    852     double stdX  = 0.0;
    853     double stdY  = 0.0;
    854     double stdZ  = 0.0;
    855     QVectorIterator<pppPos*> it2(_posAverage);
    856     while (it2.hasNext()) {
    857       pppPos* pp = it2.next();
    858       double dX = pp->xyz[0] - pp->xyzRef[0] - meanX;
    859       double dY = pp->xyz[1] - pp->xyzRef[1] - meanY;
    860       double dZ = pp->xyz[2] - pp->xyzRef[2] - meanZ;
    861       stdX += dX * dX;
    862       stdY += dY * dY;
    863       stdZ += dZ * dZ;
    864     }
    865    
    866     stdX = sqrt(stdX / nn);
    867     stdY = sqrt(stdY / nn);
    868     stdZ = sqrt(stdZ / nn);
    869      
    870     ostringstream strD; strD.setf(ios::fixed);
    871     strD << _staID.data() << "  AVE-XYZ "
    872          << epoData->tt.timestr(1) << " "
    873          << setw(13) << setprecision(3) << meanX  << " +- "
    874          << setw(6)  << setprecision(3) << stdX   << " "
    875          << setw(14) << setprecision(3) << meanY  << " +- "
    876          << setw(6)  << setprecision(3) << stdY   << " "
    877          << setw(14) << setprecision(3) << meanZ  << " +- "
    878          << setw(6)  << setprecision(3) << stdZ;
    879     emit newMessage(QByteArray(strD.str().c_str()), true);
     834    if (nn > 0) {
     835
     836      mean /= nn;
     837     
     838      // Compute the Deviation
     839      // ---------------------
     840      ColumnVector std(6); std = 0.0;
     841      QVectorIterator<pppPos*> it2(_posAverage);
     842      while (it2.hasNext()) {
     843        pppPos* pp = it2.next();
     844        for (int ii = 0; ii < 6; ++ii) {
     845          std[ii] += (pp->xn[ii] - mean[ii]) * (pp->xn[ii] - mean[ii]);
     846        }
     847      }
     848      for (int ii = 0; ii < 6; ++ii) {
     849        std[ii] = sqrt(std[ii] / nn);
     850      }
     851       
     852      ostringstream strD; strD.setf(ios::fixed);
     853      strD << _staID.data() << "  AVE-XYZ "
     854           << epoData->tt.timestr(1) << " "
     855           << setw(13) << setprecision(3) << mean[0]  << " +- "
     856           << setw(6)  << setprecision(3) << std[0]   << " "
     857           << setw(14) << setprecision(3) << mean[1]  << " +- "
     858           << setw(6)  << setprecision(3) << std[1]   << " "
     859           << setw(14) << setprecision(3) << mean[2]  << " +- "
     860           << setw(6)  << setprecision(3) << std[2]   << endl;
     861
     862      strD << _staID.data() << "  AVE-NEU "
     863           << epoData->tt.timestr(1) << " "
     864           << setw(13) << setprecision(3) << mean[3]  << " +- "
     865           << setw(6)  << setprecision(3) << std[3]   << " "
     866           << setw(14) << setprecision(3) << mean[4]  << " +- "
     867           << setw(6)  << setprecision(3) << std[4]   << " "
     868           << setw(14) << setprecision(3) << mean[5]  << " +- "
     869           << setw(6)  << setprecision(3) << std[5]   << endl;
     870
     871      emit newMessage(QByteArray(strD.str().c_str()), true);
     872    }
    880873  }
    881874
  • trunk/BNC/bncmodel.h

    r2648 r2649  
    100100   public:
    101101    bncTime time;
    102     double  xyz[3];
    103     double  xyzRef[3];
     102    double  xn[6];
    104103  };
    105104
Note: See TracChangeset for help on using the changeset viewer.