- 积分
- 32
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-8-28
- 最后登录
- 1970-1-1
|
发表于 2013-12-31 21:19:58
|
显示全部楼层
MeteoInfo 发表于 2013-12-31 11:29
很多年不用VC了,不清楚
楼主,请教一下解码grib2的问题。
我根据http://www.nco.ncep.noaa.gov/pmb/codes/GRIB2/
g2clib-1.4.0.tar 代码解码ncep 1*1的grib2 格式的数据文件fnl_20121201_00_00, 解码却不正确,运行程序返回Invalid section number found in GRIB message,不知道为何。
数据文件我验证过是没有问题的。我现在也在学习grib2格式文件的解码,能否给些指导?
解压主程序
void CDecodeGrib2Dlg::OnOK()
{
// TODO: Add extra validation here
unsigned char *cgrib;
g2int listsec0[3],listsec1[13],numlocal,numfields;
long lskip,n,lgrib,iseek;
int unpack,ret,ierr,expand;
gribfield *gfld;
FILE *fptr;
size_t lengrib;
iseek=0;
unpack=1;
expand=1;
fptr=fopen("fnl_20121201_00_00","r");
for (;;)
{
seekgb(fptr,iseek,32000,&lskip,&lgrib);
if (lgrib == 0) break; // end loop at EOF or problem
cgrib=(unsigned char *)malloc(lgrib);
ret=fseek(fptr,lskip,SEEK_SET);
lengrib=fread(cgrib,sizeof(unsigned char),lgrib,fptr);
iseek=lskip+lgrib;
ierr=g2_info(cgrib,listsec0,listsec1,&numfields,&numlocal);
for (n=0;n<numfields;n++)
{
ierr=g2_getfld(cgrib,n+1,unpack,expand,&gfld);
g2_free(gfld);
}
free(cgrib);
}
} |
|