UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

43 lines (41 loc) 6.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pansharpenBrovey = void 0; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // Brovey Method: Each resampled, multispectral pixel is // multiplied by the ratio of the corresponding // panchromatic pixel intensity to the sum of all the // multispectral intensities. // Original code from https://github.com/mapbox/rio-pansharpen // var fs1 = "uniform sampler2D bitmapTexturePan;\nuniform float panWeight;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n"; var fs2 = "precision mediump usampler2D;\n\n#ifdef SAMPLER_TYPE\n uniform SAMPLER_TYPE bitmapTexturePan;\n#else\n uniform sampler2D bitmapTexturePan;\n#endif\n\nuniform float panWeight;\n\nfloat pansharpen_brovey_ratio(vec4 rgb, float pan, float weight) {\n return pan / ((rgb.r + rgb.g + rgb.b * weight) / (2. + weight));\n}\n\nvec4 pansharpen_brovey_calc(vec4 rgb, float pan, float weight) {\n float ratio = pansharpen_brovey_ratio(rgb, pan, weight);\n return ratio * rgb;\n}\n"; function getUniforms() { var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var imagePan = opts.imagePan, _opts$panWeight = opts.panWeight, panWeight = _opts$panWeight === void 0 ? 0.2 : _opts$panWeight; if (!imagePan) { return null; } return { bitmapTexturePan: imagePan, panWeight: panWeight }; } var pansharpenBrovey = exports.pansharpenBrovey = { name: 'pansharpen_brovey', fs1: fs1, fs2: fs2, defines: { SAMPLER_TYPE: 'sampler2D' }, getUniforms: getUniforms, inject: { 'fs:DECKGL_MUTATE_COLOR': "\n float pan_band = float(texture2D(bitmapTexturePan, coord).r);\n image = pansharpen_brovey_calc(image, pan_band, panWeight);\n " } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmczEiLCJmczIiLCJnZXRVbmlmb3JtcyIsIm9wdHMiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJpbWFnZVBhbiIsIl9vcHRzJHBhbldlaWdodCIsInBhbldlaWdodCIsImJpdG1hcFRleHR1cmVQYW4iLCJwYW5zaGFycGVuQnJvdmV5IiwiZXhwb3J0cyIsIm5hbWUiLCJkZWZpbmVzIiwiU0FNUExFUl9UWVBFIiwiaW5qZWN0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Jhc3Rlci93ZWJnbC9wYW5zaGFycGVuL3BhbnNoYXJwZW4tYnJvdmV5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7VGV4dHVyZTJEfSBmcm9tICdAbHVtYS5nbC93ZWJnbCc7XG5cbmltcG9ydCB7R2V0VW5pZm9ybXNPdXRwdXQsIFNoYWRlck1vZHVsZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyBCcm92ZXkgTWV0aG9kOiBFYWNoIHJlc2FtcGxlZCwgbXVsdGlzcGVjdHJhbCBwaXhlbCBpc1xuLy8gbXVsdGlwbGllZCBieSB0aGUgcmF0aW8gb2YgdGhlIGNvcnJlc3BvbmRpbmdcbi8vIHBhbmNocm9tYXRpYyBwaXhlbCBpbnRlbnNpdHkgdG8gdGhlIHN1bSBvZiBhbGwgdGhlXG4vLyBtdWx0aXNwZWN0cmFsIGludGVuc2l0aWVzLlxuLy8gT3JpZ2luYWwgY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXBib3gvcmlvLXBhbnNoYXJwZW5cbi8vXG5jb25zdCBmczEgPSBgXFxcbnVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG51bmlmb3JtIGZsb2F0IHBhbldlaWdodDtcblxuZmxvYXQgcGFuc2hhcnBlbl9icm92ZXlfcmF0aW8odmVjNCByZ2IsIGZsb2F0IHBhbiwgZmxvYXQgd2VpZ2h0KSB7XG4gIHJldHVybiBwYW4gLyAoKHJnYi5yICsgcmdiLmcgKyByZ2IuYiAqIHdlaWdodCkgLyAoMi4gKyB3ZWlnaHQpKTtcbn1cblxudmVjNCBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICBmbG9hdCByYXRpbyA9IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHJnYiwgcGFuLCB3ZWlnaHQpO1xuICByZXR1cm4gcmF0aW8gKiByZ2I7XG59XG5gO1xuXG5jb25zdCBmczIgPSBgXFxcbnByZWNpc2lvbiBtZWRpdW1wIHVzYW1wbGVyMkQ7XG5cbiNpZmRlZiBTQU1QTEVSX1RZUEVcbiAgdW5pZm9ybSBTQU1QTEVSX1RZUEUgYml0bWFwVGV4dHVyZVBhbjtcbiNlbHNlXG4gIHVuaWZvcm0gc2FtcGxlcjJEIGJpdG1hcFRleHR1cmVQYW47XG4jZW5kaWZcblxudW5pZm9ybSBmbG9hdCBwYW5XZWlnaHQ7XG5cbmZsb2F0IHBhbnNoYXJwZW5fYnJvdmV5X3JhdGlvKHZlYzQgcmdiLCBmbG9hdCBwYW4sIGZsb2F0IHdlaWdodCkge1xuICByZXR1cm4gcGFuIC8gKChyZ2IuciArIHJnYi5nICsgcmdiLmIgKiB3ZWlnaHQpIC8gKDIuICsgd2VpZ2h0KSk7XG59XG5cbnZlYzQgcGFuc2hhcnBlbl9icm92ZXlfY2FsYyh2ZWM0IHJnYiwgZmxvYXQgcGFuLCBmbG9hdCB3ZWlnaHQpIHtcbiAgZmxvYXQgcmF0aW8gPSBwYW5zaGFycGVuX2Jyb3ZleV9yYXRpbyhyZ2IsIHBhbiwgd2VpZ2h0KTtcbiAgcmV0dXJuIHJhdGlvICogcmdiO1xufVxuYDtcblxuZnVuY3Rpb24gZ2V0VW5pZm9ybXMob3B0czoge2ltYWdlUGFuPzogVGV4dHVyZTJEOyBwYW5XZWlnaHQ/OiBudW1iZXJ9ID0ge30pOiBHZXRVbmlmb3Jtc091dHB1dCB7XG4gIGNvbnN0IHtpbWFnZVBhbiwgcGFuV2VpZ2h0ID0gMC4yfSA9IG9wdHM7XG5cbiAgaWYgKCFpbWFnZVBhbikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiaXRtYXBUZXh0dXJlUGFuOiBpbWFnZVBhbixcbiAgICBwYW5XZWlnaHRcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IHBhbnNoYXJwZW5Ccm92ZXk6IFNoYWRlck1vZHVsZSA9IHtcbiAgbmFtZTogJ3BhbnNoYXJwZW5fYnJvdmV5JyxcbiAgZnMxLFxuICBmczIsXG4gIGRlZmluZXM6IHtcbiAgICBTQU1QTEVSX1RZUEU6ICdzYW1wbGVyMkQnXG4gIH0sXG4gIGdldFVuaWZvcm1zLFxuICBpbmplY3Q6IHtcbiAgICAnZnM6REVDS0dMX01VVEFURV9DT0xPUic6IGBcbiAgICBmbG9hdCBwYW5fYmFuZCA9IGZsb2F0KHRleHR1cmUyRChiaXRtYXBUZXh0dXJlUGFuLCBjb29yZCkucik7XG4gICAgaW1hZ2UgPSBwYW5zaGFycGVuX2Jyb3ZleV9jYWxjKGltYWdlLCBwYW5fYmFuZCwgcGFuV2VpZ2h0KTtcbiAgICBgXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7O0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsR0FBRywyV0FZUjtBQUVELElBQU1DLEdBQUcsOGRBbUJSO0FBRUQsU0FBU0MsV0FBV0EsQ0FBQSxFQUEyRTtFQUFBLElBQTFFQyxJQUFnRCxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDeEUsSUFBT0csUUFBUSxHQUFxQkosSUFBSSxDQUFqQ0ksUUFBUTtJQUFBQyxlQUFBLEdBQXFCTCxJQUFJLENBQXZCTSxTQUFTO0lBQVRBLFNBQVMsR0FBQUQsZUFBQSxjQUFHLEdBQUcsR0FBQUEsZUFBQTtFQUVoQyxJQUFJLENBQUNELFFBQVEsRUFBRTtJQUNiLE9BQU8sSUFBSTtFQUNiO0VBRUEsT0FBTztJQUNMRyxnQkFBZ0IsRUFBRUgsUUFBUTtJQUMxQkUsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSDtBQUVPLElBQU1FLGdCQUE4QixHQUFBQyxPQUFBLENBQUFELGdCQUFBLEdBQUc7RUFDNUNFLElBQUksRUFBRSxtQkFBbUI7RUFDekJiLEdBQUcsRUFBSEEsR0FBRztFQUNIQyxHQUFHLEVBQUhBLEdBQUc7RUFDSGEsT0FBTyxFQUFFO0lBQ1BDLFlBQVksRUFBRTtFQUNoQixDQUFDO0VBQ0RiLFdBQVcsRUFBWEEsV0FBVztFQUNYYyxNQUFNLEVBQUU7SUFDTix3QkFBd0I7RUFJMUI7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119