USGS

Isis 3.0 Developer's Reference (API)

Home

ControlNetValidMeasure.h

Go to the documentation of this file.
00001 #ifndef _ControlNetValidMeasure_h_
00002 #define _ControlNetValidMeasure_h_
00003 
00004 #include "CubeManager.h"
00005 #include "IString.h"
00006 #include "Pvl.h"
00007 #include "PvlGroup.h"
00008 #include "Progress.h"
00009 #include "SerialNumberList.h"
00010 
00034 namespace Isis {
00035   class Camera;
00036   class Cube;
00037   class ControlNet;
00038   class MeasureValidationResults;
00039   class ControlMeasure;
00040 
00077   class ControlNetValidMeasure {
00078     public:
00079       ControlNetValidMeasure(Pvl *pvl = 0);
00080       ControlNetValidMeasure(Pvl &pvl);
00081 
00083       void InitStdOptions(void);         
00084       
00086       void InitStdOptionsGroup(void);    
00087 
00088       virtual ~ControlNetValidMeasure();
00089 
00091       void Parse(Pvl &pvlDef);
00092 
00094       virtual Pvl &GetLogPvl(void) {
00095         return mPvlLog;
00096       };
00097 
00099       virtual void FindCnetRef(ControlNet &pNewNet) {};
00100 
00102       bool ValidEmissionAngle(double pdEmissionAngle);
00103       
00105       bool ValidIncidenceAngle(double pdIncidenceAngle);
00106       
00108       bool ValidDnValue(double pdDnValue);
00109       
00111       bool ValidResolution(double pdResolution);
00112       
00114       bool ValidResidualTolerances(double pdSampleResidual, double pdLineResidual, 
00115                      double pdResidualMagnitude, MeasureValidationResults & pResults);
00116 
00117       bool ValidShiftTolerances(double sampleShift, double lineShift,
00118           double pixelShift, MeasureValidationResults &results);
00119       
00121       bool ValidLatLon(Isis::Camera *pCamera, int piSample, int piLine); 
00122 
00124       PvlGroup &GetStdOptions(void) {
00125         return mStdOptionsGrp;
00126       };
00127 
00129       PvlGroup &GetStatistics(void) {
00130         return mStatisticsGrp;
00131       };
00132 
00134       double GetMinDN(void) {
00135         return mdMinDN;
00136       };
00137 
00139       double GetMaxDN(void) {
00140         return mdMaxDN;
00141       };
00142 
00144       double GetMinEmissionAngle(void) {
00145         return mdMinEmissionAngle;
00146       };
00147 
00149       double GetMaxEmissionAngle(void) {
00150         return mdMaxEmissionAngle;
00151       };
00152 
00154       double GetMinIncidenceAngle(void) {
00155         return mdMinIncidenceAngle;
00156       };
00157 
00159       double GetMaxIncidenceAngle(void) {
00160         return mdMaxIncidenceAngle;
00161       };
00162 
00164       double GetPixelsFromEdge(void) {
00165         return miPixelsFromEdge;
00166       };
00167 
00169       double GetMetersFromEdge(void) {
00170         return mdMetersFromEdge;
00171       };
00172 
00174       QString LocationString(double pdSample, double pdLine) const {
00175         return toString((int)pdSample) + "," + toString((int)pdLine);
00176       };
00177 
00179       bool PixelsFromEdge(int piSample, int piLine, Cube *pCube);
00180 
00182       bool MetersFromEdge(int piSample, int piLine, Cube *pCube);
00183 
00185       MeasureValidationResults ValidStandardOptions(const ControlMeasure *pMeasure,
00186           Cube *pCube, PvlGroup *pMeasureGrp = NULL);
00187 
00189       MeasureValidationResults ValidStandardOptions(const ControlMeasure *pMeasure,
00190           Cube *pCube, Camera *camera, PvlGroup *pMeasureGrp = NULL);
00191       
00193       MeasureValidationResults ValidStandardOptions(double pSample, double pLine, 
00194           const ControlMeasure *pMeasure, Cube *pCube, PvlGroup *pMeasureGrp = NULL);
00195 
00196       MeasureValidationResults ValidStandardOptions(double pSample, double pLine, 
00197           const ControlMeasure *pMeasure, Cube *pCube, Camera *measureCamera,
00198           PvlGroup *pMeasureGrp = NULL);
00199       
00201       MeasureValidationResults ValidStandardOptions(double pSample, double pLine, 
00202                                           Cube *pCube, PvlGroup *pMeasureGrp = NULL);
00203 
00204       bool IsCubeRequired() {
00205         return IsCameraRequired() || mbValidateDN || mbValidateFromEdge;
00206       }
00207 
00215       bool IsCameraRequired() {
00216         return mbCameraRequired;
00217       }
00218 
00219     protected:
00221       void ValidatePvlDN(void);
00222       
00224       void ValidatePvlEmissionAngle(void);
00225       
00227       void ValidatePvlIncidenceAngle(void);
00228       
00230       void ValidatePvlResolution(void);
00231       
00233       void ValidatePvlFromEdge(void);
00234       
00236       void ValidatePvlResidualTolerances(void);
00237 
00238       void ValidatePvlShiftTolerances();
00239       
00241       void ReadSerialNumbers(QString psSerialNumfile);
00242       
00252       void SetCameraRequiredFlag(bool pbFlag){
00253         mbCameraRequired = pbFlag;
00254       }
00255       
00256       double mdMinDN;                  
00257       double mdMaxDN;                  
00258       double mdMinResolution;          
00259       double mdMaxResolution;          
00260       double mdMinEmissionAngle;       
00261       double mdMaxEmissionAngle;       
00262       double mdMinIncidenceAngle;      
00263       double mdMaxIncidenceAngle;      
00264       double mdMetersFromEdge;         
00265       int miPixelsFromEdge;            
00266       double mdSampleResTolerance;     
00267       double mdLineResTolerance;       
00268       double mdResidualTolerance;      
00269 
00270       double m_sampleShiftTolerance;   
00271       double m_lineShiftTolerance;     
00272       double m_pixelShiftTolerance;    
00273 
00274       double mdEmissionAngle;          
00275       double mdIncidenceAngle;         
00276       double mdResolution;             
00277       double mdDnValue;                
00278       double mdSampleResidual;         
00279       double mdLineResidual;           
00280       double mdResidualMagnitude;      
00281 
00282       double m_sampleShift;            
00283       double m_lineShift;              
00284       double m_pixelShift;             
00285 
00286       PvlGroup mPvlOpGrp;              
00287       PvlGroup mStdOptionsGrp;         
00288       PvlGroup mStatisticsGrp;         
00289       Pvl mPvlLog;                     
00290       Progress mStatus;                
00291       CubeManager mCubeMgr;            
00292       SerialNumberList mSerialNumbers; 
00293 
00294       bool mbCameraRequired;           
00295 
00296       bool mbValidateDN;               
00297       bool mbValidateFromEdge;         
00298   };
00299 };
00300 #endif
00301