#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "grib_api.h"
void usage(char* prog) {
printf("Usage: %s grib_file\n",prog);
exit(1);
}
int main(int argc, char** argv) {
FILE* in = NULL;
int err = 0;
double lat,lon,value,missingValue=0;
int n=0;
char* filename = NULL;
grib_handle *h = NULL;
grib_iterator* iter=NULL;
if (argc != 2) usage(argv[0]);
filename=strdup(argv[1]);
in = fopen(filename,"r");
if(!in) {
printf("ERROR: unable to open file %s\n",filename);
return 1;
}
while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) {
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);
GRIB_CHECK(grib_get_double(h,"missingValue",&missingValue),0);
iter=grib_iterator_new(h,0,&err);
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0);
n = 0;
while(grib_iterator_next(iter,&lat,&lon,&value)) {
printf("- %d - lat=%f lon=%f value=",n,lat,lon);
if (value == missingValue ) printf("missing\n");
else printf("%f\n",value);
n++;
}
grib_iterator_delete(iter);
grib_handle_delete(h);
}
fclose(in);
return 0;
}