diff --git a/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp b/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp index dfc288eccf25406c9bda4fef3da978d572ebca27..e2402a977b2cbae52895ff4e4a38ec66174608ef 100644 --- a/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp +++ b/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp @@ -93,6 +93,13 @@ namespace Isis { m_latStat = new Statistics(); m_lonStat = new Statistics(); m_resStat = new Statistics(); + + + m_obliqueResStat = new Statistics(); + m_obliqueSampleResStat = new Statistics(); + m_obliqueLineResStat = new Statistics(); + + m_sampleResStat = new Statistics(); m_lineResStat = new Statistics(); m_aspectRatioStat = new Statistics(); @@ -157,6 +164,28 @@ namespace Isis { delete m_resStat; m_resStat = NULL; } + + + if (m_obliqueLineResStat != NULL) { + delete m_obliqueLineResStat; + m_obliqueLineResStat = NULL; + + } + + if (m_obliqueSampleResStat != NULL) { + delete m_obliqueSampleResStat; + m_obliqueSampleResStat = NULL; + + } + + if (m_obliqueResStat != NULL) { + delete m_obliqueResStat; + m_obliqueResStat = NULL; + } + + + + if (m_sampleResStat != NULL) { delete m_sampleResStat; m_sampleResStat = NULL; @@ -209,6 +238,14 @@ namespace Isis { if(cam->HasSurfaceIntersection()) { m_latStat->AddData(cam->UniversalLatitude()); m_lonStat->AddData(cam->UniversalLongitude()); + + + m_obliqueResStat->AddData(cam->ObliquePixelResolution()); + m_obliqueSampleResStat->AddData(cam->ObliqueSampleResolution()); + m_obliqueLineResStat->AddData(cam->ObliqueLineResolution()); + + + m_resStat->AddData(cam->PixelResolution()); m_sampleResStat->AddData(cam->SampleResolution()); m_lineResStat->AddData(cam->LineResolution()); @@ -344,6 +381,56 @@ namespace Isis { pLon += constructKeyword("LongitudeAverage", m_lonStat->Average()); pLon += constructKeyword("LongitudeStandardDeviation", m_lonStat->StandardDeviation()); + + + + + + + + PvlGroup pObliqueSampleRes("ObliqueSampleResolution"); + pObliqueSampleRes += constructKeyword("ObliqueSampleResolutionMinimum", + m_obliqueSampleResStat->Minimum(), "meters/pixel"); + pObliqueSampleRes += constructKeyword("ObliqueSampleResolutionMaximum", + m_obliqueSampleResStat->Maximum(),"meters/pixel"); + pObliqueSampleRes += constructKeyword("ObliqueSampleResolutionAverage", + m_obliqueSampleResStat->Average(),"meters/pixel"); + pObliqueSampleRes += constructKeyword("ObliqueSampleResolutionStandardDeviation", + m_obliqueSampleResStat->StandardDeviation(), "meters/pixel"); + + PvlGroup pObliqueLineRes("ObliqueLineResolution"); + pObliqueLineRes += constructKeyword("ObliqueLineResolutionMinimum", m_obliqueLineResStat->Minimum(), + "meters/pixel"); + pObliqueLineRes += constructKeyword("ObliqueLineResolutionMaximum", m_obliqueLineResStat->Maximum(), + "meters/pixel"); + pObliqueLineRes += constructKeyword("ObliqueLineResolutionAverage", m_obliqueLineResStat->Average(), + "meters/pixel"); + pObliqueLineRes += constructKeyword("ObliqueLineResolutionStandardDeviation", + m_obliqueLineResStat->StandardDeviation(), "meters/pixel"); + + PvlGroup pObliqueResolution("ObliqueResolution"); + pObliqueResolution += constructKeyword("ObliqueResolutionMinimum", m_obliqueResStat->Minimum(), + "meters/pixel"); + pObliqueResolution += constructKeyword("ObliqueResolutionMaximum", m_obliqueResStat->Maximum(), + "meters/pixel"); + pObliqueResolution += constructKeyword("ObliqueResolutionAverage", m_obliqueResStat->Average(), + "meters/pixel"); + pObliqueResolution += constructKeyword("ObliqueResolutionStandardDeviation", + m_obliqueResStat->StandardDeviation(), "meters/pixel"); + + + + + + + + + + + + + + PvlGroup pSampleRes("SampleResolution"); pSampleRes += constructKeyword("SampleResolutionMinimum", m_sampleResStat->Minimum(), "meters/pixel"); @@ -374,6 +461,18 @@ namespace Isis { pResolution += constructKeyword("ResolutionStandardDeviation", m_resStat->StandardDeviation(), "meters/pixel"); + + + + + + + + + + + + PvlGroup pAspectRatio("AspectRatio"); pAspectRatio += constructKeyword("AspectRatioMinimum", m_aspectRatioStat->Minimum()); pAspectRatio += constructKeyword("AspectRatioMaximun", m_aspectRatioStat->Maximum()); @@ -433,6 +532,14 @@ namespace Isis { returnPvl.addGroup(pSampleRes); returnPvl.addGroup(pLineRes); returnPvl.addGroup(pResolution); + + returnPvl.addGroup(pObliqueSampleRes); + returnPvl.addGroup(pObliqueLineRes); + returnPvl.addGroup(pObliqueResolution); + + + + returnPvl.addGroup(pAspectRatio); returnPvl.addGroup(pPhase); returnPvl.addGroup(pEmission); diff --git a/isis/src/base/objs/CameraStatistics/CameraStatistics.h b/isis/src/base/objs/CameraStatistics/CameraStatistics.h index fb540d2d1aa76655202b1e6d72a95bb827c5fe9c..2cbc47048c4b79d9a134f09bac275967f4c78a9f 100644 --- a/isis/src/base/objs/CameraStatistics/CameraStatistics.h +++ b/isis/src/base/objs/CameraStatistics/CameraStatistics.h @@ -49,7 +49,10 @@ namespace Isis { * * @internal * @history 2011-06-14 Travis Addair - Extracted logic from "camstats" - * application to create this class. + * application to create this class. + * @history 2016-08-17 Tyler Wilson - Added Statistics objects for + * ObliquePixelResolution,ObliqueSampleResolution, and + * ObliqueLineResolution. References #476, #4100. */ class CameraStatistics { @@ -87,6 +90,7 @@ namespace Isis { }; + /** * Accessor method for inspecting the statistics gathered on the * Pixel Resolutions of the input Camera. @@ -98,6 +102,41 @@ namespace Isis { }; + + /** + * Accessor method for inspecting the statistics gathered on the + * oblique pixel resolutions of the input Camera. + * + * @return Statistics * Constant pointer to oblique pixel resolution statistics + */ + const Statistics * getObliqueResStat() const { + return m_obliqueResStat; + }; + + /** + * Accessor method for inspecting the statistics gathered on the + * oblique sample resolutions of the input Camera. + * + * @return Statistics * Constant pointer to oblique sample resolution statistics + */ + const Statistics * getObliqueSampleResStat() const { + return m_obliqueSampleResStat; + }; + + + + /** + * Accessor method for inspecting the statistics gathered on the + * oblique line resolution of the input Camera. + * + * @return Statistics * Constant pointer to oblique line resolution statistics + */ + const Statistics * getObliqueLineResStat() const { + return m_obliqueLineResStat; + }; + + + /** * Accessor method for inspecting the statistics gathered on the * Sample Resolutions of the input Camera. @@ -206,6 +245,13 @@ namespace Isis { Statistics *m_latStat; //!< Universal latitude statistics. Statistics *m_lonStat; //!< Universal longitude statistics. + + + + Statistics *m_obliqueResStat; //!< Oblique pixel resolution statistics. + Statistics *m_obliqueSampleResStat; //!< Oblique sample resolution statistics. + Statistics *m_obliqueLineResStat; //!< Oblique line resolution statistics. + Statistics *m_resStat; //!< Pixel resolution statistics. Statistics *m_sampleResStat; //!< Sample resolution statistics. Statistics *m_lineResStat; //!< Line resolution statistics. diff --git a/isis/src/base/objs/CameraStatistics/CameraStatistics.truth b/isis/src/base/objs/CameraStatistics/CameraStatistics.truth index ac0d219fcab6b0cefc30dbf31c51d63f6b300b7d..413624756888abfbca8b5e9e06cce57a2e1113a5 100644 --- a/isis/src/base/objs/CameraStatistics/CameraStatistics.truth +++ b/isis/src/base/objs/CameraStatistics/CameraStatistics.truth @@ -36,6 +36,24 @@ Resolution: ResolutionAverage = 245.015 ResolutionStandardDeviation = 0.181039 +ObliqueSampleResolution: + ObliqueSampleResolutionMinimum = 244.735 + ObliqueSampleResolutionMaximum = 246.319 + ObliqueSampleResolutionAverage = 245.205 + ObliqueSampleResolutionStandardDeviation = 0.304432 + +ObliqueLineResolution: + ObliqueLineResolutionMinimum = 244.735 + ObliqueLineResolutionMaximum = 246.319 + ObliqueLineResolutionAverage = 245.205 + ObliqueLineResolutionStandardDeviation = 0.304432 + +ObliqueResolution: + ObliqueResolutionMinimum = 244.735 + ObliqueResolutionMaximum = 246.319 + ObliqueResolutionAverage = 245.205 + ObliqueResolutionStandardDeviation = 0.304432 + AspectRatio: AspectRatioMinimum = 1 AspectRatioMaximun = 1