COMBIPlus service specifications
Service Description
The Advanced MultiSensor Band Composite (COMBIPlus) service provides an advanced processor to create RGB composites at full resolution from a fully customizable combination of multiple assets from single or multiple EO data products (optical or radar). This processor takes as input a number of bands that may come from different sensors to generate an RGB product. In this RGB combination a set of three sexpressions are employed, one for each color channel of an RGB image.
In computer programming, Sexpressions or symbolic expressions abbreviated as sexprs, are a notation for nested list (treestructured) data, invented for and popularized by the programming language Lisp^{1}.
COMBIPlus makes use of sexpressions defined by the user to manipulate the inputs and map them to a common [0,1] data range. Normalized input EO data are then used in this service to generate the output RGB composition.
Workflow
The processing service applies the workflow below:
Inputs
As in its basic version (COMBI), the COMBIPlus processor requires as inputs the calibrated datasets produced by the optical and SAR calibration processors or the output products with physical meaning from all the other processing services provided those are single band raster in GeoTIFF format. Therefore, inputs of this multimission, multisensor EO data processing service can represent different physical measurements, such as: reflectances, backscatter in db, spectral indexes, interferometric coherence, etc (see list of physical meaning products here.
Thus, the inputs may have different valid ranges:

from 0 to 1 for e.g. reflectances and coherence,

from 1 to 1 for the NDVI spectral index,

from 15 to 5 db for sigma0 in band C and VV polarization,

etc.
Each of them is given by following a dedicated data structure (e.g. unit, data type, scale factor, valid range) with respect to the nature of the product. A complete overview of these values is available in Table 2 of this section.
Parameters
The COMBIPlus service requires a specified number of mandatory and optional parameters. All service parameters are listed in the below Table 1.
Parameter  Description  Required  Default value 

Input product(s) reference(s)  Input dataset(s) or product(s) to be used in the RGB composite  YES  
Red channel expression  Sexpression for red channel  YES  
Green channel expression  Sexpression for green channel  YES  
Blue channel expression  Sexpression for blue channel  YES  
Alpha channel expression  Sexpression for alpha channel to set transparency  NO  
Color operations  Color formula based on Riocolor expressions  NO  
Area of Interest  Area of interest expressed in WKT  NO 
Table 1  Service parameters for the COMBIPlus processor.
Input product reference/s
The first parameter represents the list of input products that are used to create the RGB band combination. The input products can be: optical calibrated products, SAR calibrated products, physical meaning products provided those are single band raster in GeoTIFF format
RGBA sexpressions
The following four required parameters are the sexpressions for red, green, blue and alpha channels which are necessary to normalize different types of inputs that need to be combined into a RGB band composite ans set transparency.
Sexpressions in the ESA Charter Mapper supports arithmetic (* + / ) and logical (< <= == != >= > & ) operators plus some predefined functions.
More information about supported functions can be found in Table 2.
Function  Description  Syntax 

asarray  convert the input (list, tuples, etc.) to an array  (asarray x) 
interp  returns the onedimensional piecewise linear interpolant to a function with given discrete data points (xp, fp), evaluated at x  (interp x xp fp) 
mean  returns the mean value (scalar) from the given input array x  (mean x) 
norm_diff  returns the mormalized difference between A and B as per ((x  y) / (x + y))  (norm_diff x y) 
where  return elements chosen from x or y depending on condition  (where (condition) x y) 
Table 2  Supported functions that can be used in sexpressions.
Interpolate or rescale
The typical sexpression for each channel of an RGBA is the following:
(interp dataset.asset (asarray MIN MAX) (asarray 0 1))
where dataset is the source input calibrated dataset, asset represents the asset to be manipulated in the specific RGBA channel (e.g. a red CBN for TOA reflectance from a calibrated Dataset), MIN and MAX the values that define the valid range to consider.
As an example the following sexpression:
(interp 1.red (asarray 0 10000) (asarray 0 1))
can be used to interpolate the resclaed TOA reflectance into its original [0,1] range. Here (asarray 0 10000)
returns [0, 10000] and is used to specify input range to be used for the interpolation.
Warning
The sexpressions inserted by the user must be given within brackets as shown here:
(interp dataset.asset (asarray MIN MAX) (asarray 0 1))
Other examples of sexpresions which can be used in COMBIPlus are listed in the below sections.
Sum
The following sexpression:
(+ dataset.asset dataset.asset)
can be used to compute the sum of two assets.
Difference
The following sexpression:
( dataset.asset dataset.asset)
can be used to compute the difference of two assets.
Average
The following sexpression:
(/ (+ dataset.asset dataset.asset) 2)
can be used to compute the average between two asset.
Difference from average
The following sexpression:
( dataset.asset (mean dataset.asset))
can be used to compute difference from the average value of a asset.
Normalized difference
The following sexpression:
(norm_diff dataset.asset dataset.asset)
can be used to compute a normalized difference from two assets (e.g. NDVI, NDWI, NDBI, etc.).
Binarization
The following sexpression:
(where (>= dataset.asset value) 1 0)
where dataset is the source input calibrated dataset, asset represents the asset to be used an value is the scalar to be used in the condition.
As an example the sexpression:
(where (>= (norm_diff 1.green 1.nir) 0.3) 1 0)
can be used for binarization. Here (norm_diff 1.green 1.nir)
is used to derive the NDWI index. The value 0.3
represents the threshold as TOA reflectance. Similar sexpressions can be made also for SAR such as:
(where (<= 1.s0_db_c_hh 23) 1 0)
in which 1.s0_db_c_hh
is the asset and the value 23
represents the threshold as Sigma Nought in dB.
Applying sexpression for different input data
The sexpression requires to be tailored to the nature of the input data. Below are listed some examples of typical sexpressions.
As an example, TOA Reflectances are encoded as uint16 with a scaling factor of 0.0001, the sexpression is:
(interp 1.red (asarray 0 10000) (asarray 0 1))
where 1.red is the the single band asset for TOA reflectance with optical CBN=red from the dataset 1.
Concerning sexpressions for Radar images, SAR calibrated datasets in the ESA Charter Mapper are given as Sigma Nought which are expressed in decibels. In handling Sigma Nought values in logarithmic scale, it is often useful to consider only Sigma Nought values within a predefined interval (e.g. minimum and maximum for backscatter values above a certain pixel count threshold). For instance for SAR data in Cband and VV polarization, a valid range in dB of [20, 0] can be assumed. Therefore, the expression becomes:
(interp 1.s0_db_c_vv (asarray 20 0) (asarray 0 1))
where 1.s0_db_c_vv is the single band asset for Sigma Nought in dB in VV polarization.
Example
This sample sexpresion can be extended for other combinations of SARband and polarization. To do so a configuration of multiple valid ranges expressed in dB, already designed for the ESA Charter Mapper, can be found in this table.
Instead, the spectral indexes available in the ESA Charter Mapper are encoded in the ESA Charter Mapper as floats with values between 1 and 1 being normalized differences. As such the expression becomes:
(interp ndvi (asarray 1 1) (asarray 0 1))
where ndvi is the single band asset for the NDVI spectral index.
Color operations (optional)
The three mandatory sexpressions for RGB channels can also be complemented with a color formula. The color formula expression is composed by three parameters: Gamma, Sigmoidal, and Saturation which need to be manually inserted by the user. The color formula syntax is described in this section of the user manual about the TiTiler tool of the Geobrowser.
Tip
For intrasensor RGB composites from optical EO data (e.g. TRC or CIV) the following color formula can be inserted:
Gamma RGB 1.5 Sigmoidal RGB 10 0.3 Saturation 1
Further information can be also found by looking at the application of color formulas in the ESA Charter Mapper which is described here
AOI (optional)
This last parameter (optional) may define the area of interest expressed as a WellKnown Text value.
Tip
In the definition of “Area of interest as Well Known Text” it is possible to apply as AOI the drawn polygon defined with the area filter. To do so, click on the button in the left side of the "Area of interest expressed as Wellknown text" box and select the option AOI from the list. The platform will automatically fill the parameter value with the rectangular bounding box taken the from current search area in WKT format.
Outputs
The primary output product of this service is a full resolution RGBA composite. The service also provides as output the single asset used as input, as well as the red, green, and blue channels as single band GeoTIFF in COG format. Thus, the COMBI processor provides as output the following products as GeoTIFF in Cloud Optimized Geotiff (COG) format:
 Multisensorcomposite as 4 bands RGBA, plus the three singlebands for Red, Green, and blue channels, in Cloud Optimized Geotiff (COG) format,
 N=D*A assets from the number of input datasets (D) and their source assets (A) employed as input in this service (e.g. for color infrared vegetation band combination of a pair of calibrated dataset the service produces a total of six products: 1.nir, 2.nir, 1.green, 2.green, 1.red and 2.red). These N products are given as a single band GeoTIFF in COG format. Such assets represent a physical meaning product (TOA reflectance for optical or sigma0 in dB for SAR data) only in case input references are taken from Calibrated Datasets.
COMBIPlus Product Specifications can be found below.
Attribute  Value / description 

Long Name  Advanced MultiSensor Band Composite Product 
Short Name  overview 
Description  RGBA color composite with a combination of 3 selected singleband assets plus an alpha band that acts as a transparency mask 
Processing level  L1 / L2 (according to input) 
Data Type  UnSigned 8bit Integer 
Band  4 
Format  COG 
Projection  EPSG:4326  WGS84 
Valid Range  [1  255] 
Fill Value  0 
Typical COMBIPlus applications
Expressions for RGB Composites
Intrasensor RGB composites can be derived as following:
 Red channel expression
(interp 1.red (asarray 0 10000) (asarray 0 1))
 Green channel expression
(interp 1.green (asarray 0 10000) (asarray 0 1))
 Blue channel expression
(interp 1.blue (asarray 0 10000) (asarray 0 1))
Params
{
"input_reference": [
""
],
"aoi": "",
"red_expression": "(interp 1.red (asarray 0 10000) (asarray 0 1))",
"green_expression": "(interp 1.green (asarray 0 10000) (asarray 0 1))",
"blue_expression": "(interp 1.blue (asarray 0 10000) (asarray 0 1))",
"alpha_expression": "",
"color_ops": ""
}
 Red channel expression
(interp 1.nir (asarray 0 10000) (asarray 0 1))
 Green channel expression
(interp 1.red (asarray 0 10000) (asarray 0 1))
 Blue channel expression
(interp 1.green (asarray 0 10000) (asarray 0 1))
Params
{
"input_reference": [
""
],
"aoi": "",
"red_expression": "(interp 1.nir (asarray 0 10000) (asarray 0 1))",
"green_expression": "(interp 1.red (asarray 0 10000) (asarray 0 1))",
"blue_expression": "(interp 1.green (asarray 0 10000) (asarray 0 1))",
"alpha_expression": "",
"color_ops": ""
}
 Red channel expression
(interp 1.swir22 (asarray 0 10000) (asarray 0 1))
 Green channel expression
(interp 1.swir16 (asarray 0 10000) (asarray 0 1))
 Blue channel expression
(interp 1.nir (asarray 0 10000) (asarray 0 1))
Params
{
"input_reference": [
""
],
"aoi": "",
"red_expression": "(interp 1.swir22 (asarray 0 10000) (asarray 0 1))",
"green_expression": "(interp 1.swir16 (asarray 0 10000) (asarray 0 1))",
"blue_expression": "(interp 1.nir (asarray 0 10000) (asarray 0 1))",
"alpha_expression": "",
"color_ops": ""
}
The same can be applied by looking at the other RGB combinations in here.
SAR amplitude change
The SARchange RGB composite for a Cband SAR in VV polarization is defined as:
 Red channel expression
(interp 1.s0_db_c_vv (asarray 15 5) (asarray 0 1)
 Green channel expression
(interp 2.s0_db_c_vv (asarray 15 5) (asarray 0 1)
 Blue channel expression
(interp 2.s0_db_c_vv (asarray 15 5) (asarray 0 1)
Where:
1.s0_db_c_vv
is the sigma nought in db for a Cband SAR in VV polarization before the change
2.s0_db_c_vv
is the sigma nought in db for a Cband SAR in VV polarization after the change
Params
{
"input_reference": [
""
],
"red_expression": "(interp 1.s0_db_c_vv (asarray 15 5) (asarray 0 1)",
"green_expression": "(interp 2.s0_db_c_vv (asarray 15 5) (asarray 0 1)",
"blue_expression": "(interp 2.s0_db_c_vv (asarray 15 5) (asarray 0 1)",
"alpha_expression": ""
}
Water mask from Optical Data
A water mask can be derived from calibrated optical data using the following sexpressions:
 Red channel expression
(interp 1.red (asarray 0 10000) (asarray 0 0))
 Green channel expression
(interp 1.red (asarray 0 10000) (asarray 0 0))
 Blue channel expression
(where (>= (norm_diff 1.green 1.nir) 0.3) 1 0)
 Alpha channel expression
(where (>= (norm_diff 1.green 1.nir) 0.3) 1 0)
Params
{
"input_reference": [
""
],
"red_expression": "(interp 1.red (asarray 0 10000) (asarray 0 0))",
"green_expression": "(interp 1.red (asarray 0 10000) (asarray 0 0))",
"blue_expression": "(where (>= (norm_diff 1.green 1.nir) 0.3) 1 0)",
"alpha_expression": "(where (>= (norm_diff 1.green 1.nir) 0.3) 1 0)"
}
Vegetation mask from Optical Data
A vegetation mask can be derived from calibrated optical data using the following sexpressions:
 Red channel expression
(interp 1.nir (asarray 0 10000) (asarray 0 0))
 Green channel expression
(where (>= (norm_diff 1.nir 1.red) 0.3) 1 0)
 Blue channel expression
(interp 1.nir (asarray 0 10000) (asarray 0 0))
 Alpha channel expression
(where (>= (norm_diff 1.nir 1.red) 0.3) 1 0)
Params
{
"input_reference": [
""
],
"red_expression": "(interp 1.nir (asarray 0 10000) (asarray 0 0))",
"green_expression": "(where (>= (norm_diff 1.nir 1.red) 0.3) 1 0)",
"blue_expression": "(interp 1.nir (asarray 0 10000) (asarray 0 0))",
"alpha_expression": "(where (>= (norm_diff 1.nir 1.red) 0.3) 1 0)"
}
Binarization from SAR Data
A water mask can be derived from calibrated SAR data (Cband, HH polarization) via binarization using the following sexpressions:
 Red channel expression
(interp 1.s0_db_c_hh (asarray 23 5) (asarray 0 0))
 Green channel expression
(interp 1.s0_db_c_hh (asarray 23 5) (asarray 0 0))
 Blue channel expression
(where (<= 1.s0_db_c_hh 23) 1 0)
 Alpha channel expression
(where (<= 1.s0_db_c_hh 23) 1 0)
Params
{
"input_reference": [
""
],
"red_expression": "(interp 1.s0_db_c_hh (asarray 23 5) (asarray 0 0))",
"green_expression": "(interp 1.s0_db_c_hh (asarray 23 5) (asarray 0 0))",
"blue_expression": "(where (<= 1.s0_db_c_hh 23) 1 0)",
"alpha_expression": "(where (<= 1.s0_db_c_hh 23) 1 0)"
}

John McCarthy (MIT), Recursive Functions of Symbolic Expressions and Their Computation by Machine. ↩