Cesium-Examples/examples/cesiumEx/ocean/layers/LayerOceanCurrent/DataOceanCurrent.js
2025-03-11 17:51:04 +08:00

146 lines
3.7 KiB
JavaScript

// 海流流线图数据获取
import { UtilsHttpQuery as async } from '@/utils/Utils'
class DataOceanCurrent {
constructor(config = {}) {
this._access_token = config.access_token ? config.access_token : ''
this._params = {}
this._promise = {}
this._status = 'idle' // idle pendding
}
get access_token() {
return this._access_token
}
set access_token(val) {
if (!val || typeof val != 'string') return
this._access_token = val
}
async request(options = {}) {
this._params = this.buildParams(options)
this._promise = async({
method: 'GET',
url: this._params.url
})
try {
this._status = 'pendding'
let res = await Promise.all([this._promise])
this._status = 'idle'
let result = res[0]
if (result.data.code != 200) return []
if (!result.data.data) result.data.data = {}
let data = result.data.data
let uvData = this.buildResult(data)
return uvData
} catch (error) {
return []
}
}
// async request(options = {}) {
// this._params = this.buildParams(options)
// this._promise = async({
// method: 'POST',
// url: this._params.url,
// data: this._params.query
// })
// try {
// this._status = 'pendding'
// let res = await Promise.all([this._promise])
// this._status = 'idle'
// let result = res[0]
// if (result.data.code != 200) return []
// if (!result.data.data) result.data.data = {}
// let data = result.data.data
// let uvData = this.buildResult(data)
// return uvData
// } catch (error) {
// return []
// }
// }
cancel() {
if (this._status == 'pendding') {
this._promise.cancel()
this._status = 'idle'
this._promise = null
}
}
buildParams(options = {}) {
if (!options.query) options.query = {}
let _def = {
url: `http://111.199.67.88:18080/20230425toubiao/SeaDirection_202302251200.json`
}
return {
url: options.url || _def.url
}
}
// buildParams(options = {}) {
// if (!options.query) options.query = {}
// let _def = {
// url: `http://69.230.250.151:7027/VIS-Ocean/ocean/v1/getDynamicStreamline`,
// query: {
// date: "202111151500",
// element: "water",
// level: "9999",
// modelType: "ec",
// // elat: "90",
// // elng: "180",
// // slat: "-90",
// // slng: "-180"
// }
// }
// return {
// url: options.url || _def.url,
// query: {
// ..._def.query,
// ...options.query
// }
// }
// }
buildResult(data) {
let field = []
let w = data.gridWidth
let h = data.gridHeight
let i = 0
for (let x = 0; x < w; x++) {
field[x] = []
for (let y = 0; y < h; y++) {
let vx = Number(data.field[i++])
let vy = Number(data.field[i++])
let v = { x: vx, y: vy }
field[x][y] = v
}
}
let ydatas = [],
xdatas = []
for (let y = data.gridHeight - 1; y >= 0; y--) {
for (let x = 0; x < data.gridWidth; x++) {
xdatas.push(field[x][y].x)
ydatas.push(field[x][y].y)
}
}
let header = {
nx: data.gridWidth,
ny: data.gridHeight,
basicAngle: 0,
subDivisions: 0,
lo1: data.x0,
la1: data.y0,
lo2: data.x1,
la2: data.y1,
dx: data.dx || 0.8,
dy: data.dy || 0.8
}
let uData = xdatas
let vData = ydatas
return [header, uData, vData]
}
}
export default DataOceanCurrent