Utilities
Visualizers
Visualizers are JavaScript classes with a method process which evaluates the representation value for a pixel from pixel’s band values.
ColorMapVisualizer
Sets the color from a discrete color map.
Parameters
valColPairs
Array<[number, number]>
Examples
const map = [
[200, 0xff0000],
[300, 0x0000ff],
];
const visualizer = new ColorMapVisualizer(map);
visualizer.process(199); // returns [ 1, 0, 0 ]
visualizer.process(200); // returns [ 1, 0, 0 ]
visualizer.process(250); // returns [ 1, 0, 0 ]
visualizer.process(299); // returns [ 1, 0, 0 ]
visualizer.process(300); // returns [ 0, 0, 1 ]
process
Returns interpolated color for value.
Parameters
val
[number];
Returns [[number], [number], [number]] normalized RGB triplet.
createDefaultColorMap
Creates ColorMapVisualizer
with following valColPairs
[
[-1.0, 0x000000],
[-0.2, 0xff0000],
[-0.1, 0x9a0000],
[0.0, 0x660000],
[0.1, 0xffff33],
[0.2, 0xcccc33],
[0.3, 0x666600],
[0.4, 0x33ffff],
[0.5, 0x33cccc],
[0.6, 0x006666],
[0.7, 0x33ff33],
[0.8, 0x33cc33],
[0.9, 0x006600],
];
ColorRampVisualizer
Provides a way to map values to colors. This is done by defining a number of values and colors, with values between the defined input values mapping to their interpolated colors, respectively. Colors may be defined as hex color codes or a normalized (between 0 and 1) array representing RGB.
Parameters
ramps
;minVal
[number] Optional override of the minimum value inramps
. Other values will be adjusted linearly.maxVal
[number] Optional override of the maximum value inramps
. Other values will be adjusted linearly.
Examples
const ramps = [
[200, 0xff0000],
[300, 0x0000ff],
];
or;
const ramps = [
[200, [1, 0, 0]],
[300, [0, 0, 1]],
];
const visualizer = new ColorRampVisualizer(ramps);
visualizer.process(199); // [ 1, 0, 0 ]
visualizer.process(200); // [ 1, 0, 0 ]
visualizer.process(250); // [ 0.5019607843137255, 0, 0.5019607843137255 ]
visualizer.process(299); // [ 0.011764705882352941, 0, 0.9882352941176471 ]
visualizer.process(300); // [ 0, 1, 0 ]
inverse
Returns a new ColorRampVisualizer
which is the inverse of the current one.
This means the color scale goes in the opposite direction.
process
Returns interpolated color for value.
Parameters
value
[number];
Returns [[number], [number], [number]] normalized RGB triplet.
createRedTemperature
Creates ColorRampVisualizer
with valColPairs
redTemperature
Parameters
minVal
[number] min value of intervalmaxVal
[number] max value of interval
Examples
const visualizer = ColorRampVisualizer.createRedTemperature(0.0, 1.0);
visualizer.process(0.0); // returns [ 0, 0, 0 ]
visualizer.process(0.3); // returns [ 0.43137254901960786, 0, 0 ]
visualizer.process(0.5); // returns [ 0.7176470588235294, 0.047058823529411764, 0 ]
visualizer.process(0.8); // returns [ 1, 0.6196078431372549, 0.2 ]
visualizer.process(1.0); // returns [ 1, 1, 1 ]
Returns ColorRampVisualizer
createWhiteGreen
Creates ColorRampVisualizer
with valColPairs
greenWhite
Parameters
minVal
[number] min value of intervalmaxVal
[number] max value of interval
Examples
const visualizer = ColorRampVisualizer.createWhiteGreen(0.0, 1.0);
visualizer.process(0.0); // returns [ 0, 0, 0 ]
visualizer.process(0.3); // returns [ 0, 0.2980392156862745, 0 ]
visualizer.process(0.5); // returns [ 0.16862745098039217, 0.5019607843137255, 0 ]
visualizer.process(0.8); // returns [ 0.6666666666666666, 0.8, 0.3333333333333333 ]
visualizer.process(1.0); // returns [ 1, 1, 1 ]
Returns ColorRampVisualizer
createBlueRed
Creates ColorRampVisualizer
with valColPairs
blueRed
Parameters
minVal
[number] min value of intervalmaxVal
[number] max value of interval
Examples
const visualizer = ColorRampVisualizer.createBlueRed(0.0, 1.0);
visualizer.process(0.0); // returns [ 0, 0, 0.5019607843137255 ]
visualizer.process(0.3); // returns [ 0, 0.7019607843137254, 1 ]
visualizer.process(0.5); // returns [ 0.5019607843137255, 1, 0.5019607843137255 ]
visualizer.process(0.8); // returns [ 1, 0.2980392156862745, 0 ]
visualizer.process(1.0); // returns [ 0.5019607843137255, 0, 0 ]
Returns ColorRampVisualizer
createOceanColor
Creates ColorRampVisualizer
with valColPairs
oceanColor
Parameters
minVal
[number] min value of intervalmaxVal
[number] max value of interval
Returns ColorRampVisualizer
;
HighlightCompressVisualizer
This is a piecewise linear function which compresses highlights.
The minValue
and maxValue
will be mapped inside the interval [ 0, 1 ].
However, if maxValue
lies in (0, 1) a second function which increases much more slowly will be used
to further map the values which are mapped to 0.92 and above (see the figure below).
This increases the visualized dynamic range while
keeping most of the interval of interest linear.
Useful, for example, for true color, with a maxValue
of 0.4 to still keep some detail in clouds.
Parameters
minValue
[number] the value which will be mapped to 0. All values smaller thanminValue
will also be mapped to 0. (optional, default0.0
)maxValue
[number] the value which controls the position of the boundary point between both linear functions. It will be mapped to approx. 0.9259, while values greater than or equal to (2*maxValue - minValue) will be mapped to 1 (see the figure above). (optional, default1.0
)gain
(optional, default1.0
)offset
(optional, default0.0
)gamma
(optional, default1.0
)
Examples
const visualizer = new HighlightCompressVisualizer(0.1, 0.4);
visualizer.process(0); // will return 0
visualizer.process(0.1); // will return 0
visualizer.process(0.25); // will return 0.5
visualizer.process(0.376); // will return 0.92. Note: 0.376 = minValue + 0.92*(maxValue - minValue)
visualizer.process(0.4); // will return 0.9259
visualizer.process(0.7); // will return 1 Note: 0.7 is the smallest value mapped to 1.
visualizer.process(1.1); // will return 1
process
Returns mapped value.
Parameters
val
[number] the input value to be mapped.i
[number] the index of val. This is specific to usage in the Browser.
Returns [[number]] mapped value.
Helper functions
Helper functions that can be used in custom scripts.
int2rgb
Transforms a color as integer into RGB triplet.
Parameters
color
[number] as integer
Examples
int2rgb(255); // returns [ 0, 0, 255 ]
int2rgb(256); // returns [ 0, 1, 0 ]
int2rgb(65537); // returns [ 1, 0, 1 ]
Returns [[number], [number], [number]];
rgb2int
Inverse of the int2rgb
function. Transforms a RGB triplet into integer.
Parameters
color
[[number], [number], [number]] as RGB triplet
Examples
rgb2int([0, 0, 255]); // returns 255
rgb2int([0, 1, 0]); // returns 256
rgb2int([1, 0, 1]); // returns 65537
Returns [number];
normalizeRGB
Returns a new, normalized array without modifying the input array. It does this by dividing by 255. The input range is expected between 0 and 255 giving an output between 0 and 1.
Parameters
rgb255Array
;
Examples
combine
Combines two colors.
Parameters
color1
[number] The first color defined as an array of values.color2
[number] The second color defined as an array of values.alpha
[number] A share of the first color defined as a floating point between 0 and 1.
Examples
combine([100, 0, 0], [0, 100, 0], 1); // returns [ 100, 0, 0 ]
combine([100, 0, 0], [0, 100, 0], 0); // returns [ 0, 100, 0 ]
combine([100, 0, 0], [0, 100, 0], 0.5); // returns [ 50, 50, 0 ]
Returns [number] The combined color defined as an array of values.
index
Calculate difference divided by sum.
Parameters
x
[number] first valuey
[number] second value
Examples
index(0.6, 0.4); // returns 0.2
index(0.5, -0.5); //returns 0.0
Returns [number] (x - y) / (x + y)
, if sum is 0 returns 0
inverse
Calculate inverse value
Parameters
x
[number] value
Examples
inverse(2.0); // returns 0.5
inverse(5.0); // returns 0.2
inverse(0); // returns 1.7976931348623157E308
Returns [number] inverse of value of x (1 / x
), if x is 0 returns JAVA_DOUBLE_MAX_VAL
valueMap
Maps a value to another value bound by an interval (from,to).
intervals = [-10, -5, 0, 5, 10], values = [-100,-50, 0, 50, 100] defines the following mapping: (-inf, -10) => -100 (-10, -5) => -50 (-5,0) => 0 (0, 5) => 50 (5, +inf) => 100
Parameters
value
[number] input valueintervals
[[number]] array of numbers in ascending order defining intervalsvalues
[[number]] output value for the given interval
Examples
valueMap(5, [1, 3, 5, 7, 10], [100, 300, 500, 700, 900]); // returns 500
valueMap(1, [1, 3, 5, 7, 10], [100, 300, 500, 700, 900]); // returns 100
valueMap(2, [1, 3, 5, 7, 10], [100, 300, 500, 700, 900]); // returns 300
valueMap(12, [1, 3, 5, 7, 10], [100, 300, 500, 700, 900]); // returns 900
valueMap(50); // returns 50
Returns [number];
Constants
JAVA_DOUBLE_MAX_VAL
const JAVA_DOUBLE_MAX_VAL = 1.7976931348623157e308;
Type: [number]
blueRed
const blueRed = [
[1.0, 0x000080],
[0.875, 0x0000ff],
[0.625, 0x00ffff],
[0.375, 0xffff00],
[0.125, 0xff0000],
[0.0, 0x800000],
];
Type: [Array]<[[number], [number]]>
redTemperature
const redTemperature = [
[1.0, 0x000000],
[0.525, 0xae0000],
[0.3, 0xff6e00],
[0.25, 0xff8600],
[0.0, 0xffffff],
];
Type: [Array]<[[number], [number]]>
greenWhite
const greenWhite = [
[1.0, 0x000000],
[0.6, 0x006600],
[0.3, 0x80b300],
[0.0, 0xffffff],
];
Type: [Array]<[[number], [number]]>
oceanColor
const oceanColor = [
[0.0, normalizeRGB([147, 0, 108])],
[0.0471, normalizeRGB([111, 0, 144])],
[0.098, normalizeRGB([72, 0, 183])],
[0.149, normalizeRGB([33, 0, 222])],
[0.2, normalizeRGB([0, 10, 255])],
[0.2471, normalizeRGB([0, 74, 255])],
[0.298, normalizeRGB([0, 144, 255])],
[0.349, normalizeRGB([0, 213, 255])],
[0.4, normalizeRGB([0, 255, 215])],
[0.4471, normalizeRGB([0, 255, 119])],
[0.498, normalizeRGB([0, 255, 15])],
[0.549, normalizeRGB([96, 255, 0])],
[0.6, normalizeRGB([200, 255, 0])],
[0.6471, normalizeRGB([255, 235, 0])],
[0.698, normalizeRGB([255, 183, 0])],
[0.749, normalizeRGB([255, 131, 0])],
[0.8, normalizeRGB([255, 79, 0])],
[0.8471, normalizeRGB([255, 31, 0])],
[0.898, normalizeRGB([230, 0, 0])],
[0.949, normalizeRGB([165, 0, 0])],
[1.0, normalizeRGB([105, 0, 0])],
];
Type: [Array]<[[number], [number]]>
QA Band Functions
Landsat8C2QaBandConditions
Cloud confidence, cloud shadow confidence, snow ice confidence and cirrus confidence represent levels of confidence that a condition exists:
- 0 = “Not Determined”
- 1 = “Low” = Low confidence.
- 2 = “Medium / Reserved” = Medium only for cloud confidence.
- 3 = “High” = High confidence.
Type: [Object]
Properties
fill
[number] 0 for image data, 1 for fill datadilatedCloud
[number] 0 for cloud is not dilated or no cloud, 1 for cloud dilationcirrus
[number] 0 for no confidence level or low confidence, 1 for high confidence cirruscloud
[number] 0 for cloud confidence is not high, 1 for high confidence cloudcloudShadow
[number] 0 for cloud shadow confidence is not high, 1 for high confidence cloud shadowsnow
[number] 0 for snow/ice confidence is not high, 1 for high confidence snow coverclear
[number] 0 if cloud or dilated cloud, or else 1water
[number] 0 for land or cloud, 1 for watercloudConfidence
[number];cloudShadowConfidence
[number];snowIceConfidence
[number];cirrusConfidence
[number];
decodeL8C2Qa
Decodes Landsat 8 Collection 2 Quality Assessment band conditions.
Parameters
value
integer band pixel (16-bit value)
Examples
decodeL8C2Qa(55052);
// returns {
// cirrus: 1, cirrusConfidence: 3,
// clear: 0,
// cloud: 1,
// cloudConfidence: 3,
// cloudShadow: 0,
// cloudShadowConfidence: 1,
// dilatedCloud: 0,
// fill: 0,
// snow: 0,
// snowIceConfidence: 1,
// water: 0
// }
Returns Landsat8C2QaBandConditions
;
decodeS3OLCIQualityFlags
Unpacks bit-packed Sentinel 3 OLCI Quality Flags values.
Parameters
value
integer QUALITY_FLAGS band DN value (32-bit value)
Returns object An object containing the following keys with either 0 or 1 values:
land
, coastline
, fresh_inland_water
, tidal_region
, bright
, straylight_risk
, invalid
, cosmetic
, duplicated
, sun_glint_risk
, dubious
, saturatedBxy
(where xy is the band number, e.g. saturatedB01).