From fba8810cef073518256f656d15a3fe210c9a17db Mon Sep 17 00:00:00 2001 From: Tyler Wilson Date: Fri, 26 Aug 2016 00:26:42 +0000 Subject: [PATCH] Added statistics objects for updated approximation to Line/Sample/Pixel/Detector resolutions in the Camera class. References #476 git-svn-id: http://subversion.wr.usgs.gov/repos/prog/isis3/trunk@7067 41f8697f-d340-4b68-9986-7bafba869bb8 --- .../CameraStatistics/CameraStatistics.cpp | 74 ++++++++++++++++++- .../objs/CameraStatistics/CameraStatistics.h | 50 ++++++++++++- .../CameraStatistics/CameraStatistics.truth | 18 +++++ 3 files changed, 138 insertions(+), 4 deletions(-) diff --git a/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp b/isis/src/base/objs/CameraStatistics/CameraStatistics.cpp index dfc288eccf..a99a427cde 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,25 @@ 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 +235,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()); @@ -219,7 +253,7 @@ namespace Isis { m_localRaduisStat->AddData(cam->LocalRadius().meters()); // if IsValid m_northAzimuthStat->AddData(cam->NorthAzimuth()); - + // if resolution not equal to -1.0 double aspectRatio = cam->LineResolution() / cam->SampleResolution(); m_aspectRatioStat->AddData(aspectRatio); @@ -253,7 +287,7 @@ namespace Isis { /** * Constructs a Pvl object from the values in the various statistics objects. * The general format will look as follows: - * + * * @code * Group = User Parameters * Filename (not provided for constructor w/ Camera but not filename) @@ -344,6 +378,37 @@ 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"); @@ -433,6 +498,11 @@ 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 fb540d2d1a..12ff7f53d2 100644 --- a/isis/src/base/objs/CameraStatistics/CameraStatistics.h +++ b/isis/src/base/objs/CameraStatistics/CameraStatistics.h @@ -49,9 +49,11 @@ 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 { public: CameraStatistics(QString filename, int sinc, int linc); @@ -87,6 +89,7 @@ namespace Isis { }; + /** * Accessor method for inspecting the statistics gathered on the * Pixel Resolutions of the input Camera. @@ -98,6 +101,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 +244,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. @@ -220,3 +265,4 @@ namespace Isis { }; #endif + diff --git a/isis/src/base/objs/CameraStatistics/CameraStatistics.truth b/isis/src/base/objs/CameraStatistics/CameraStatistics.truth index ac0d219fca..4136247568 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 -- GitLab