BandMaths Operator

BandMaths Operator Description

Overview

Name:BandMaths
Full name:org.esa.snap.core.gpf.common.BandMathsOp
Purpose:Create a product with one or more bands using mathematical expressions.
Version:1.1

Description

This band maths operator can be used to create a product with multiple bands based on mathematical expression.
All products specified as source must have the same width and height, otherwise the operator will fail. The geo-coding information and metadata for the target product is taken from the first source product.

To reference a band of one of the source products within an expression use the following syntax:

$sourceProduct.#.bandName

Where # means the index of the source product. The index is zero based.
The bands of the first source product ($sourceProduct.0) can be referenced without this product identifier. The band name is sufficient.

When using this operator from the command-line Graph XML file must be provided in order to specify all parameters. Here is some sample XML of how to use a BandMaths node within a graph:

      <node id="bandMathsNode">
        <operator>BandMaths</operator>
        <sources>
            <sourceProducts>readNode</sourceProducts>
        </sources>
        <parameters>
            <targetBands>
                <targetBand>
                    <name>reflec_13</name>
                    <expression>radiance_13 / (PI * SOLAR_FLUX_13)</expression>
                    <description>TOA reflectance in channel 13</description>
                    <type>float32</type>
                    <validExpression>reflec_13 >= 0</validExpression>
                    <noDataValue>-999</noDataValue>
                    <spectralBandIndex>13</spectralBandIndex>
                </targetBand>
                <targetBand>
                    <name>reflec_14</name>
                    <expression>radiance_14 / (PI * SOLAR_FLUX_14)</expression>
                    <description>TOA reflectance in channel 14</description>
                    <type>float32</type>
                    <validExpression>reflec_14 >= 0</validExpression>
                    <noDataValue>-999</noDataValue>
                    <spectralBandIndex>14</spectralBandIndex>
                </targetBand>
            </targetBands>
            <variables>
                <variable>
                    <name>SOLAR_FLUX_13</name>
                    <type>float32</type>
                    <value>914.18945</value>
                </variable>
                <variable>
                    <name>SOLAR_FLUX_14</name>
                    <type>float32</type>
                    <value>882.8275</value>
                </variable>
                 <variable>
                    <name>PI</name>
                    <type>double</type>
                    <value>3.1415</value>
                </variable>
            </variables>
        </parameters>
    </node>
 

Changes from version 1.0 to 1.1:

  1. Added setter and getter methods for parameters
  2. Changed type of BandDescriptor.noDataValue from String to Double
  3. Deprecated API method 'createBooleanExpressionBand'

Sources

Name Description
sourceProducts Any number of source products.

Parameters

Name Data Type Default Description Constraints
targetBands BandDescriptor[] List of descriptors defining the target bands.
variables Variable[] List of variables which can be used within the expressions.