TemporalPercentile Operator |

# TemporalPercentile Operator Description

## Overview

Name: | `TemporalPercentile`
Full name: | `org.esa.snap.statistics.percentile.interpolated.TemporalPercentileOp`
Purpose: | Computes percentiles over a given time period.
Version: | 1.0

## Description

An operator that is used to compute percentiles over a given time period. Products with different observation times serve as computation base. All the input products are sorted chronologically and grouped per day. For each day inside the given time period, a collocated mean band from the grouped products is computed. By this means, a intermediate time series product is created successively.

This time series product is used to create time series' per pixel. Days with missing values or with values that have been masked out using the valid pixel expression will cause gaps in a time series. To improve the percentile calculation results, such gaps can be filled. Three gap filling strategies are available.

- gap filling by linear interpolation
- gap filling by spline interpolation
- gap filling by quadratic interpolation

Based on these time series', for each percentile a band is written to the target product. In these bands, each pixel holds the threshold of the respective percentile.

## Sources

Name | Description
--- | ---
`sourceProducts` | Using this parameter is discouraged. For performance reasons use sourceProductPaths instead

## Parameters

Name | Data Type | Default | Description | Constraints
--- | --- | --- | --- | ---
`sourceProductPaths` | `String[]` | `` | A comma-separated list of file paths specifying the source products. Source products to be considered for percentile computation. Each path may contain the wildcards '**' (matches recursively any directory), '*' (matches any character sequence in path names) and '?' (matches any single character). If, for example, all NetCDF files under /eodata/ shall be considered, use '/eodata/**/*.nc'. |
`startDate` | `UTC` | `` | The start date. If not given, it is taken from the 'oldest' source product. Products that have a start date earlier than the start date given by this parameter are not considered. | format: yyyy-MM-dd HH:mm:ss
`endDate` | `UTC` | `` | The end date. If not given, it is taken from the 'newest' source product. Products that have an end date later than the end date given by this parameter are not considered. | format: yyyy-MM-dd HH:mm:ss
`keepIntermediateTimeSeriesProduct` | `boolean` | `true` | Determines whether the time series product which is created during computation should be written to disk. |
`timeSeriesOutputDir` | `File` | `` | The output directory for the intermediate time series product. If not given, the time series product will be written to the working directory. |
`crs` | `String` | `EPSG:4326` | A text specifying the target Coordinate Reference System, either in WKT or as an authority code. For appropriate EPSG authority codes see (www.epsg-registry.org). AUTO authority can be used with code 42001 (UTM), and 42002 (Transverse Mercator) where the scene center is used as reference. Examples: EPSG:4326, AUTO:42001 |
`resampling` | `String` | `Nearest` | The method used for resampling of floating-point raster data, if source products must be reprojected to the target CRS. | value set: [Nearest, Bilinear, Bicubic]
`westBound` | `double` | `-15.0` | The most-western longitude. All values west of this longitude will not be considered. | interval: [-180,180]
`northBound` | `double` | `75.0` | The most-northern latitude. All values north of this latitude will not be considered. | interval: [-90,90]
`eastBound` | `double` | `30.0` | The most-eastern longitude. All values east of this longitude will not be considered. | interval: [-180,180]
`southBound` | `double` | `35.0` | The most-southern latitude. All values south of this latitude will not be considered. | interval: [-90,90]
`pixelSizeX` | `double` | `0.05` | Size of a pixel in X-direction in map units. |
`pixelSizeY` | `double` | `0.05` | Size of a pixel in Y-direction in map units. |
`sourceBandName` | `String` | `` | The name of the band in the source products. Either this or 'bandMathsExpression' must be provided. |
`bandMathsExpression` | `String` | `` | A band maths expression serving as input band. Either this or 'sourceBandName' must be provided. |
`percentileBandNamePrefix` | `String` | `` | If given, this is the percentile band name prefix. If empty, the resulting percentile band’s name prefix will be either the 'sourceBandName' or created from the 'bandMathsExpression'. |
`validPixelExpression` | `String` | `true` | The valid pixel expression serving as criterion for whether to consider pixels for computation. |
`percentiles` | `int[]` | `90` | The percentiles. |
`gapFillingMethod` | `String` | `gapFillingLinearInterpolation` | The gap filling method for percentile calculation. | value set: [noGapFilling, gapFillingLinearInterpolation, gapFillingSplineInterpolation, gapFillingQuadraticInterpolation]
`startValueFallback` | `Double` | `0.0` | The fallback value for the start of a pixel time series. It will be considered if there is no valid value at the pixel of the oldest collocated mean band. This would be the case, if, e.g., there is a cloudy day at the time period start. |
`endValueFallback` | `Double` | `0.0` | The fallback value for the end of a pixel time series. It will be considered ifthere is no valid value at the pixel of the newest collocated mean band. This would be the case, if, e.g., there is a cloudy day at the time period end. |