Support expressions for band arguments
This commit is contained in:
62
examples/cog-stretch.js
Normal file
62
examples/cog-stretch.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import GeoTIFF from '../src/ol/source/GeoTIFF.js';
|
||||
import Map from '../src/ol/Map.js';
|
||||
import TileLayer from '../src/ol/layer/WebGLTile.js';
|
||||
import View from '../src/ol/View.js';
|
||||
|
||||
const channels = ['red', 'green', 'blue'];
|
||||
for (const channel of channels) {
|
||||
const selector = document.getElementById(channel);
|
||||
selector.addEventListener('change', update);
|
||||
|
||||
const input = document.getElementById(`${channel}Max`);
|
||||
input.addEventListener('input', update);
|
||||
}
|
||||
|
||||
function getVariables() {
|
||||
const variables = {};
|
||||
for (const channel of channels) {
|
||||
const selector = document.getElementById(channel);
|
||||
variables[channel] = parseInt(selector.value, 10);
|
||||
|
||||
const inputId = `${channel}Max`;
|
||||
const input = document.getElementById(inputId);
|
||||
variables[inputId] = parseInt(input.value, 10);
|
||||
}
|
||||
return variables;
|
||||
}
|
||||
|
||||
const layer = new TileLayer({
|
||||
style: {
|
||||
variables: getVariables(),
|
||||
color: [
|
||||
'array',
|
||||
['/', ['band', ['var', 'red']], ['var', 'redMax']],
|
||||
['/', ['band', ['var', 'green']], ['var', 'greenMax']],
|
||||
['/', ['band', ['var', 'blue']], ['var', 'blueMax']],
|
||||
1,
|
||||
],
|
||||
},
|
||||
source: new GeoTIFF({
|
||||
normalize: false,
|
||||
sources: [
|
||||
{
|
||||
url: 'https://s2downloads.eox.at/demo/EOxCloudless/2020/rgbnir/s2cloudless2020-16bits_sinlge-file_z0-4.tif',
|
||||
},
|
||||
],
|
||||
}),
|
||||
});
|
||||
|
||||
function update() {
|
||||
layer.updateStyleVariables(getVariables());
|
||||
}
|
||||
|
||||
const map = new Map({
|
||||
target: 'map',
|
||||
layers: [layer],
|
||||
view: new View({
|
||||
projection: 'EPSG:4326',
|
||||
center: [0, 0],
|
||||
zoom: 2,
|
||||
maxZoom: 6,
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user