35 #include <geos/geom/MultiPolygon.h> 106 Chip(
const int samples,
const int lines);
109 void SetSize(
const int samples,
const int lines);
116 return m_chipSamples;
142 void SetValue(
int sample,
int line,
const double &value) {
143 m_buf[line-1][sample-1] = value;
162 return m_buf[line-1][sample-1];
179 inline double GetValue(
int sample,
int line)
const {
180 return m_buf[line-1][sample-1];
183 void TackCube(
const double cubeSample,
const double cubeLine);
207 void Load(
Cube &cube,
const double rotation = 0.0,
const double scale = 1.0,
210 const double scale = 1.0,
const int band = 1);
211 void Load(
Cube &cube,
const Affine &affine,
const bool &keepPoly =
true,
257 double value =
GetValue(sample, line);
258 if (value < m_validMinimum)
return false;
259 if (value > m_validMaximum)
return false;
271 bool IsValid(
double percentage);
272 Chip Extract(
int samples,
int lines,
int samp,
int line);
276 void Write(
const QString &filename);
309 delete m_clipPolygon;
326 return m_readInterpolator;
343 m_readInterpolator = type;
347 QString msg =
"Invalid Interpolator type. Cannot use [";
348 msg +=
toString(type) +
"] to read cube into chip.";
353 void Init(
const int samples,
const int lines);
354 void Read(
Cube &cube,
const int band);
355 std::vector<int> MovePoints(
int startSamp,
int startLine,
356 int endSamp,
int endLine);
357 bool PointsColinear(
double x0,
double y0,
358 double x1,
double y1,
359 double x2,
double y2,
364 std::vector< std::vector<double> > m_buf;
368 double m_cubeTackSample;
369 double m_cubeTackLine;
371 double m_validMinimum;
372 double m_validMaximum;
379 geos::geom::MultiPolygon *m_clipPolygon;
void SetChipPosition(const double sample, const double line)
Compute the position of the cube given a chip coordinate.
Definition: Chip.cpp:665
void SetValidRange(const double minimum=Isis::ValidMinimum, const double maximum=Isis::ValidMaximum)
Set the valid range of data in the chip.
Definition: Chip.cpp:703
void SetCubePosition(const double sample, const double line)
Compute the position of the chip given a cube coordinate.
Definition: Chip.cpp:682
virtual ~Chip()
Destroys the Chip object.
Definition: Chip.cpp:110
interpType
The interpolator type, including: None, Nearest Neighbor, BiLinear or Cubic Convultion.
Definition: Interpolator.h:57
const double ValidMinimum
The minimum valid double value for Isis pixels.
Definition: SpecialPixel.h:102
double GetValue(int sample, int line) const
Get a value from a Chip.
Definition: Chip.h:179
const Affine & GetTransform() const
Returns the Affine transformation of chip-to-cube indices.
Definition: Chip.h:291
A small chip of data used for pattern matching.
Definition: Chip.h:102
Definition: Interpolator.h:59
bool IsInsideChip(double sample, double line)
Definition: Chip.cpp:184
void TackCube(const double cubeSample, const double cubeLine)
This sets which cube position will be located at the chip tack position.
Definition: Chip.cpp:204
void SetTransform(const Affine &affine, const bool &keepPoly=true)
Sets the internal Affine transform to new translation.
Definition: Chip.h:306
void SetReadInterpolator(const Interpolator::interpType type)
Sets Interpolator Type for loading a chip.
Definition: Chip.h:339
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Definition: IString.cpp:226
This error is for when a programmer made an API call that was illegal.
Definition: IException.h:162
Chip Extract(int samples, int lines, int samp, int line)
Extract a sub-chip from a chip.
Definition: Chip.cpp:749
This class is used to accumulate statistics on double arrays.
Definition: Statistics.h:107
int Lines() const
Definition: Chip.h:122
Isis::Statistics * Statistics()
Returns a statistics object of the current data in the chip.
Definition: Chip.cpp:931
QString FileName() const
Definition: Chip.h:129
Affine basis function.
Definition: Affine.h:80
bool IsValid(int sample, int line)
Definition: Chip.h:256
void Write(const QString &filename)
Writes the contents of the Chip to a cube.
Definition: Chip.cpp:1007
#define _FILEINFO_
Macro for the filename and line number.
Definition: IException.h:40
double CubeLine() const
Definition: Chip.h:226
Interpolator::interpType GetReadInterpolator()
Access method that returns the Interpolator Type used for loading a chip.
Definition: Chip.h:325
double CubeSample() const
Definition: Chip.h:219
int TackSample() const
This method returns a chip's fixed tack sample; the middle of the chip.
Definition: Chip.h:192
void SetAllValues(const double &d)
Single value assignment operator.
Definition: Chip.cpp:122
double ChipLine() const
Definition: Chip.h:242
void SetSize(const int samples, const int lines)
Change the size of the Chip.
Definition: Chip.cpp:156
void Load(Cube &cube, const double rotation=0.0, const double scale=1.0, const int band=1)
Load cube data into the Chip.
Definition: Chip.cpp:225
Chip()
Constructs a Chip.
Definition: Chip.cpp:57
void SetClipPolygon(const geos::geom::MultiPolygon &clipPolygon)
Sets the clipping polygon for this chip.
Definition: Chip.cpp:1030
void SetValue(int sample, int line, const double &value)
Sets a value in the chip.
Definition: Chip.h:142
const double ValidMaximum
The maximum valid double value for Isis pixels.
Definition: SpecialPixel.h:137
Definition: Interpolator.h:60
int Samples() const
Definition: Chip.h:115
Isis exception class.
Definition: IException.h:107
Definition: Interpolator.h:61
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31
double ChipSample() const
Definition: Chip.h:235
Chip & operator=(const Chip &other)
Copy assignment operator.
Definition: Chip.cpp:1043
double GetValue(int sample, int line)
Loads a Chip with a value.
Definition: Chip.h:161
int TackLine() const
This method returns a chip's fixed tack line; the middle of the chip.
Definition: Chip.h:203
IO Handler for Isis Cubes.
Definition: Cube.h:170