Isis 3.0 Programmer Reference
Back | Home
ProcessImport.h
Go to the documentation of this file.
1 #ifndef ProcessImport_h
2 #define ProcessImport_h
3 
25 #include <string>
26 
27 #include "Buffer.h"
28 #include "CubeAttribute.h"
29 #include "EndianSwapper.h"
30 #include "JP2Decoder.h"
31 #include "PixelType.h"
32 #include "Process.h"
33 #include "PvlTranslationManager.h"
34 #include "SpecialPixel.h"
35 
36 namespace Isis {
155  class ProcessImport : public Isis::Process {
156  public:
157  enum VAXDataType {
158  VAX_REAL,
159  VAX_INT
160  };
161 
162 
163  enum VAXSpecialPixel {
164  VAX_MIN4,
165  VAX_NULL4,
166  VAX_LRS4,
167  VAX_LIS4,
168  VAX_HIS4,
169  VAX_HRS4
170  };
171 
172  ProcessImport();
173  virtual ~ProcessImport();
174 
175  using Isis::Process::StartProcess; // make parent functions visable
176  virtual void StartProcess();
177  virtual void StartProcess(void funct(Isis::Buffer &out));
178  void SetInputFile(const QString &file);
179  QString InputFile();
180 
181  // SetOutputCube() is not virtual in the Process class, so the following
182  // definitions for this method are the only ones that are allowed for
183  // ProcessImport objects and child objects
184 
185  using Isis::Process::SetOutputCube; // make parent functions visable
186  Isis::Cube *SetOutputCube(const QString &parameter);
187  virtual Isis::Cube *SetOutputCube(const QString &fname,
189 
190  void SetPixelType(const Isis::PixelType type);
196  return p_pixelType;
197  }
198 
199 
200  void SetDimensions(const int ns, const int nl, const int nb);
201 
206  int Samples() {
207  return p_ns;
208  }
209 
210 
215  int Lines() {
216  return p_nl;
217  }
218 
219 
224  int Bands() {
225  return p_nb;
226  }
227 
228 
229  void SetByteOrder(const Isis::ByteOrder order);
230 
236  return p_byteOrder;
237  }
238 
239  bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix);
240  double VAXConversion(void *ibuf);
241  void SetSuffixOffset(int samples,int lines, int coreBands, int itemBytes);
242  void SetSuffixPixelType(const Isis::PixelType type);
243  void SetVAXConvert(const bool vax_convert);
244 
245  void SetFileHeaderBytes(const int bytes);
246  void SetFileTrailerBytes(const int bytes);
247  void SetDataHeaderBytes(const int bytes);
248  void SetDataTrailerBytes(const int bytes);
249  void SetDataPrefixBytes(const int bytes);
250  void SetDataSuffixBytes(const int bytes);
251  void SaveFileHeader();
252  void SaveFileTrailer();
253  void SaveDataHeader();
254  void SaveDataTrailer();
255  void SaveDataPrefix();
256  void SaveDataSuffix();
257 
258  int FileHeaderBytes() const;
259  int FileTrailerBytes() const;
260  int DataHeaderBytes() const;
261  int DataTrailerBytes() const;
262  int DataPrefixBytes() const;
263  int DataSuffixBytes() const;
264 
265  char *FileHeader();
266  char *FileTrailer();
267  std::vector<char *> DataHeader();
268  std::vector<char *> DataTrailer();
269  std::vector<std::vector<char *> > DataPrefix();
270  std::vector<std::vector<char *> > DataSuffix();
271 
276  enum Interleave {
278  JP2,
279  BSQ,
282  BIL,
290  };
291 
292 
294  Interleave Organization() const;
295 
296  void SetBase(const double base);
297  void SetMultiplier(const double mult);
298  void SetBase(const std::vector<double> base);
299  void SetMultiplier(const std::vector<double> mult);
300 
301  void SetSpecialValues(const double null, const double lrs,
302  const double lis, const double hrs,
303  const double his);
304  void SetNull(const double null_min, const double null_max);
305  void SetLRS(const double lrs_min, const double lrs_max);
306  void SetLIS(const double lis_min, const double lis_max);
307  void SetHRS(const double hrs_min, const double hrs_max);
308  void SetHIS(const double his_min, const double his_max);
309 
310  double TestPixel(const double pixel);
311 
312  void ProcessBsq(void funct(Isis::Buffer &out) = NULL);
313  void ProcessBil(void funct(Isis::Buffer &out) = NULL);
314  void ProcessBip(void funct(Isis::Buffer &out) = NULL);
315  void ProcessJp2(void funct(Isis::Buffer &out) = NULL);
316 
317  void CheckPixelRange(QString pixelName, double min, double max);
318 
319 #if 0
320  void AddImportLabel(Isis::Pvl &importLab);
321  void AddLabel(Isis::Pvl &label);
322 #endif
323 
324 
325  private:
326  QString p_inFile;
328 
330  int p_ns;
331  int p_nl;
332  int p_nb;
334 
373  char *p_fileHeader;
374  std::vector<char *>p_dataHeader;
375  std::vector<char *>p_dataTrailer;
376  std::vector<std::vector<char *> >p_dataPre;
377  std::vector<std::vector<char *> >p_dataPost;
379 
380  bool p_vax_convert;
381 
389  std::vector<double> p_base;
393  std::vector<double> p_mult;
398  double p_null_min;
402  double p_null_max;
406  double p_hrs_min;
410  double p_hrs_max;
414  double p_his_min;
418  double p_his_max;
422  double p_lrs_min;
426  double p_lrs_max;
430  double p_lis_min;
434  double p_lis_max;
437  };
438 };
439 #endif
Buffer for reading and writing cube data.
Definition: Buffer.h:68
int p_dataHeaderBytes
Number of bytes of non-image data after the file header and before the image data of each data block...
int FileTrailerBytes() const
This method returns the number of file trailer bytes.
void SaveDataTrailer()
This method marks the data block trailers to be saved.
double TestPixel(const double pixel)
Tests the pixel.
bool p_saveFileTrailer
Flag indicating whether to save the file trailer or not.
virtual ~ProcessImport()
Destroys the Import object.
double p_null_max
The pixel value which is the upper bound of NULL data.
bool p_saveFileHeader
Flag indicating whether to save the file header or not.
std::vector< double > p_mult
An array containing the core multiplier for each band.
void SetFileTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of a file.
std::vector< std::vector< char * > > p_dataPre
The data prefix.
bool p_saveDataPre
Flag indicating whether to save the data prefix or not.
int p_ns
Number of samples.
int p_suffixData
The number of bytes past the file header bytes where the suffix data bands are stored.
int Bands()
Returns the number of bands.
int p_dataPreBytes
Number of bytes of non-image data preceding each data record, such as line prefix data in a band sequ...
bool p_saveDataPost
Flag indicating whether to save the data suffix or not.
void SetDataHeaderBytes(const int bytes)
This method sets the number of bytes in the header of each datablock of a file.
ByteOrder
Tests the current architecture for byte order.
Definition: Endian.h:59
int Samples()
Returns the number of samples.
void ProcessBip(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Pixel.
Interleave Organization() const
Gets the organization of the input cube.
std::vector< char * > p_dataHeader
The data header.
std::vector< char * > DataHeader()
This method returns a pointer to the data header.
bool p_saveDataHeader
Flag indicating whether to save the data header or not.
void SetDataPrefixBytes(const int bytes)
This method sets the number of bytes at the beginning of each data record of a file.
int DataPrefixBytes() const
This method returns the number of data prefix bytes.
double p_his_max
The pixel value which is the upper bound of HIS data.
std::vector< std::vector< char * > > p_dataPost
The data suffix.
std::vector< double > p_base
An array containing the core base for each band.
void SetDataSuffixBytes(const int bytes)
This method sets the number of bytes at the end of each data record of a file.
double p_lis_min
The pixel value which is the lower bound of LIS data.
bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix)
Determines if the VAX encoded pixel value is special or not.
QString InputFile()
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
void SetDimensions(const int ns, const int nl, const int nb)
Sets the physical size of the input cube.
PixelType
Enumerations for Isis Pixel Types.
Definition: PixelType.h:43
std::vector< char * > DataTrailer()
This method returns a pointer to the data trailer.
void ProcessBsq(void funct(Isis::Buffer &out)=NULL)
Process the import data as a band sequential file.
int DataHeaderBytes() const
This method returns the number of data header bytes.
Isis::ByteOrder ByteOrder()
Returns the byte order.
std::vector< char * > p_dataTrailer
The data trailer.
virtual void StartProcess(void funct())
In the base class, this method will invoked a user-specified function exactly one time...
Definition: Process.h:227
Jpeg 2000 Format (always band sequential).
char * p_fileHeader
The file header.
int p_nl
Number of lines.
Isis::PixelType PixelType()
Returns the pixel type.
void CheckPixelRange(QString pixelName, double min, double max)
Checks the special pixel range of the given against all other special pixel value ranges...
void SaveDataSuffix()
This method marks the data suffix to be saved.
void SetHIS(const double his_min, const double his_max)
Sets the range that will be considered Isis::Null.
double p_his_min
The pixel value which is the lower bound of HIS data.
Manipulate and parse attributes of output cube filenames.
double VAXConversion(void *ibuf)
Conversion routine which translates VAX_REAL to IEEE_REAL.
Isis::PixelType p_pixelType
Pixel type of input data.
std::vector< std::vector< char * > > DataPrefix()
This method returns a pointer to the data prefix.
void ProcessBil(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Line.
double p_null_min
The pixel value which is the lower bound of NULL data.
void SaveDataPrefix()
This method marks the data prefix to be saved.
int p_fileHeaderBytes
The number of bytes of non-image data at the beginning of a file.
virtual void StartProcess()
Process the input file and write it to the output.
Isis::Cube * SetOutputCube(const QString &parameter)
Create the output file.
ProcessImport()
Constructs an Import object.
double p_hrs_max
The pixel value which is the upper bound of HRS data.
void SetDataTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of each datablock of a file.
void SetSpecialValues(const double null, const double lrs, const double lis, const double hrs, const double his)
Sets a mapping of input pixel values to output special pixel values.
void SetPixelType(const Isis::PixelType type)
Sets the pixel type of the input file.
Container for cube-like labels.
Definition: Pvl.h:135
void SaveDataHeader()
This method marks the data block headers to be saved.
virtual Isis::Cube * SetOutputCube(const QString &parameter)
Allocates a user-specified output cube whose size matches the first input cube.
Definition: Process.cpp:266
int p_dataTrailerBytes
Number of bytes of non-image data after the image data of each data block, such as band trailer data ...
char * p_fileTrailer
The file trailer.
double p_hrs_min
The pixel value which is the lower bound of HRS data.
void SetOrganization(const ProcessImport::Interleave org)
Sets the organization of the input cube.
Interleave
This enum includes how the document should be read: by BSQ, BIL, BIP, JP2, or InterleaveUndefined.
Band Sequential Format (i.e.
void SaveFileTrailer()
This method marks the file trailer to be saved.
Band Interleaved By Pixel Format (i.e.
int DataSuffixBytes() const
This method returns the number of data duffix bytes.
double p_lrs_min
The pixel value which is the lower bound of LRS data.
void SetLRS(const double lrs_min, const double lrs_max)
Sets the range that will be considered Isis::Null.
QString p_inFile
Input file name.
ProcessImport::Interleave p_organization
The format of the input file.
char * FileHeader()
This method returns a pointer to the file header.
int Lines()
Returns the number of lines.
char * FileTrailer()
This method returns a pointer to the file trailer.
Byte swapper.
void SetMultiplier(const double mult)
Sets the core multiplier of the input cube.
int FileHeaderBytes() const
This method returns the number of file header bytes.
void ProcessJp2(void funct(Isis::Buffer &out)=NULL)
Function to process files containing compressed JPEG2000 data (which is always BSQ but is processed a...
void SetVAXConvert(const bool vax_convert)
Sets the VAX flag of the input cube.
int DataTrailerBytes() const
This method returns the number of data trailer bytes.
Isis::ByteOrder p_byteOrder
Byte order of data.
void SetFileHeaderBytes(const int bytes)
This method sets the number of bytes in the header of a file.
int p_fileTrailerBytes
The number of bytes of non-image data at the end of a file.
void SetLIS(const double lis_min, const double lis_max)
Sets the range that will be considered Isis::Null.
void SetBase(const double base)
Sets the core base of the input cube.
Isis::PixelType p_suffixPixelType
The pixel type of the suffix data.
std::vector< std::vector< char * > > DataSuffix()
This method returns a pointer to the data suffix.
void SetNull(const double null_min, const double null_max)
Sets the range that will be considered Isis::Null.
void SetInputFile(const QString &file)
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
double p_lis_max
The pixel value which is the upper bound of LIS data.
double p_lrs_max
The pixel value which is the upper bound of LRS data.
Base class for all cube processing derivatives.
Definition: Process.h:157
int p_nb
Number of bands.
int p_dataPostBytes
Number of bytes of non-image data following each data record, such as line suffix data in a band sequ...
void SetByteOrder(const Isis::ByteOrder order)
Sets the byte order of the input file.
Band Interleaved By Line Format (i.e.
void SetHRS(const double hrs_min, const double hrs_max)
Sets the range that will be considered Isis::Null.
bool p_saveDataTrailer
Flag indicating whether to save the data trailer or not.
IO Handler for Isis Cubes.
Definition: Cube.h:158
void SaveFileHeader()
This method marks the file header to be saved.

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:26:25