OpenLayers风场图

本文介绍了如何从nomads获取GFS数据,使用grib2json转换为JSON,并通过typescript实现风场图层的前端展示。重点涉及数据下载、处理工具和代码示例。

用到的插件是ol-wind,作者除了Openlayers风场插件外还有其他平台的,详见wind-layer

获取数据

git里有如何获取数据的介绍,这里记一下我的实践过程。
数据来源是nomads,见下图。git上curl命令里的下载地址现在好像不好使了,所以我用的是GFS 1.00 Degree,点击grib filter可以进入后续的筛选。
图1

在这里插入图片描述
在这里插入图片描述
一路往后点,到这个页面
在这里插入图片描述
上面应该是一些参数啥的,总之就照着git上curl命令里的参数选
或者修改curl命令里的数据源,把filter_gfs.pl改成filter_gfs_1p00(这个数据源是我随便选的,想选其他的在图1里找)
总之,不管是在网页上还是curl命令,最后下载好一个.grib2文件(curl命令下的没有扩展名)。
下面需要使用grib2json,一个java工具,将它转成json。
先去git上把grib2json下下来,然后mvn package,解压tar.gz,cd到bin目录下,运行grib2json --help,有下图就成了
在这里插入图片描述
运行grib2json -d -n -o current-wind-surface-level-gfs-1.0.json gfs.t00z.pgrb2.1p00.f000,后边是grib2文件名,前边是输出的json文件。

前端调用示例

用的是typescript,js自行修改

  /**
   * 添加风场图层
   */
  public addWindLayer() {
    // 数据源暂时写死
    const res: any = require('../assets/json/test3.json');
    const windLayer: any = new WindLayer(res, {
      forceRender: false,
      windOptions: {
        // particleMultiplier: 1 / 120, // 粒子路径数量的系数,不推荐使用(视野宽度 * 高度 * 系数),没看出差别
        velocityScale: 1 / 800, // 对于粒子路径步长的乘积基数,越大越快
        paths: 750, // 生成的粒子路径数量,越大线条越多
        maxAge: 15, // 粒子路径能够生成的最大帧数
        colorScale: [
          'rgb(36,104, 180)',
          'rgb(60,157, 194)',
          'rgb(128,205,193 )',
          'rgb(151,218,168 )',
          'rgb(198,231,181)',
          'rgb(238,247,217)',
          'rgb(255,238,159)',
          'rgb(252,217,125)',
          'rgb(255,182,100)',
          'rgb(252,150,75)',
          'rgb(250,112,52)',
          'rgb(245,64,32)',
          'rgb(237,45,28)',
          'rgb(220,24,32)',
          'rgb(180,0,35)'
        ],
        frameRate: 10
        // width: 3,
        // generateParticleOption: false
      },
      // map: map,
      projection: 'EPSG:3857'
    });
    // 离谱了,不设置成1之外会遮盖其他图层
    windLayer.setOpacity(0.9);

    this.map.addLayer(windLayer);
  }

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值