From d78bf949995af6111e65801c36ae4aeffa5e1106 Mon Sep 17 00:00:00 2001 From: Nakul Date: Tue, 7 Oct 2025 17:09:36 +0530 Subject: [PATCH] Add support for color stops in symbollogyState in SingleBandPseudoColor layer --- examples/cloud_optimized_geotiff.jGIS | 139 +++++++++++++++++- .../types/SingleBandPseudoColor.tsx | 7 + .../src/schema/project/layers/webGlLayer.json | 3 + 3 files changed, 148 insertions(+), 1 deletion(-) diff --git a/examples/cloud_optimized_geotiff.jGIS b/examples/cloud_optimized_geotiff.jGIS index 978694b3c..55cdbe070 100644 --- a/examples/cloud_optimized_geotiff.jGIS +++ b/examples/cloud_optimized_geotiff.jGIS @@ -146,7 +146,144 @@ "interpolation": "linear", "mode": "equal interval", "nClasses": "15", - "renderType": "Singleband Pseudocolor" + "renderType": "Singleband Pseudocolor", + "stops": [ + { + "output": [ + 0.0, + 0.0, + 0.0, + 1.0 + ], + "stop": 2000.0 + }, + { + "output": [ + 58.0, + 0.0, + 0.0, + 1.0 + ], + "stop": 3642.857142857143 + }, + { + "output": [ + 115.0, + 0.0, + 0.0, + 1.0 + ], + "stop": 5285.714285714286 + }, + { + "output": [ + 173.0, + 0.0, + 0.0, + 1.0 + ], + "stop": 6928.571428571428 + }, + { + "output": [ + 230.0, + 0.0, + 0.0, + 1.0 + ], + "stop": 8571.428571428572 + }, + { + "output": [ + 236.0, + 53.0, + 0.0, + 1.0 + ], + "stop": 10214.285714285714 + }, + { + "output": [ + 243.0, + 105.0, + 0.0, + 1.0 + ], + "stop": 11857.142857142857 + }, + { + "output": [ + 249.0, + 158.0, + 0.0, + 1.0 + ], + "stop": 13500.0 + }, + { + "output": [ + 255.0, + 210.0, + 0.0, + 1.0 + ], + "stop": 15142.857142857143 + }, + { + "output": [ + 255.0, + 218.0, + 43.0, + 1.0 + ], + "stop": 16785.714285714286 + }, + { + "output": [ + 255.0, + 225.0, + 85.0, + 1.0 + ], + "stop": 18428.571428571428 + }, + { + "output": [ + 255.0, + 233.0, + 128.0, + 1.0 + ], + "stop": 20071.428571428572 + }, + { + "output": [ + 255.0, + 240.0, + 170.0, + 1.0 + ], + "stop": 21714.285714285714 + }, + { + "output": [ + 255.0, + 248.0, + 213.0, + 1.0 + ], + "stop": 23357.14285714286 + }, + { + "output": [ + 255.0, + 255.0, + 255.0, + 1.0 + ], + "stop": 25000.0 + } + ] } }, "type": "WebGlLayer", diff --git a/packages/base/src/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.tsx b/packages/base/src/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.tsx index 0cc58f61d..30edd6cad 100644 --- a/packages/base/src/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.tsx +++ b/packages/base/src/dialogs/symbology/tiff_layer/types/SingleBandPseudoColor.tsx @@ -98,6 +98,12 @@ const SingleBandPseudoColor: React.FC = ({ setSelectedBand(band); setSelectedFunction(interpolation); + + if (layerParams.symbologyState?.stops) { + setStopRows(layerParams.symbologyState.stops as IStopRow[]); + } else { + buildColorInfo(); + } }; const buildColorInfo = () => { @@ -254,6 +260,7 @@ const SingleBandPseudoColor: React.FC = ({ colorRamp: colorRampOptionsRef.current?.selectedRamp, nClasses: colorRampOptionsRef.current?.numberOfShades, mode: colorRampOptionsRef.current?.selectedMode, + stops: stopRowsRef.current, }; layer.parameters.symbologyState = symbologyState; diff --git a/packages/schema/src/schema/project/layers/webGlLayer.json b/packages/schema/src/schema/project/layers/webGlLayer.json index d88213079..d8dd1f306 100644 --- a/packages/schema/src/schema/project/layers/webGlLayer.json +++ b/packages/schema/src/schema/project/layers/webGlLayer.json @@ -87,6 +87,9 @@ "type": "string", "default": "equal interval", "enum": ["continuous", "equal interval", "quantile"] + }, + "stops": { + "type": "array" } }, "additionalProperties": false