Binning Operator |

# Binning Operator Description

## Overview

Name: | `Binning`
Full name: | `org.esa.snap.binning.operator.BinningOp`
Purpose: | Performs spatial and temporal aggregation of pixel values into cells ('bins') of a planetary grid
Version: | 1.0

## Description

An operator that is used to perform spatial and temporal aggregations into "bin" cells for any number of source product. The output is either a file comprising the resulting bins or a reprojected "map" of the bin cells represented by a usual data product.

Unlike most other operators, that can compute single {@link Tile tiles}, the binning operator processes all of its source products in its {@link #initialize()} method.

## Sources

Name | Description
--- | ---
`sourceProducts` | The source products to be binned. Must be all of the same structure. If not given, the parameter 'sourceProductPaths' must be provided.

## Parameters

Name | Data Type | Default | Description | Constraints
--- | --- | --- | --- | ---
`sourceProductPaths` | `String[]` | `` | A comma-separated list of file paths specifying the source products. Each path may contain the wildcards '**' (matches recursively any directory), '*' (matches any character sequence in path names) and '?' (matches any single character). |
`sourceProductFormat` | `String` | `` | The common product format of all source products. This parameter is optional and may be used in conjunction with parameter 'sourceProductPaths'. Can be set if multiple reader are available for the source files and a specific one shall be used.Try "NetCDF-CF", "GeoTIFF", "BEAM-DIMAP", or "ENVISAT", etc. |
`sourceGraphPaths` | `String[]` | `` | A comma-separated list of file paths specifying the source graphs. Each path may contain the wildcards '**' (matches recursively any directory), '*' (matches any character sequence in path names) and '?' (matches any single character). |
`region` | `Geometry` | `` | The considered geographical region as a geometry in well-known text format (WKT). If not given, the geographical region will be computed according to the extents of the input products. |
`startDateTime` | `String` | `` | The UTC start date of the binning period. The format is either 'yyyy-MM-dd HH:mm:ss' or 'yyyy-MM-dd'. If only the date part is given, the time 00:00:00 is assumed. | pattern: \d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?
`periodDuration` | `Double` | `` | Duration of the binning period in days. |
`timeFilterMethod` | `TimeFilterMethod` | `NONE` | The method that is used to decide which source pixels are used with respect to their observation time. 'NONE': ignore pixel observation time, use all source pixels. 'TIME_RANGE': use all pixels that have been acquired in the given binning period. 'SPATIOTEMPORAL_DATA_DAY': use a sensor-dependent, spatial "data-day" definition with the goal to minimise the time between the first and last observation contributing to the same bin in the given binning period. The decision, whether a source pixel contributes to a bin or not, is a function of the pixel's observation longitude and time. Requires the parameter 'minDataHour'. |
`minDataHour` | `Double` | `` | A sensor-dependent constant given in hours of a day (0 to 24) at which a sensor has a minimum number of observations at the date line (the 180 degree meridian). Only used if parameter 'dataDayMode' is set to 'SPATIOTEMPORAL_DATADAY'. This is usually the equator crossing time (ECT) | interval: [0,24]
`numRows` | `int` | `2160` | Number of rows in the (global) planetary grid. Must be even. |
`superSampling` | `Integer` | `1` | The square of the number of pixels used for super-sampling an input pixel into multiple sub-pixels |
`maxDistanceOnEarth` | `Integer` | `-1` | Skips binning of sub-pixel if distance on earth to the center of the main-pixel is larger as this value. A value <=0 disables this check |
`maskExpr` | `String` | `` | The band maths expression used to filter input pixels |
`variables` | `VariableConfig[]` | `` | List of variables. A variable will generate a virtual band in each source data product, so that it can be used as input for the binning. |
`aggregators` | `AggregatorConfig[]` | `` | List of aggregators. Aggregators generate the bands in the binned output products |
`postProcessor` | `CellProcessorConfig` | `` |  |
`outputType` | `String` | `Product` |  | value set: [Product, RGB, Grey]
`outputFile` | `String` | `` |  |
`outputFormat` | `String` | `BEAM-DIMAP` |  |
`outputBands` | `BandConfiguration[]` | `` | Configures the target bands. Not needed if output type 'Product' is chosen. |
`productCustomizer` | `ProductCustomizerConfig` | `` |  |
`outputBinnedData` | `boolean` | `false` | If true, a SeaDAS-style, binned data NetCDF file is written in addition to the target product. The output file name will be <target>-bins.nc |
`outputMappedProduct` | `boolean` | `true` | If true, a mapped product is written. Set this to 'false' if only a binned product is needed. |
`metadataPropertiesFile` | `File` | `./metadata.properties` | The name of the file containing metadata key-value pairs (google "Java Properties file format"). |
`metadataTemplateDir` | `File` | `.` | The name of the directory containing metadata templates (google "Apache Velocity VTL format"). |
`metadataAggregatorName` | `String` | `NAME` | The type of metadata aggregation to be used. Possible values are: 'NAME': aggregate the name of each input product 'FIRST_HISTORY': aggregates all input product names and the processing history of the first product 'ALL_HISTORIES': aggregates all input product names and processing histories |
`planetaryGridClass` | `String` | `org.esa.snap.binning.support.SEAGrid` |  |