全国气象预报业务产品grib2数据格式解析

参考资料

全国智能网格气象预报业务规范暂行: https://www.docin.com/p-2089521384.html

解析工具

grib2转json工具下载地址:
https://github.com/cambecc/grib2json

解析过程

  • 从github上下载源代码

在这里插入图片描述

  • 导入相关依赖

在这里插入图片描述

  • 编写一个测试类运行代码,将grib2数据格式转化为json数据格式

    在这里插入图片描述

    @Test
    public void test_ny() {
        String args = "-d -n -o E:/data/apple-weather/pre.json E:/data/apple-weather/Z_NWGD_C_BABJ_20200422033236_P_RFFC_SMERGE-ER03_202004220800_24003.GRB2";
        Launcher.main(args.split(" "));
    }
    
  • 数据样例

    解析之后的json数据非常大,为了方便截取了json中的一个对象进行说明

    单个对象包含两部分,一部分是header,是一些元数据信息,一部分是data,全国陆地范围共1401*1201 = 1682601条数据

    header部分:

在这里插入图片描述

data部分:

在这里插入图片描述

  • 根据气象站点经纬度去获取数据(以栖霞为例)

    栖霞 lat:37.19 lon:120.51

    根据站点经纬度计算该站点在网格数据data中的下标,全国气象预测业务产品的网格范围为70°E-140°E,0-60°N,起始点为(70°E,0),经纬方向上共1401个点,维度方向上共1201个点,格点总数为1401*1201=1682601,根据经纬度计算网格位置的公式如下,代入栖霞站点的经纬度

    index = (lat/0.05)*1401 + (lon-70)/0.05  = 1043074
    

    这样就可以得到一个气象站点附近的数据,任意经纬度同样可以参照这种方式进行计算

  • 可以写一个简单的脚本验证一下格点数据

      </body>
      <script>
      	window.onload = function () {
      		var url = "tmp1.json"
      		var request = new XMLHttpRequest();
      		request.open("GET",url);
      		request.send(null);
      		request.onload = function () {
      			if(request.status == 200) {
      				var json = JSON.parse(request.responseText);
      				console.log(json[0].data.length);
      			}
      		}
      	}
      </script>
    

    在这里插入图片描述

可以看到data的数据量为1682601,符合上述计算出的数值。

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值