7#include "CameraStatistics.h"
13#include "Statistics.h"
36 init(cam, sinc, linc, filename);
55 init(cam, sinc, linc,
"");
75 init(cam, sinc, linc, filename);
118 int eband = cam->
Bands();
123 int pTotal = eband * ((cam->
Lines() - 2) / linc + 2);
128 for (
int band = 1; band <= eband; band++) {
130 for (
int line = 1; line < (int)cam->
Lines(); line = line + linc) {
131 for (
int sample = 1; sample < cam->
Samples(); sample = sample + sinc) {
143 int line = cam->
Lines();
144 for (
int sample = 1; sample < cam->
Samples(); sample = sample + sinc) {
281 double value, QString unit=
"")
const {
283 if(IsSpecial(value)) {
284 return (PvlKeyword(keyname,
"NULL"));
287 return (PvlKeyword(keyname,
toString(value), unit));
369 PvlGroup pUser(
"UserParameters");
374 PvlGroup pLat(
"Latitude");
380 PvlGroup pLon(
"Longitude");
386 PvlGroup pObliqueSampleRes(
"ObliqueSampleResolution");
393 pObliqueSampleRes +=
constructKeyword(
"ObliqueSampleResolutionStandardDeviation",
396 PvlGroup pObliqueLineRes(
"ObliqueLineResolution");
403 pObliqueLineRes +=
constructKeyword(
"ObliqueLineResolutionStandardDeviation",
406 PvlGroup pObliqueResolution(
"ObliqueResolution");
413 pObliqueResolution +=
constructKeyword(
"ObliqueResolutionStandardDeviation",
417 PvlGroup pSampleRes(
"SampleResolution");
427 PvlGroup pLineRes(
"LineResolution");
437 PvlGroup pResolution(
"Resolution");
445 m_resStat->StandardDeviation(),
"meters/pixel");
447 PvlGroup pAspectRatio(
"AspectRatio");
455 PvlGroup pPhase(
"PhaseAngle");
461 PvlGroup pEmission(
"EmissionAngle");
468 PvlGroup pIncidence(
"IncidenceAngle");
475 PvlGroup pTime(
"LocalSolarTime");
485 PvlGroup pLocalRadius(
"LocalRadius");
492 PvlGroup pNorthAzimuth(
"NorthAzimuth");
500 returnPvl.setTerminator(
"");
501 returnPvl.addGroup(pUser);
502 returnPvl.addGroup(pLat);
503 returnPvl.addGroup(pLon);
504 returnPvl.addGroup(pSampleRes);
505 returnPvl.addGroup(pLineRes);
506 returnPvl.addGroup(pResolution);
508 returnPvl.addGroup(pObliqueSampleRes);
509 returnPvl.addGroup(pObliqueLineRes);
510 returnPvl.addGroup(pObliqueResolution);
512 returnPvl.addGroup(pAspectRatio);
513 returnPvl.addGroup(pPhase);
514 returnPvl.addGroup(pEmission);
515 returnPvl.addGroup(pIncidence);
516 returnPvl.addGroup(pTime);
517 returnPvl.addGroup(pLocalRadius);
518 returnPvl.addGroup(pNorthAzimuth);
double NorthAzimuth()
Returns the North Azimuth.
virtual double SampleResolution()
Returns the sample resolution at the current position in meters.
virtual double ObliquePixelResolution(bool useLocal=true)
Returns the oblique pixel resolution at the current position in meters/pixel.
int Lines() const
Returns the number of lines in the image.
virtual double PixelResolution()
Returns the pixel resolution at the current position in meters/pixel.
virtual bool SetImage(const double sample, const double line)
Sets the sample/line values of the image to get the lat/lon values.
virtual double LineResolution()
Returns the line resolution at the current position in meters.
virtual double ObliqueLineResolution(bool useLocal=true)
Returns the oblique line resolution at the current position in meters.
virtual bool IsBandIndependent()
Virtual method that checks if the band is independent.
virtual double ObliqueSampleResolution(bool useLocal=true)
Returns the oblique sample resolution at the current position in m.
int Samples() const
Returns the number of samples in the image.
virtual void SetBand(const int band)
Virtual method that sets the band number.
int Bands() const
Returns the number of bands in the image.
void init(Camera *cam, int sinc, int linc, QString filename)
Initializes this collection of statistics by incrementing over sample/line positions in the Camera an...
Statistics * m_lonStat
Universal longitude statistics.
Statistics * m_lineResStat
Line resolution statistics.
Statistics * m_obliqueResStat
Oblique pixel resolution statistics.
Statistics * m_aspectRatioStat
Aspect ratio statistics.
Statistics * m_obliqueLineResStat
Oblique line resolution statistics.
Statistics * m_sampleResStat
Sample resolution statistics.
CameraStatistics(QString filename, int sinc, int linc)
Constructs the Camera Statistics object from a Cube filename.
Statistics * m_phaseStat
Phase angle statistics.
Pvl toPvl() const
Constructs a Pvl object from the values in the various statistics objects.
Statistics * m_obliqueSampleResStat
Oblique sample resolution statistics.
Statistics * m_localSolarTimeStat
Local solar time statistics.
Statistics * m_resStat
Pixel resolution statistics.
int m_sinc
Sample increment for composing statistics.
int m_linc
Line increment for composing statistics.
virtual ~CameraStatistics()
Destroy this instance, deletes all the Statistics objects.
void addStats(Camera *cam, int &sample, int &line)
Add statistics data to Statistics objects if the Camera position given by the provided line and sampl...
PvlKeyword constructKeyword(QString keyname, double value, QString unit) const
Takes a name, value, and optionally units and constructs a PVL Keyword.
Statistics * m_northAzimuthStat
North azimuth statistics.
Statistics * m_localRaduisStat
Local radius statistics (in meters).
Statistics * m_emissionStat
Emission angle statistics.
Statistics * m_incidenceStat
Incidence angle statistics.
QString m_filename
FileName of the Cube the Camera was derived from.
Statistics * m_latStat
Universal latitude statistics.
IO Handler for Isis Cubes.
Camera * camera()
Return a camera associated with the cube.
void open(const QString &cfile, QString access="r")
This method will try to open a file as either a cube or geotiff in either read or read/write.
double meters() const
Get the distance in meters.
Program progress reporter.
void SetMaximumSteps(const int steps)
This sets the maximum number of steps in the process.
void CheckStatus()
Checks and updates the status.
double LocalSolarTime()
Return the local solar time in hours.
virtual double UniversalLatitude() const
Returns the planetocentric latitude, in degrees, at the surface intersection point in the body fixed ...
bool HasSurfaceIntersection() const
Returns if the last call to either SetLookDirection or SetUniversalGround had a valid intersection wi...
virtual double PhaseAngle() const
Returns the phase angle in degrees.
virtual double IncidenceAngle() const
Returns the incidence angle in degrees.
virtual double UniversalLongitude() const
Returns the positive east, 0-360 domain longitude, in degrees, at the surface intersection point in t...
Distance LocalRadius() const
Returns the local radius at the intersection point.
virtual double EmissionAngle() const
Returns the emission angle in degrees.
This class is used to accumulate statistics on double arrays.
This is free and unencumbered software released into the public domain.
QString toString(const LinearAlgebra::Vector &vector, int precision)
A global function to format LinearAlgebra::Vector as a QString with the given precision.