mirror of
https://github.com/jiawanlong/Cesium-Examples.git
synced 2025-07-05 23:57:32 +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
|