Cesium-Examples/examples/cesiumEx/ocean/layers/LayerOceanWave/wave/WaveProcessor.worker.js
2025-03-11 17:51:04 +08:00

128 lines
3.7 KiB
JavaScript

import { waveData } from './WaveData.js'
let builder = null
onmessage = (e) => {
let params = e.data.params
if (!builder) {
let uvData = params.uvData
let [header, uData, vData] = uvData
builder = new waveData.buildGrid({
header,
data: function (i) {
return [uData[i], vData[i]]
},
interpolate: waveData.bilinearInterpolateVector
})
}
let time1 = new Date().getTime()
if (params.velocityScale_o) waveData.velocityScale_o = params.velocityScale_o
let result = waveData.reCreate(params, builder, true)
let time2 = new Date().getTime()
let time = time2 - time1
let data = {
params,
columns: result.columns,
pixels: result.mask.imageData,
time: time
}
postMessage(data)
}
// var builder = null;
// function parseData(params) {
// axios({
// method: "POST",
// url: params.url,
// // contentType:'application/json',
// data: {
// date: params.date,
// modelType: params.modelType,
// element: params.element,
// level: params.level
// }
// }).then(file => {
// if (file != null) {
// let data = file.data.data;
// var field = [];
// var w = data.gridWidth;
// var h = data.gridHeight;
// var n = 2 * w * h;
// var i = 0;
// var total = 0;
// var weight = 0;
// for (var x = 0; x < w; x++) {
// field[x] = [];
// for (var y = 0; y < h; y++) {
// var vx = Number(data.field[i++]);
// var vy = Number(data.field[i++]);
// var v = { x: vx, y: vy };
// // Uncomment to test a constant field:
// // v = new Vector(10, 0);
// var ux = x / (w - 1);
// var uy = y / (h - 1);
// var lon = data.x0 * (1 - ux) + data.x1 * ux;
// var lat = data.y0 * (1 - uy) + data.y1 * uy;
// field[x][y] = v;
// }
// }
// var udatas = [], vdatas = [], ydatas = [], xdatas = [];
// var _length = field.length;
// for (var y = data.gridHeight - 1; y >= 0; y--) {
// for (var x = 0; x < data.gridWidth; x++) {
// xdatas.push(field[x][y].x);
// ydatas.push(field[x][y].y);
// }
// }
// var header = {
// "nx": data.gridWidth,
// "ny": data.gridHeight,
// "basicAngle": 0,
// "subDivisions": 0,
// "lo1": data.x0,
// "la1": data.y0,
// "lo2": data.x1,
// "la2": data.y1,
// // "dx": Number(360/(data.gridWidth-1)).toFixed(0),
// // "dy": Number(180/(data.gridHeight-1)).toFixed(0)
// // "dx": Math.round(360 * 10 / (data.gridWidth - 1)) / 10,
// // "dy": Math.round(180 * 10 / (data.gridHeight - 1)) / 10
// "dx": 1.0,
// "dy": 1.0
// };
// /* var uData = file[0].data;
// var vData = file[1].data;*/
// var uData = xdatas;
// var vData = ydatas;
// var build = {};
// //lxl注释
// build.header = header;
// build.data = function(i) {
// return [uData[i], vData[i]];
// };
// build.interpolate = waveData.bilinearInterpolateVector;
// builder = new waveData.buildGrid(build);
// }
// });
// }
// onmessage = (e) => {
// if (builder == null) {
// parseData(e.data.params.url);
// }
// //lxl20200828增加
// if (builder != null) {
// var time1 = new Date().getTime();
// var result = waveData.reCreate(e.data.params, builder, true);
// var time2 = new Date().getTime();
// var time = time2 - time1;
// var data = { params: e.data.params, columns: result.columns, pixels: result.mask.imageData, time: time };
// postMessage(data);
// }
// };