Isis 2 Documentation
cubestack Documentation
cubestack - Stacks two input cube files in the LINE dimension
CUBESTACK takes two standard input cube files and stacks them, one on
top the other, in the LINE dimension. CUBESTACK will only deal with
standard cube files (Note that BIP (Band Interleaved by Pixel) storage
order is not supported by CUBESTACK).
Since CUBESTACK merges two separate files into a single output file,
there are many possibilities that can make this type of merge rather
complex. To minimize some of the complexity, some decisions and
restrictions have been placed on the merge operation. The file
specified in the FROM1 parameter will be referred to henceforth as the
primary input file; the FROM2 file is the secondary input file. The
creation of the output cube file will be governed first by the state of
the primary input file. The following guidelines describe how the
output cube file is created:
1) The storage order of the output cube will be the same as the
primary input cube.
2) The output cube core will be determined as follows:
a) The number of elements in the SAMPLE axis will be the maximum
of the two input cube SAMPLE axis dimensions. If the
dimensions are not the same, then the file that has the smaller
dimension will result in padding of NULLs in the output file at
the end of each line to meet the size of the other file.
b) The number of elements in the LINE dimension is the sum of the
LINE axis dimensions of the two input cubes. The primary input
file will be placed at the "top" of the stack. The secondary
input file will be appended to the primary input file at the
"bottom" of the stack.
c) The number of bands in the BAND axis will be the number of
bands selected by the subcube specification of the primary
input file. Note that the bands of the input files are
correlated by the original band values stored in the
BAND_BIN_ORIGINAL_BAND keyword in the BAND_BIN group. Should
the secondary input file not contain (or the subcube specifier
not select) an original band selected in the primary input cube
file, then NULLs are substituted in the core where the
secondary band is to be placed in the output cube file. Bands
selected in the secondary input file that do not have an
original band also selected in the primary input file are
IGNORED and NOT propagated to the output file.
3) Sideplane and bottomplane suffixes are NOT propagated to the output
file. However, backplanes are propagated to the output file
subject to the following guidelines:
a) All backplanes selected by the input subcube specifier in the
primary input file will always be propagated to the output
file.
b) Backplanes in the secondary input file that share common names
and parameter values with backplanes in the primary input file
are stacked in the same fashion as the core. Should the
parameters in the backplane of the secondary input file that
share a common name with a backplane in the primary input file
differ in any way, then the secondary input backplane will be
NULLed and placed in the stack as is with the core.
c) All backplanes in the primary and secondary input files that do
not share common names will be propagated to the output cube
file. The input file that does not contain the backplane will
be NULLed and placed in the appropriate place in the stack.
d) The order of the backplanes in the output cube will be the same
as the order encountered in the primary input file with all
uncommon backplanes from the secondary input file appended to
the backplane suffix also in the order in which they are
encountered.
4) Processing of the HISTORY object is controlled by the user. See
the HOPT parameter.
5) All other objects that exist in the primary input file are
propagated to the output cube file. Those that exist in the
secondary input file are ignored.
CUBESTACK allows the user to select the desired output pixel data type
with the OTYPE parameter. If the default value OTYPE=0 is used, then
the output file pixel type will be the same as the primary input file.
The user can select a specific output file pixel type by specifying a
non-zero value for OTYPE. If the output pixel type is not floating
point, then the ORANGE parameter specifies the range of values that
can be represented in the output file. If the default value ORANGE=
(0.0,0.0) is used, then the range of values that can be represented in
the output file will be the same as in the primary input file. If the
primary input file is floating point format and the output file is not
floating point format, then a specific range must be specified for
ORANGE because the range of values in the primary input file is not
known.
It is sometimes desirable to stack two cubes that contain different
ranges of values. For example, one cube might contain normalized values
in the range 0.0 to 1.0 and the other cube might contain un-normalized
values that cover a much larger range. It this situation it might be
desirable to apply a linear scaling to one or both input files so that
the core data in the two parts of the output file contain the same
range of values. This will make it easier to compare the two parts of
the stacked cube when it is displayed. In general, RANGE1 and RANGE2
specify the ranges of input file values that are to be scaled into the
range of output file values specified by ORANGE. Thus, ORANGE serves
two purposes: it specifies the range of values that can be represented
in the output file (if the output file is not floating point), and it
specifies the output range of values into which the input values are
scaled. Input values that lie outside the ranges specified by RANGE1
and RANGE2 are converted into the special high or low representation
saturation values. (If the output file is floating point format, then
the scaling does not result in any valid input values being converted
into saturation values since all valid input values can be represented
in floating point format after scaling.) The following describes the
various combinations of input/output pixel types and range
specifications in more detail:
1) If the input and output file pixel types are the SAME then:
a) If the pixel type is not 3 (floating point) and a range for the
input file is specified, but no range for the output file was
specified, then the input range is scaled into the entire
representable range of the output file, which is the same as the
representable range of the primary input file.
If no input range is specified but an output range was
specified, then the entire representable range of the input file
is scaled to the range specified for the output file.
If no ranges are supplied for both the input and output cube
file, the output cube file range is the same as the primary
input file and the entire representable range of the input file
is scaled to the entire representable range of the output file.
b) For pixel type 3 (floating point), a rescaling occurs only when
a range is specified for both the input and output cube files.
If only one or neither of the ranges is specified, then this
amounts to a direct copy of data from the input file to the
output file. A single specified range is ignored in this case.
2) If the input pixel type DIFFERS from the output pixel type, then
you can be assured that at least one scaling/conversion will be
performed, whether explicitly or implicitly.
a) If the input pixel type is 3 (floating point) and a range is
specified for the input file, then the range specified for the
input file is scaled to the entire representable range of the
output file, which is specified by ORANGE.
b) If the output pixel type is 3 (floating point) and a range is
specified for the output cube file and a range is specified for
the input cube file, then the specified input range is scaled
to the range of the output file.
c) For all other cases, conversion can be performed exactly to
user input specifications. If a range is not specified for the
output cube file, then the representable range of the output
file will be the same as the primary input cube file. If no
range is specified for both the input and output cube files,
then the entire representable range of the input file is scaled
to the entire representable range of the output file. If a
range is specified for the input file, then this range is
scaled to the entire representable range of the output cube
file. If a range is specified for the output file but not the
input file, then the entire representable range of the input
file is scaled to the range specified for the output file.
PROGRAMMER: Kris Becker, USGS, Flagstaff, Az.
| Parm | Description | Default |
|---|---|---|
| FROM1 | Primary input cube file name (default extension is .CUB) | NONE |
| SFROM1 | Primary input subcube specifier | " " |
| FROM2 | Secondary input cube file name (default extension is .CUB) | NONE |
| SFROM2 | Secondary input subcube specifier | " " |
| TO | Output cube file name (default extension is .CUB) | NONE |
| RANGE1 | Specifies data range of primary input file | 0.0,0.0 |
| RANGE2 | Specifies data range of secondary input file | 0.0,0.0 |
| OTYPE | Output pixel type | 0 |
| ORANGE | Output minimum and maximum data range | 0.0,0.0 |
| HOPT | History propagation option
1 - propagated primary history
object only
2 - merge history from both
input files
3 - no history from either
input file
|
ADDITIONAL NOTES:
| Parm | Description |
|---|---|
| FROM1 | The primary input cube file. This file governs many aspects of how the output file is created. The output core dimension of the BAND axis is the number selected by the input subcube specifier for this input file. It also dictates the order of the stack (primary on top), the output cube storage order and the order of backplanes in the BAND suffix. Also all other objects that exist in this file are propagated to this file. Example: dev:[dir]primary |
| SFROM1 | The primary input subcube specifier. Allows the user to select a subarea of the input cube for processing. The default " " selects the entire cube. |
| FROM2 | The secondary input cube file. Bands from this cube are placed at the bottom of the stack in the cube. Only the original bands selected in this file that also exist in the primary input file specification will be propagated to the output file. Example: dev:[dir]secondary |
| SFROM2 | The secondary input subcube specifier. Allows the user to select a subarea of the input cube for processing. The default " " selects the entire cube. |
| TO | The output cube file created by CUBESTACK. Will be the same storage order and number of bands as the primary input file. All common backplanes and uncommon backplanes from this file are propagated to the output file. Example: dev:[dir]output |
| RANGE1 | This parameter allows the user to select a specific data range from the primary input cube. If the default is used, then the entire range will be preserved in the output cube file. Note that some rescaling may be performed, whether it be implied or explicit (determined by pixel type of the output file and ORANGE). |
| RANGE2 | This parameter allows the user to select a specific data range from the secondary input cube. If the default is used, then the entire range will be preserved in the output cube file. Note that some rescaling may be performed, whether it be implied or explicit (determined by pixel type of the primary input file and the output file and ORANGE). |
| OTYPE | The output pixel type. This parameter allows the user to specify the output pixel type. The default of 0 will result in the same pixel type as the primary input file. |
| ORANGE | This parameter allows the user to select the range of values that can be represented in the output file. (This is not applicable for floating point format.) For all output pixel data types (including floating point), this parameter also specifies the output range of values into which the input ranges of values are scaled. |
| HOPT | This parameter allows the user to specify how the history object is to be handled for the file merger. HOPT=1 instructs CUBESTACK to simply propagate the processing history from the primary input cube. HOPT=2 will result in a merging of the primary and secondary processing histories. HOPT=3 will not propagate history from either input file. For all options, the history entry for the current run will be inserted into the history object of the output file. |
| USERNOTE | Comment from the user. This will be recorded in the ISIS session log file and also in the History entry that is put into the History object of the output file. |
Contact us online at the Isis Support Center: http://isisdist.wr.usgs.gov