欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解析grib 文件遇到的问题  

程序员文章站 2024-03-15 13:27:59
...
之前用的是ucar.grib 解析包,再解析过程中发现 存储的数据每次有 重复数据 = 原始数据*2
原来以为我的代码逻辑有问题后面debug 的时候Grib2Input的getRecords条数始终是原始数据的2倍,所以在便利过程中数据就出现了重复数据,经过仔细盘查后发现自己解决的grib 文件后缀是grib2 但是为什么程序会给我一个2倍条数的数据呢,于是又去翻查API 发现有一项API
 RandomAccessFile raf = new RandomAccessFile(file.getPath(), "r");
  raf.order(RandomAccessFile.BIG_ENDIAN);
 Grib2Input input = new Grib2Input(raf);
 input.getEdition();

input.getEdition(); 这个方法返回grib 文件类型 当执行这句话后getRecords的返回条数就正常了。原以为这个bug被完美解决,但是放上去测试和时候发现解析性能很低,又排查问题发现执行了getEdition 这个方法后  input.scan(false, false); 这个会去全表扫描相当于 这个扫描一次 然后你遍历时候又一次。每次执行都很慢。

最后只能判断girb 类型 然后根据类型自己去做 页数判断,最后解决的方案