00001
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <stdio.h>
00020 #include <stdlib.h>
00021
00022 #include "grib_api.h"
00023
00024 void usage(char* prog) {
00025 printf("usage: %s filename\n",prog);
00026 exit(1);
00027 }
00028
00029 int main(int argc, char** argv) {
00030 int err = 0,i;
00031 double *values = NULL;
00032 double max,min,average;
00033 size_t values_len= 0;
00034
00035 FILE* in = NULL;
00036 char* filename ;
00037 grib_handle *h = NULL;
00038
00039 if (argc<2) usage(argv[0]);
00040 filename=argv[1];
00041
00042 in = fopen(filename,"r");
00043 if(!in) {
00044 printf("ERROR: unable to open file %s\n",filename);
00045 return 1;
00046 }
00047
00048
00049 h = grib_handle_new_from_file(0,in,&err);
00050 if (h == NULL) {
00051 printf("Error: unable to create handle from file %s\n",filename);
00052 }
00053
00054
00055
00056 GRIB_CHECK(grib_get_size(h,"values",&values_len),0);
00057
00058 values = malloc(values_len*sizeof(double));
00059
00060
00061 GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0);
00062
00063 for(i = 0; i < values_len; i++)
00064 printf("%d %.10e\n",i+1,values[i]);
00065
00066 free(values);
00067
00068
00069 GRIB_CHECK(grib_get_double(h,"max",&max),0);
00070 GRIB_CHECK(grib_get_double(h,"min",&min),0);
00071 GRIB_CHECK(grib_get_double(h,"average",&average),0);
00072
00073 printf("%d values found in %s\n",(int)values_len,filename);
00074 printf("max=%.10e min=%.10e average=%.10e\n",max,min,average);
00075
00076 grib_handle_delete(h);
00077
00078 fclose(in);
00079 return 0;
00080 }