`
umbrellall1
  • 浏览: 142585 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

解析grib 文件遇到的问题

 
阅读更多
之前用的是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 类型 然后根据类型自己去做 页数判断,最后解决的方案
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics