Commit e7e1c9d1 authored by Kristin Berry's avatar Kristin Berry Committed by Makayla Shepherd
Browse files

Fix how Aposteroir and Apriori Covar matricies are handled in ControlPointV0001

parent 57843f4d
Loading
Loading
Loading
Loading
+24 −8
Original line number Diff line number Diff line
@@ -244,8 +244,9 @@ namespace Isis {
    Distance equatorialRadius(radii["EquatorialRadius"], Distance::Meters);
    Distance polarRadius(radii["PolarRadius"], Distance::Meters);

    if ( pointObject.hasKeyword("ApostCovarianceMatrix") ) {
      PvlKeyword &matrix = pointObject["ApostCovarianceMatrix"];
    // Add the Apriori Covariance Matrix
    if ( pointObject.hasKeyword("AprioriCovarianceMatrix") ) {
      PvlKeyword &matrix = pointObject["AprioriCovarianceMatrix"];

      m_pointData->add_aprioricovar(toDouble(matrix[0]));
      m_pointData->add_aprioricovar(toDouble(matrix[1]));
@@ -306,7 +307,22 @@ namespace Isis {
      m_pointData->add_aprioricovar( aprioriPoint.GetRectangularMatrix()(2, 2) );
    }

    if ( pointObject.hasKeyword("AdjustedSigmaLatitude")
    // Add the Adjusted (Apost) Covariance Matrix
    if ( pointObject.hasKeyword("ApostCovarianceMatrix") ) {
      PvlKeyword &matrix = pointObject["ApostCovarianceMatrix"];

      m_pointData->add_adjustedcovar(toDouble(matrix[0]));
      m_pointData->add_adjustedcovar(toDouble(matrix[1]));
      m_pointData->add_adjustedcovar(toDouble(matrix[2]));
      m_pointData->add_adjustedcovar(toDouble(matrix[3]));
      m_pointData->add_adjustedcovar(toDouble(matrix[4]));
      m_pointData->add_adjustedcovar(toDouble(matrix[5]));

      m_pointData->set_latitudeconstrained(true);
      m_pointData->set_longitudeconstrained(true);
      m_pointData->set_radiusconstrained(true);
    }
    else if ( pointObject.hasKeyword("AdjustedSigmaLatitude")
          || pointObject.hasKeyword("AdjustedSigmaLongitude")
          || pointObject.hasKeyword("AdjustedSigmaRadius") ) {
      // There may be missing or negative adjusted sigmas so default to 10,000
@@ -340,9 +356,9 @@ namespace Isis {
      adjustedPoint.SetRectangular( Displacement(m_pointData->adjustedx(), Displacement::Meters),
                                    Displacement(m_pointData->adjustedy(), Displacement::Meters),
                                    Displacement(m_pointData->adjustedz(), Displacement::Meters) );
      adjustedPoint.SetSphericalSigmasDistance( Distance(sigmaLat, Distance::Meters),
                                                Distance(sigmaLon, Distance::Meters),
                                                Distance(sigmaRad, Distance::Meters) );
     // adjustedPoint.SetSphericalSigmasDistance( Distance(sigmaLat, Distance::Meters),
//                                                Distance(sigmaLon, Distance::Meters),
//                                                Distance(sigmaRad, Distance::Meters) );
      m_pointData->add_adjustedcovar( adjustedPoint.GetRectangularMatrix()(0, 0) );
      m_pointData->add_adjustedcovar( adjustedPoint.GetRectangularMatrix()(0, 1) );
      m_pointData->add_adjustedcovar( adjustedPoint.GetRectangularMatrix()(0, 2) );