Isis Developer Reference
ProcessImport.h
Go to the documentation of this file.
1#ifndef ProcessImport_h
2#define ProcessImport_h
8/* SPDX-License-Identifier: CC0-1.0 */
9#include <string>
10
11#include "Buffer.h"
12#include "CubeAttribute.h"
13#include "EndianSwapper.h"
14#include "JP2Decoder.h"
15#include "PixelType.h"
16#include "Process.h"
18#include "SpecialPixel.h"
19#include "UserInterface.h"
20
21namespace Isis {
156 public:
161
162
171
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 Isis::Cube *SetOutputCube(const QString &parameter, UserInterface &ui);
188 virtual Isis::Cube *SetOutputCube(const QString &fname,
190
192 void SetPixelType(const Isis::PixelType type);
198 return p_pixelType;
199 }
200
201
202 void SetDimensions(const int ns, const int nl, const int nb);
203
208 int Samples() {
209 return p_ns;
210 }
211
212
217 int Lines() {
218 return p_nl;
219 }
220
221
226 int Bands() {
227 return p_nb;
228 }
229
230
231 void SetByteOrder(const Isis::ByteOrder order);
232
238 return p_byteOrder;
239 }
240
241 bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix);
242 double VAXConversion(void *ibuf);
243 void SetSuffixOffset(int samples,int lines, int coreBands, int itemBytes);
244 void SetSuffixPixelType(const Isis::PixelType type);
245 void SetVAXConvert(const bool vax_convert);
246
247 void SetFileHeaderBytes(const int bytes);
248 void SetFileTrailerBytes(const int bytes);
249 void SetDataHeaderBytes(const int bytes);
250 void SetDataTrailerBytes(const int bytes);
251 void SetDataPrefixBytes(const int bytes);
252 void SetDataSuffixBytes(const int bytes);
253 void SaveFileHeader();
254 void SaveFileTrailer();
255 void SaveDataHeader();
256 void SaveDataTrailer();
257 void SaveDataPrefix();
258 void SaveDataSuffix();
259
260 int FileHeaderBytes() const;
261 int FileTrailerBytes() const;
262 int DataHeaderBytes() const;
263 int DataTrailerBytes() const;
264 int DataPrefixBytes() const;
265 int DataSuffixBytes() const;
266
267 char *FileHeader();
268 char *FileTrailer();
269 std::vector<char *> DataHeader();
270 std::vector<char *> DataTrailer();
271 std::vector<std::vector<char *> > DataPrefix();
272 std::vector<std::vector<char *> > DataSuffix();
273
293
294
296 Interleave Organization() const;
297
298 void SetBase(const double base);
299 void SetMultiplier(const double mult);
300 void SetBase(const std::vector<double> base);
301 void SetMultiplier(const std::vector<double> mult);
302
303 void SetSpecialValues(const double null, const double lrs,
304 const double lis, const double hrs,
305 const double his);
306 void SetNull(const double null_min, const double null_max);
307 void SetLRS(const double lrs_min, const double lrs_max);
308 void SetLIS(const double lis_min, const double lis_max);
309 void SetHRS(const double hrs_min, const double hrs_max);
310 void SetHIS(const double his_min, const double his_max);
311
312 double TestPixel(const double pixel);
313
314 void ProcessBsq(void funct(Isis::Buffer &out) = NULL);
315 void ProcessBil(void funct(Isis::Buffer &out) = NULL);
316 void ProcessBip(void funct(Isis::Buffer &out) = NULL);
317 void ProcessJp2(void funct(Isis::Buffer &out) = NULL);
318
319 void CheckPixelRange(QString pixelName, double min, double max);
320
321#if 0
322 void AddImportLabel(Isis::Pvl &importLab);
323 void AddLabel(Isis::Pvl &label);
324#endif
325
326
327 private:
328 QString p_inFile;
329 Isis::PixelType p_pixelType;
330
331 Isis::PixelType p_suffixPixelType;
332 int p_ns;
333 int p_nl;
334 int p_nb;
335 Isis::ByteOrder p_byteOrder;
336
337 int p_suffixData;
341 int p_fileHeaderBytes;
345 int p_fileTrailerBytes;
349 int p_dataHeaderBytes;
353 int p_dataTrailerBytes;
357 int p_dataPreBytes;
360 int p_dataPostBytes;
363 bool p_saveFileHeader;
365 bool p_saveDataHeader;
367 bool p_saveDataTrailer;
369 bool p_saveDataPre;
371 bool p_saveDataPost;
373 bool p_saveFileTrailer;
375 char *p_fileHeader;
376 std::vector<char *>p_dataHeader;
377 std::vector<char *>p_dataTrailer;
378 std::vector<std::vector<char *> >p_dataPre;
379 std::vector<std::vector<char *> >p_dataPost;
380 char *p_fileTrailer;
381
382 bool p_vax_convert;
383
384 ProcessImport::Interleave p_organization;
391 std::vector<double> p_base;
395 std::vector<double> p_mult;
400 double p_null_min;
404 double p_null_max;
408 double p_hrs_min;
412 double p_hrs_max;
416 double p_his_min;
420 double p_his_max;
424 double p_lrs_min;
428 double p_lrs_max;
432 double p_lis_min;
436 double p_lis_max;
439 };
440};
441#endif
Buffer for reading and writing cube data.
Definition Buffer.h:53
Manipulate and parse attributes of output cube filenames.
Definition CubeAttribute.h:473
IO Handler for Isis Cubes.
Definition Cube.h:168
Base class for all cube processing derivatives.
Definition Process.h:143
virtual void StartProcess(void funct())
In the base class, this method will invoked a user-specified function exactly one time.
Definition Process.h:213
virtual Isis::Cube * SetOutputCube(const QString &parameter)
Allocates a user-specified output cube whose size matches the first input cube.
Definition Process.cpp:163
Byte swapper.
Definition ProcessImport.h:155
void SetVAXConvert(const bool vax_convert)
Sets the VAX flag of the input cube.
Definition ProcessImport.cpp:919
virtual void StartProcess()
Process the input file and write it to the output.
Definition ProcessImport.cpp:1302
void SetPixelType(const Isis::PixelType type)
Sets the pixel type of the input file.
Definition ProcessImport.cpp:264
void SetFileHeaderBytes(const int bytes)
This method sets the number of bytes in the header of a file.
Definition ProcessImport.cpp:349
Isis::PixelType PixelType()
Returns the pixel type.
Definition ProcessImport.h:197
std::vector< char * > DataTrailer()
This method returns a pointer to the data trailer.
Definition ProcessImport.cpp:835
ProcessImport()
Constructs an Import object.
Definition ProcessImport.cpp:37
void SaveDataPrefix()
This method marks the data prefix to be saved.
Definition ProcessImport.cpp:645
void SaveDataTrailer()
This method marks the data block trailers to be saved.
Definition ProcessImport.cpp:617
int FileHeaderBytes() const
This method returns the number of file header bytes.
Definition ProcessImport.cpp:688
void SetOrganization(const ProcessImport::Interleave org)
Sets the organization of the input cube.
Definition ProcessImport.cpp:907
char * FileTrailer()
This method returns a pointer to the file trailer.
Definition ProcessImport.cpp:779
void SetDataPrefixBytes(const int bytes)
This method sets the number of bytes at the beginning of each data record of a file.
Definition ProcessImport.cpp:473
int DataTrailerBytes() const
This method returns the number of data trailer bytes.
Definition ProcessImport.cpp:713
void SetLIS(const double lis_min, const double lis_max)
Sets the range that will be considered Isis::Null.
Definition ProcessImport.cpp:1048
void SetSuffixOffset(int samples, int lines, int coreBands, int itemBytes)
Definition ProcessImport.cpp:419
void SetHRS(const double hrs_min, const double hrs_max)
Sets the range that will be considered Isis::Null.
Definition ProcessImport.cpp:1065
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.
Definition ProcessImport.cpp:993
void SetNull(const double null_min, const double null_max)
Sets the range that will be considered Isis::Null.
Definition ProcessImport.cpp:1014
void SetInputFile(const QString &file)
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
Definition ProcessImport.cpp:2302
void SetMultiplier(const double mult)
Sets the core multiplier of the input cube.
Definition ProcessImport.cpp:959
void SetDataHeaderBytes(const int bytes)
This method sets the number of bytes in the header of each datablock of a file.
Definition ProcessImport.cpp:408
void ProcessBip(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Pixel.
Definition ProcessImport.cpp:1871
Isis::Cube * SetOutputCube(const QString &parameter)
Create the output file.
Definition ProcessImport.cpp:1261
void SaveFileTrailer()
This method marks the file trailer to be saved.
Definition ProcessImport.cpp:559
int FileTrailerBytes() const
This method returns the number of file trailer bytes.
Definition ProcessImport.cpp:697
void CheckPixelRange(QString pixelName, double min, double max)
Checks the special pixel range of the given against all other special pixel value ranges,...
Definition ProcessImport.cpp:1098
Isis::ByteOrder ByteOrder()
Returns the byte order.
Definition ProcessImport.h:237
int Lines()
Returns the number of lines.
Definition ProcessImport.h:217
VAXDataType
Definition ProcessImport.h:157
@ VAX_INT
Definition ProcessImport.h:159
@ VAX_REAL
Definition ProcessImport.h:158
void ProcessJp2(void funct(Isis::Buffer &out)=NULL)
Function to process files containing compressed JPEG2000 data (which is always BSQ but is processed a...
Definition ProcessImport.cpp:2123
void SetLRS(const double lrs_min, const double lrs_max)
Sets the range that will be considered Isis::Null.
Definition ProcessImport.cpp:1031
int DataPrefixBytes() const
This method returns the number of data prefix bytes.
Definition ProcessImport.cpp:721
Interleave Organization() const
Gets the organization of the input cube.
Definition ProcessImport.cpp:928
double VAXConversion(void *ibuf)
Conversion routine which translates VAX_REAL to IEEE_REAL.
Definition ProcessImport.cpp:171
void SetFileTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of a file.
Definition ProcessImport.cpp:379
int Samples()
Returns the number of samples.
Definition ProcessImport.h:208
void SetDataTrailerBytes(const int bytes)
This method sets the number of bytes in the trailer of each datablock of a file.
Definition ProcessImport.cpp:443
std::vector< std::vector< char * > > DataSuffix()
This method returns a pointer to the data suffix.
Definition ProcessImport.cpp:891
QString InputFile()
Sets the name of the input file to be read in the import StartProcess method and verifies its existan...
Definition ProcessImport.cpp:2319
int DataSuffixBytes() const
This method returns the number of data duffix bytes.
Definition ProcessImport.cpp:729
void SaveDataHeader()
This method marks the data block headers to be saved.
Definition ProcessImport.cpp:588
void SetByteOrder(const Isis::ByteOrder order)
Sets the byte order of the input file.
Definition ProcessImport.cpp:324
void ProcessBil(void funct(Isis::Buffer &out)=NULL)
Function to process files stored as Band Interleaved by Line.
Definition ProcessImport.cpp:1626
virtual ~ProcessImport()
Destroys the Import object.
Definition ProcessImport.cpp:78
std::vector< std::vector< char * > > DataPrefix()
This method returns a pointer to the data prefix.
Definition ProcessImport.cpp:863
void ProcessBsq(void funct(Isis::Buffer &out)=NULL)
Process the import data as a band sequential file.
Definition ProcessImport.cpp:1363
void SetHIS(const double his_min, const double his_max)
Sets the range that will be considered Isis::Null.
Definition ProcessImport.cpp:1082
Interleave
This enum includes how the document should be read: by BSQ, BIL, BIP, JP2, or InterleaveUndefined.
Definition ProcessImport.h:278
@ InterleaveUndefined
Undefined.
Definition ProcessImport.h:279
@ BIL
Band Interleaved By Line Format (i.e.
Definition ProcessImport.h:284
@ BIP
Band Interleaved By Pixel Format (i.e.
Definition ProcessImport.h:288
@ JP2
Jpeg 2000 Format (always band sequential).
Definition ProcessImport.h:280
@ BSQ
Band Sequential Format (i.e.
Definition ProcessImport.h:281
std::vector< char * > DataHeader()
This method returns a pointer to the data header.
Definition ProcessImport.cpp:807
void SetDataSuffixBytes(const int bytes)
This method sets the number of bytes at the end of each data record of a file.
Definition ProcessImport.cpp:503
char * FileHeader()
This method returns a pointer to the file header.
Definition ProcessImport.cpp:753
void SetBase(const double base)
Sets the core base of the input cube.
Definition ProcessImport.cpp:938
double TestPixel(const double pixel)
Tests the pixel.
Definition ProcessImport.cpp:1167
void SetSuffixPixelType(const Isis::PixelType type)
Definition ProcessImport.cpp:278
int Bands()
Returns the number of bands.
Definition ProcessImport.h:226
void SetAttributes(CubeAttributeOutput &att)
Given a CubeAttributeOutput object, set min/max to propagate if propagating min/max attributes was re...
Definition ProcessImport.cpp:1198
void SaveFileHeader()
This method marks the file header to be saved.
Definition ProcessImport.cpp:532
void SaveDataSuffix()
This method marks the data suffix to be saved.
Definition ProcessImport.cpp:674
void SetDimensions(const int ns, const int nl, const int nb)
Sets the physical size of the input cube.
Definition ProcessImport.cpp:304
VAXSpecialPixel
Definition ProcessImport.h:163
@ VAX_NULL4
Definition ProcessImport.h:165
@ VAX_LRS4
Definition ProcessImport.h:166
@ VAX_HRS4
Definition ProcessImport.h:169
@ VAX_HIS4
Definition ProcessImport.h:168
@ VAX_MIN4
Definition ProcessImport.h:164
@ VAX_LIS4
Definition ProcessImport.h:167
int DataHeaderBytes() const
This method returns the number of data header bytes.
Definition ProcessImport.cpp:705
bool IsVAXSpecial(unsigned int *vax, VAXSpecialPixel pix)
Determines if the VAX encoded pixel value is special or not.
Definition ProcessImport.cpp:118
Container for cube-like labels.
Definition Pvl.h:119
Command Line and Xml loader, validation, and access.
Definition UserInterface.h:139
ByteOrder
Tests the current architecture for byte order.
Definition Endian.h:42
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
PixelType
Enumerations for Isis Pixel Types.
Definition PixelType.h:27