mirror of
				https://github.com/jiawanlong/Cesium-Examples.git
				synced 2025-11-04 09:14:17 +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
							 |