readgrib_b.c
来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· C语言 代码 · 共 72 行
C
72 行
#include "readmessage.h"int readgrib(FILE *fid,int *offset,float **grib_data,int *m,int *n,int *scan,MessageStruct *Mess){ int nReturn; int msg_length; char *curr_ptr=NULL; if (nReturn=grib_seek(fid, &curr_ptr, offset, &msg_length)){ if(nReturn==3) return 1; } init_struct(&Mess->pds,&Mess->gds,&Mess->bms,&Mess->bdsHead); if (nReturn = gribdec1(curr_ptr,&Mess->pds,&Mess->gds,&Mess->bdsHead,&Mess->bms,&grib_data[0])) { prt_err(nReturn); /* Print error code and message */ printf("error=%d----->%d\n",nReturn,Mess->gds.head.usData_type);#ifdef MATLAB_MEX_FILE mexErrMsgTxt("error on MEX-FILE READGRIB\n\n");#else exit(0);#endif } if (Mess->bms.uslength>0) if (nReturn=apply_bitmap(&Mess->bms, &grib_data[0], FILL_VALUE, &Mess->bdsHead)) { prt_err(nReturn); /* Print error code and message */ printf("error=%d----->%d\n",nReturn,Mess->gds.head.usData_type);#ifdef MATLAB_MEX_FILE mexErrMsgTxt("error on MEX-FILE READGRIB\n\n");#else exit(0);#endif } switch(Mess->gds.head.usData_type){ case 0: /* Lat/Lon Grid */ case 4: /* Gaussian Latitude/Longitude grid */ case 10: /* Rotated Lat/Lon */ case 14: /* Rotated Gaussian */ case 20: /* Stretched Lat/Lon */ case 24: /* Stretched Gaussian */ case 30: /* Stretched and Rotated Lat/Lon */ case 34: /* Stretched and Rotated Gaussian */ *n = Mess->gds.llg.usNi; *m = Mess->gds.llg.usNj; *scan=(int)Mess->gds.llg.usScan_mode; break; case 1: /* Mercator Grid */ *n = Mess->gds.merc.cols; *m = Mess->gds.merc.rows; *scan=(int)Mess->gds.merc.usScan_mode; break; case 3: /* Lambert Conformal */ case 8: /* Albers equal-area */ case 13: /* Oblique Lambert Conformal */ *n = Mess->gds.lam.iNx; *m = Mess->gds.lam.iNy; *scan=(int)Mess->gds.lam.usScan_mode; break; case 5: /* Polar Stereographic */ *n = Mess->gds.pol.usNx; *m = Mess->gds.pol.usNy; *scan=(int)Mess->gds.pol.usScan_mode; break; } if(curr_ptr!=NULL){free(curr_ptr);} return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?