Skip to main content

格点数据解析器

QEGridDataProvider

QE自定义四维二进制格点数据解析器

如果我们拿到的格点数据是QE标准化格点数据格式,则我们使用QEGridDataProvider来构建provider

CimissGridDataProvider

天擎/CIMISS接口返回的单二维场的格点数据解析器

如果我们拿到的格点数据是CIMISS接口返回的单二维场的格点数据,或者和CIMISS接口返回的单二维场的格点数据类似(数据含以下示例中的字段)的数据,则我们使用CimissGridDataProvider来构建provider。

下面是一个CIMISS接口返回的单二维场的格点数据示例

const jsonData = {
    "startLat":53.0,
    "startLon":73.5,
    "endLat":4.0,
    "endLon":135.0,
    "latCount":99,
    "lonCount":124,
    "latStep":-0.5,
    "lonStep":0.5,
    "DS":[[12.523165,12.460665,12.710665,...],[11.523165,11.335665,11.648165,...]...],
    ...
}

我们需要展示的数据如果是类似上面示例的数据结构,则可以使用CimissGridDataProvider,我们只需将格点数据传入即可,CimissGridDataProvider会自动解析出里面的gridData和gridOptions。

const provider = new CimissGridDataProvider(jsonData);

完整示例

Array2DGridDataProvider

基于数组的单二维格点场的解析器

如果我们的数据是如下格式的二维数组:

const gridArr = [[12.523165,12.460665,12.710665,...],[11.523165,11.335665,11.648165,...]...]

或者一维数组

const gridArr = [12.523165,12.460665,12.710665,...,11.523165,11.335665,11.648165,...]

我们可以使用Array2DGridDataProvider来构建provider,同时需要传入gridOptions,格点数据的属性

let gridOptions:IGridDataOptions = {
    xStart: 117.834647, //开始经度
    xEnd: 126.535819,   //结束经度
    yStart: 26.749225,  //开始纬度
    yEnd: 31.413367,    //结束纬度
    xDelta: 0.03,       //经度间隔
    yDelta: 0.03,       //纬度间隔
    zValues: [0],
    tCount: 1
};
const provider = new Array2DGridDataProvider(gridArr, {gridOptions:gridOptions});
MemoryGridDataProvider

基于内存的格点数据解析器

如果我们的数据已经是一个二维格点场数据GridData(例如自己先解析了数据),或者多个GridData组成的格点数据序列,GridData对象为框架中定义的格点数据对象,表示一个二维的格点场。则我们可以使用MemoryGridDataProvider来构建provider,同样需要传入gridOptions格点数据的属性。第一个参数是[t[z]]形式的格点场(GridData)数组,第二个参数是gridOptions。

const provider = new MemoryGridDataProvider(grids, {gridOptions:gridOptions});

完整示例

MemoryWindDataProvider

风场数据解析器

MemoryWindDataProvider专门用于构建风场数据,风场数据由UV或者风向风速构成,在QE中,使用两个格点数据访问器(使用U和V,或者使用风向和风速)可以构建一个风场数据访问器MemoryWindDataProvider,MemoryWindDataProvider中可以进行UV和风向风速的自动换算。

MemoryWindDataProvider构建参数有:

  • 第一个格点访问器,可以是U分量或者风速
  • 第二个格点访问器,可以是V分量或者风向
  • 构造参数,主要包括:是uv数据还是风向风速数据的标记,是否延迟计算的标记等
  • 以下为构建MemoryWindDataProvider的示例

    getRaw("public/demos/data/u500.dat").then(uBuffer => {
      const uProvider = new QEGridDataProvider(uBuffer)
      getRaw("public/demos/data/v500.dat").then(async vBuffer => {
        const vProvider = new QEGridDataProvider(vBuffer);
        const windProvider = new MemoryWindDataProvider(
          uProvider,          //第一个格点访问器,U分量
          vProvider,          //第二个格点访问器,V分量
          {
            lazyCalc: true,   //延迟计算,即在构建的时候不计算风向风速
            isUV: true        //是uv分量
          }
        );
      })
    })
    

    lazyCalc这个参数是指是否延迟计算,比如传入的uv(isUV为true),就表示是否马上就要计算风向风速。

  • 如果是做动态风场,实际只要uv就可以了,不需要计算出风向风速,这时设置lazyCalc为true,可以减少计算过程。
  • 如果是用来显示风速数值到页面上,这时设置lazyCalc为false,即在构建时就根据uv计算出风向风速,给人的感觉反而会更快。否则每次显示数值都要计算就比较慢。
  • 完整示例

    MicapsDiamond4GridDataProvider

    Micaps4类格点数据解析器

    Micaps文本格式

    GrayImageGridDataProvider

    QE自定义的基于图像压缩的格点数据解析器

    完整示例