utils/RasterWorker.worker.jsjavascript
"use strict";
//
// Raster pixels worker: terrain grid heights of the tile pixels and the GeoTIFF tile resampling
//
import { createTileHeights } from "../terrain/terrainUtils";
import { warpRasters } from "../layer/geotiff/warp";

function makeResult(d) {
    if (d.type === "heights") {
        let heights = createTileHeights(d.pixels, d.size, d.gridSize, d.levels, d.noDataHeight);
        return [heights, [heights.buffer]];
    }

    let rasters = warpRasters(d);
    return [rasters, rasters.map((r) => r.buffer)];
}

self.onmessage = function (e) {
    let result = null,
        transfer = [];

    try {
        [result, transfer] = makeResult(e.data);
    } catch (err) {
        console.error(err);
    }

    self.postMessage({ id: e.data.id, result: result }, transfer);
};