mirror of
https://github.com/jiawanlong/Cesium-Examples.git
synced 2025-07-05 07:37:31 +00:00
146 lines
3.7 KiB
JavaScript
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
|