ecCodes/ECC-1: made all C examples use the codes_ prefix

This commit is contained in:
Shahram Najm 2014-12-23 10:16:21 +00:00
parent 3cee330d8c
commit f53142e1c2
30 changed files with 480 additions and 481 deletions

View File

@ -8,17 +8,17 @@
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/ */
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
FILE* f; FILE* f;
int err=0; int err=0;
char infile[]="../../data/reduced_gaussian_model_level.grib1"; char infile[]="../../data/reduced_gaussian_model_level.grib1";
grib_handle *h=NULL; codes_handle *h=NULL;
grib_box* box; codes_box* box;
grib_points* points; codes_points* points;
grib_context* c=grib_context_get_default(); codes_context* c=codes_context_get_default();
double north,west,south,east; double north,west,south,east;
double* val; double* val;
int i; int i;
@ -34,23 +34,23 @@ int main(int argc, char* argv[])
exit(1); exit(1);
} }
h=grib_handle_new_from_file(c,f,&err); h=codes_handle_new_from_file(c,f,&err);
if (!h) { if (!h) {
printf("unable to create handle from file %s\n",infile); printf("unable to create handle from file %s\n",infile);
exit(err); exit(err);
} }
box=grib_box_new(h,&err); box=codes_box_new(h,&err);
if (!box) { if (!box) {
printf("unable to create box\n"); printf("unable to create box\n");
exit(err); exit(err);
} }
points=grib_box_get_points(box,north,west,south,east,&err); points=codes_box_get_points(box,north,west,south,east,&err);
val=(double*)malloc(sizeof(double)*points->n); val=(double*)malloc(sizeof(double)*points->n);
grib_points_get_values(h,points,val); codes_points_get_values(h,points,val);
for (i=0;i<points->n;i++) { for (i=0;i<points->n;i++) {
printf("%d -- %.3f %.3f %ld %g\n",i, printf("%d -- %.3f %.3f %ld %g\n",i,

View File

@ -18,7 +18,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include <stdarg.h> #include <stdarg.h>
#include "grib_api.h" #include "eccodes.h"
#define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0) #define STR_EQUAL(s1, s2) (strcmp((s1), (s2)) == 0)
@ -41,7 +41,7 @@ void usage(const char* prog)
void error(const char* fmt, ...) void error(const char* fmt, ...)
{ {
va_list list; va_list list;
va_start(list, fmt); va_start(list,fmt);
vfprintf(stderr, fmt, list); vfprintf(stderr, fmt, list);
va_end(list); va_end(list);
@ -62,7 +62,7 @@ double get_precision(long edition)
int process_file(const char* filename) int process_file(const char* filename)
{ {
int err = 0, msg_num = 0; int err = 0, msg_num = 0;
grib_handle *h = NULL; codes_handle *h = NULL;
FILE* in = fopen(filename, "r"); FILE* in = fopen(filename, "r");
if(!in) { if(!in) {
@ -71,7 +71,7 @@ int process_file(const char* filename)
printf("Checking file %s\n", filename); printf("Checking file %s\n", filename);
while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) while ((h = codes_handle_new_from_file(0,in,&err)) != NULL )
{ {
int is_reduced = 0, is_regular = 0, grid_ok = 0; int is_reduced = 0, is_regular = 0, grid_ok = 0;
long edition = 0, N = 0, Nj = 0, numberOfDataPoints; long edition = 0, N = 0, Nj = 0, numberOfDataPoints;
@ -82,31 +82,31 @@ int process_file(const char* filename)
double angular_tolerance, lat1, lon1, lat2, lon2, expected_lon2; double angular_tolerance, lat1, lon1, lat2, lon2, expected_lon2;
double iDirectionIncrementInDegrees; double iDirectionIncrementInDegrees;
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0); if (err != CODES_SUCCESS) CODES_CHECK(err,0);
++msg_num; ++msg_num;
printf("\tProcessing GRIB message #%d\n", msg_num); printf("\tProcessing GRIB message #%d\n", msg_num);
len = 32; len = 32;
GRIB_CHECK(grib_get_string(h,"gridType",gridType,&len),0); CODES_CHECK(codes_get_string(h,"gridType",gridType,&len),0);
is_regular = STR_EQUAL(gridType, "regular_gg"); is_regular = STR_EQUAL(gridType, "regular_gg");
is_reduced = STR_EQUAL(gridType, "reduced_gg"); is_reduced = STR_EQUAL(gridType, "reduced_gg");
grid_ok = is_regular || is_reduced; grid_ok = is_regular || is_reduced;
if( !grid_ok ) { if( !grid_ok ) {
/*error("ERROR: gridType should be Reduced or Regular Gaussian Grid!\n");*/ /*error("ERROR: gridType should be Reduced or Regular Gaussian Grid!\n");*/
printf("\tWARNING: gridType should be Reduced or Regular Gaussian Grid! Ignoring\n"); printf("\tWARNING: gridType should be Reduced or Regular Gaussian Grid! Ignoring\n");
grib_handle_delete(h); codes_handle_delete(h);
continue; continue;
} }
GRIB_CHECK(grib_get_long(h,"edition",&edition),0); CODES_CHECK(codes_get_long(h,"edition",&edition),0);
GRIB_CHECK(grib_get_long(h,"N",&N),0); CODES_CHECK(codes_get_long(h,"N",&N),0);
GRIB_CHECK(grib_get_long(h,"Nj",&Nj),0); CODES_CHECK(codes_get_long(h,"Nj",&Nj),0);
GRIB_CHECK(grib_get_long(h,"numberOfDataPoints",&numberOfDataPoints),0); CODES_CHECK(codes_get_long(h,"numberOfDataPoints",&numberOfDataPoints),0);
GRIB_CHECK(grib_get_double(h,"latitudeOfFirstGridPointInDegrees", &lat1),0); CODES_CHECK(codes_get_double(h,"latitudeOfFirstGridPointInDegrees", &lat1),0);
GRIB_CHECK(grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&lon1),0); CODES_CHECK(codes_get_double(h,"longitudeOfFirstGridPointInDegrees",&lon1),0);
GRIB_CHECK(grib_get_double(h,"latitudeOfLastGridPointInDegrees", &lat2),0); CODES_CHECK(codes_get_double(h,"latitudeOfLastGridPointInDegrees", &lat2),0);
GRIB_CHECK(grib_get_double(h,"longitudeOfLastGridPointInDegrees", &lon2),0); CODES_CHECK(codes_get_double(h,"longitudeOfLastGridPointInDegrees", &lon2),0);
GRIB_CHECK(grib_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0); CODES_CHECK(codes_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
angular_tolerance = get_precision(edition); angular_tolerance = get_precision(edition);
@ -128,7 +128,7 @@ int process_file(const char* filename)
lat1, lat2); lat1, lat2);
} }
lats = (double*)malloc(sizeof(double)*Nj); lats = (double*)malloc(sizeof(double)*Nj);
GRIB_CHECK(grib_get_gaussian_latitudes(N,lats), 0); CODES_CHECK(codes_get_gaussian_latitudes(N,lats), 0);
if (!DBL_EQUAL(lats[0], lat1, angular_tolerance)) { if (!DBL_EQUAL(lats[0], lat1, angular_tolerance)) {
error("First latitude %f must be %f\n", lat1, lats[0]); error("First latitude %f must be %f\n", lat1, lats[0]);
@ -140,19 +140,19 @@ int process_file(const char* filename)
if (is_reduced) { if (is_reduced) {
int pl_sum = 0; int pl_sum = 0;
size_t i = 0, pl_len = 0; size_t i = 0, pl_len = 0;
int is_missing = grib_is_missing(h, "Ni", &err); int is_missing = codes_is_missing(h, "Ni", &err);
assert(err == GRIB_SUCCESS); assert(err == CODES_SUCCESS);
if (!is_missing) { if (!is_missing) {
error("ERROR: Ni should be missing!\n"); error("ERROR: Ni should be missing!\n");
} }
GRIB_CHECK(grib_get_size(h, "pl", &pl_len),0); CODES_CHECK(codes_get_size(h, "pl", &pl_len),0);
if (pl_len != 2*N) { if (pl_len != 2*N) {
error("ERROR: Length of pl array is %ld but should be 2*N (%ld)!\n", pl_len, 2*N); error("ERROR: Length of pl array is %ld but should be 2*N (%ld)!\n", pl_len, 2*N);
} }
pl = (long*)malloc(pl_len*sizeof(long)); pl = (long*)malloc(pl_len*sizeof(long));
assert(pl); assert(pl);
GRIB_CHECK(grib_get_long_array(h, "pl", pl, &pl_len),0); CODES_CHECK(codes_get_long_array(h, "pl", pl, &pl_len),0);
/* Check pl is symmetric */ /* Check pl is symmetric */
for(i=0; i<pl_len/2; ++i) { for(i=0; i<pl_len/2; ++i) {
@ -174,14 +174,14 @@ int process_file(const char* filename)
free(pl); free(pl);
} }
GRIB_CHECK(grib_get_size(h, "values", &numberOfValues),0); CODES_CHECK(codes_get_size(h, "values", &numberOfValues),0);
if (numberOfValues != numberOfDataPoints) { if (numberOfValues != numberOfDataPoints) {
error("Number of data points %d different from number of values %d\n", error("Number of data points %d different from number of values %d\n",
numberOfDataPoints, numberOfValues); numberOfDataPoints, numberOfValues);
} }
free(lats); free(lats);
grib_handle_delete(h); codes_handle_delete(h);
} }
fclose(in); fclose(in);
printf("\nFile %s OK\n\n", filename); printf("\nFile %s OK\n\n", filename);

View File

@ -16,7 +16,7 @@
* *
*/ */
#include <stdio.h> #include <stdio.h>
#include "grib_api.h" #include "eccodes.h"
void usage(char *app) void usage(char *app)
{ {
@ -27,7 +27,7 @@ int main(int argc, char *argv[])
{ {
FILE *in = NULL; FILE *in = NULL;
FILE *out = NULL; FILE *out = NULL;
grib_handle *source_handle = NULL; codes_handle *source_handle = NULL;
const void *buffer = NULL; const void *buffer = NULL;
size_t size = 0; size_t size = 0;
int err = 0; int err = 0;
@ -48,9 +48,9 @@ int main(int argc, char *argv[])
} }
/* loop over the messages in the source grib and clone them */ /* loop over the messages in the source grib and clone them */
while ((source_handle = grib_handle_new_from_file(0,in,&err))!=NULL) while ((source_handle = codes_handle_new_from_file(0,in,&err))!=NULL)
{ {
grib_handle *clone_handle = grib_handle_clone(source_handle); codes_handle *clone_handle = codes_handle_clone(source_handle);
if (clone_handle == NULL) { if (clone_handle == NULL) {
perror("ERROR: could not clone field"); perror("ERROR: could not clone field");
@ -59,19 +59,19 @@ int main(int argc, char *argv[])
/* This is the place where you may wish to modify the clone */ /* This is the place where you may wish to modify the clone */
/* E.g. /* E.g.
GRIB_CHECK(grib_set_long(clone_handle, "centre", 250),0); CODES_CHECK(codes_set_long(clone_handle, "centre", 250),0);
etc... etc...
*/ */
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(clone_handle,&buffer,&size),0); CODES_CHECK(codes_get_message(clone_handle,&buffer,&size),0);
/* write the buffer to a file */ /* write the buffer to a file */
if(fwrite(buffer,1,size,out) != size) { if(fwrite(buffer,1,size,out) != size) {
perror(argv[1]); perror(argv[1]);
return 1; return 1;
} }
grib_handle_delete(clone_handle); codes_handle_delete(clone_handle);
grib_handle_delete(source_handle); codes_handle_delete(source_handle);
} }
fclose(out); fclose(out);

View File

@ -15,7 +15,7 @@
* *
*/ */
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char * argv[]) int main(int argc, char * argv[])
{ {
@ -28,47 +28,47 @@ int main(int argc, char * argv[])
double* values; double* values;
double* result=NULL; double* result=NULL;
double min=1e13,max=-1e13,avg=0; double min=1e13,max=-1e13,avg=0;
grib_index* index; codes_index* index;
grib_handle* h=NULL; codes_handle* h=NULL;
/* create index of file contents for paramId and number */ /* create index of file contents for paramId and number */
index = grib_index_new_from_file(0, "eps", "paramId,number",&ret); index = codes_index_new_from_file(0, "eps", "paramId,number",&ret);
GRIB_CHECK(ret,0); CODES_CHECK(ret,0);
/* get size of "paramId" list */ /* get size of "paramId" list */
GRIB_CHECK(grib_index_get_size(index, "paramId", &paramIdSize),0); CODES_CHECK(codes_index_get_size(index, "paramId", &paramIdSize),0);
printf("grib contains %ld different parameters\n",paramIdSize); printf("grib contains %ld different parameters\n",paramIdSize);
/* allocate memory for "paramId" list */ /* allocate memory for "paramId" list */
paramId = (char**) malloc(paramIdSize * sizeof(char*)); paramId = (char**) malloc(paramIdSize * sizeof(char*));
/* get list of "paramId" */ /* get list of "paramId" */
GRIB_CHECK(grib_index_get_string(index, "paramId", paramId, &paramIdSize),0); CODES_CHECK(codes_index_get_string(index, "paramId", paramId, &paramIdSize),0);
/* get size of ensemble number list */ /* get size of ensemble number list */
GRIB_CHECK(grib_index_get_size(index, "number", &numberSize),0); CODES_CHECK(codes_index_get_size(index, "number", &numberSize),0);
printf("GRIB contains %ld different ensemble members\n",numberSize); printf("GRIB contains %ld different ensemble members\n",numberSize);
/* allocate memory for ensemble number list */ /* allocate memory for ensemble number list */
number = (long*) malloc(numberSize * sizeof(long)); number = (long*) malloc(numberSize * sizeof(long));
/* get list of ensemble numbers */ /* get list of ensemble numbers */
GRIB_CHECK(grib_index_get_long(index, "number", number, &numberSize),0); CODES_CHECK(codes_index_get_long(index, "number", number, &numberSize),0);
/* select T850 with paramId 130 */ /* select T850 with paramId 130 */
GRIB_CHECK(grib_index_select_string(index, "paramId", "130"), 0); CODES_CHECK(codes_index_select_string(index, "paramId", "130"), 0);
/* loop over all members */ /* loop over all members */
for (i = 0; i < numberSize; i++) { for (i = 0; i < numberSize; i++) {
count++; count++;
/* select an individual ensemble number */ /* select an individual ensemble number */
GRIB_CHECK(grib_index_select_long(index, "number", number[i]), 0); CODES_CHECK(codes_index_select_long(index, "number", number[i]), 0);
/* create handle for next GRIB message */ /* create handle for next GRIB message */
h=grib_handle_new_from_index(index, &ret); h=codes_handle_new_from_index(index, &ret);
if (ret) { if (ret) {
printf("Error: %s\n", grib_get_error_message(ret)); printf("Error: %s\n", codes_get_error_message(ret));
exit(ret); exit(ret);
} }
/* get the size of the values array */ /* get the size of the values array */
GRIB_CHECK(grib_get_size(h, "values", &values_len), 0); CODES_CHECK(codes_get_size(h, "values", &values_len), 0);
/* allocate memory for the GRIB message */ /* allocate memory for the GRIB message */
values = (double*)malloc(values_len * sizeof(double)); values = (double*)malloc(values_len * sizeof(double));
@ -79,7 +79,7 @@ int main(int argc, char * argv[])
} }
/* get data values */ /* get data values */
GRIB_CHECK(grib_get_double_array(h, "values", values, &values_len), 0); CODES_CHECK(codes_get_double_array(h, "values", values, &values_len), 0);
/* add up values */ /* add up values */
for (j = 0; j < values_len; j++) for (j = 0; j < values_len; j++)
@ -87,7 +87,7 @@ int main(int argc, char * argv[])
/* free memory and GRIB message handle */ /* free memory and GRIB message handle */
free(values); free(values);
GRIB_CHECK(grib_handle_delete(h), 0); CODES_CHECK(codes_handle_delete(h), 0);
} }
printf("We considered %d ensemble members\n", count); printf("We considered %d ensemble members\n", count);
@ -117,7 +117,7 @@ int main(int argc, char * argv[])
free(paramId); free(paramId);
free(number); free(number);
free(result); free(result);
grib_index_delete(index); codes_index_delete(index);
return 0; return 0;
} }

View File

@ -19,7 +19,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "grib_api.h" #include "eccodes.h"
void usage(char* prog) { void usage(char* prog) {
printf("Usage: %s order_by grib_file grib_file ...\n",prog); printf("Usage: %s order_by grib_file grib_file ...\n",prog);
@ -34,8 +34,8 @@ int main(int argc, char** argv)
size_t nkeys,nfiles; size_t nkeys,nfiles;
int i=0; int i=0;
char* keys[]={"step","date","param","levelType"}; char* keys[]={"step","date","param","levelType"};
grib_fieldset* set; codes_fieldset* set;
grib_handle* h; codes_handle* h;
char param[20]={0,}; char param[20]={0,};
char date[10]={0,}; char date[10]={0,};
size_t datelen=10; size_t datelen=10;
@ -52,31 +52,31 @@ int main(int argc, char** argv)
for (i=0;i<nfiles;i++) for (i=0;i<nfiles;i++)
filenames[i]=(char*)strdup(argv[i+2]); filenames[i]=(char*)strdup(argv[i+2]);
set=grib_fieldset_new_from_files(0,filenames,nfiles,keys,nkeys,0,0,&err); set=codes_fieldset_new_from_files(0,filenames,nfiles,keys,nkeys,0,0,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
/* not jet implemented */ /* not jet implemented */
/* err=grib_fieldset_apply_where(set,"(centre=='ecmf') && number==1 || step==6 "); */ /* err=codes_fieldset_apply_where(set,"(centre=='ecmf') && number==1 || step==6 "); */
/* GRIB_CHECK(err,0); */ /* CODES_CHECK(err,0); */
grib_fieldset_apply_order_by(set,order_by); codes_fieldset_apply_order_by(set,order_by);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
printf("\nordering by %s\n",order_by); printf("\nordering by %s\n",order_by);
printf("\n%d fields in the fieldset\n",grib_fieldset_count(set)); printf("\n%d fields in the fieldset\n",codes_fieldset_count(set));
printf("step,date,levelType,levelType\n"); printf("step,date,levelType,levelType\n");
while ((h=grib_fieldset_next_handle(set,&err))!=NULL) { while ((h=codes_fieldset_next_handle(set,&err))!=NULL) {
GRIB_CHECK(grib_get_long(h,"step",&step),0); CODES_CHECK(codes_get_long(h,"step",&step),0);
GRIB_CHECK(grib_get_string(h,"date",date,&datelen),0); CODES_CHECK(codes_get_string(h,"date",date,&datelen),0);
GRIB_CHECK(grib_get_string(h,"param",param,&len),0); CODES_CHECK(codes_get_string(h,"param",param,&len),0);
GRIB_CHECK(grib_get_long(h,"levelType",&levelType),0); CODES_CHECK(codes_get_long(h,"levelType",&levelType),0);
printf("%ld %s %ld %s\n",step,date,levelType,param); printf("%ld %s %ld %s\n",step,date,levelType,param);
grib_handle_delete(h); codes_handle_delete(h);
} }
grib_fieldset_delete(set); codes_fieldset_delete(set);
grib_handle_delete(h); codes_handle_delete(h);
return 0; return 0;
} }

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -42,7 +42,7 @@ int main(int argc, char** argv)
FILE* in = NULL; FILE* in = NULL;
const char* filename = "../../data/regular_latlon_surface.grib1"; const char* filename = "../../data/regular_latlon_surface.grib1";
grib_handle *h = NULL; codes_handle *h = NULL;
in = fopen(filename,"r"); in = fopen(filename,"r");
if(!in) { if(!in) {
@ -51,61 +51,61 @@ int main(int argc, char** argv)
} }
/* create new handle from a message in a file*/ /* create new handle from a message in a file*/
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",filename); printf("Error: unable to create handle from file %s\n",filename);
} }
/* Store the filename in the key "file" for this handle */ /* Store the filename in the key "file" for this handle */
len = strlen(filename); len = strlen(filename);
GRIB_CHECK(grib_set_string(h, "file", filename, &len), 0); CODES_CHECK(codes_set_string(h, "file", filename, &len), 0);
/* get as a long*/ /* get as a long*/
GRIB_CHECK(grib_get_long(h,"Ni",&numberOfPointsAlongAParallel),0); CODES_CHECK(codes_get_long(h,"Ni",&numberOfPointsAlongAParallel),0);
printf("numberOfPointsAlongAParallel=%ld\n",numberOfPointsAlongAParallel); printf("numberOfPointsAlongAParallel=%ld\n",numberOfPointsAlongAParallel);
/* get as a long*/ /* get as a long*/
GRIB_CHECK(grib_get_long(h,"Nj",&numberOfPointsAlongAMeridian),0); CODES_CHECK(codes_get_long(h,"Nj",&numberOfPointsAlongAMeridian),0);
printf("numberOfPointsAlongAMeridian=%ld\n",numberOfPointsAlongAMeridian); printf("numberOfPointsAlongAMeridian=%ld\n",numberOfPointsAlongAMeridian);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPointInDegrees),0); CODES_CHECK(codes_get_double(h,"latitudeOfFirstGridPointInDegrees",&latitudeOfFirstGridPointInDegrees),0);
printf("latitudeOfFirstGridPointInDegrees=%g\n",latitudeOfFirstGridPointInDegrees); printf("latitudeOfFirstGridPointInDegrees=%g\n",latitudeOfFirstGridPointInDegrees);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPointInDegrees),0); CODES_CHECK(codes_get_double(h,"longitudeOfFirstGridPointInDegrees",&longitudeOfFirstGridPointInDegrees),0);
printf("longitudeOfFirstGridPointInDegrees=%g\n",longitudeOfFirstGridPointInDegrees); printf("longitudeOfFirstGridPointInDegrees=%g\n",longitudeOfFirstGridPointInDegrees);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPointInDegrees),0); CODES_CHECK(codes_get_double(h,"latitudeOfLastGridPointInDegrees",&latitudeOfLastGridPointInDegrees),0);
printf("latitudeOfLastGridPointInDegrees=%g\n",latitudeOfLastGridPointInDegrees); printf("latitudeOfLastGridPointInDegrees=%g\n",latitudeOfLastGridPointInDegrees);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPointInDegrees),0); CODES_CHECK(codes_get_double(h,"longitudeOfLastGridPointInDegrees",&longitudeOfLastGridPointInDegrees),0);
printf("longitudeOfLastGridPointInDegrees=%g\n",longitudeOfLastGridPointInDegrees); printf("longitudeOfLastGridPointInDegrees=%g\n",longitudeOfLastGridPointInDegrees);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"jDirectionIncrementInDegrees",&jDirectionIncrementInDegrees),0); CODES_CHECK(codes_get_double(h,"jDirectionIncrementInDegrees",&jDirectionIncrementInDegrees),0);
printf("jDirectionIncrementInDegrees=%g\n",jDirectionIncrementInDegrees); printf("jDirectionIncrementInDegrees=%g\n",jDirectionIncrementInDegrees);
/* get as a double*/ /* get as a double*/
GRIB_CHECK(grib_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0); CODES_CHECK(codes_get_double(h,"iDirectionIncrementInDegrees",&iDirectionIncrementInDegrees),0);
printf("iDirectionIncrementInDegrees=%g\n",iDirectionIncrementInDegrees); printf("iDirectionIncrementInDegrees=%g\n",iDirectionIncrementInDegrees);
/* get as string */ /* get as string */
GRIB_CHECK(grib_get_length(h, "packingType", &len), 0); CODES_CHECK(codes_get_length(h, "packingType", &len), 0);
packingType = (char*)malloc(len*sizeof(char)); packingType = (char*)malloc(len*sizeof(char));
grib_get_string(h, "packingType", packingType, &len); codes_get_string(h, "packingType", packingType, &len);
printf("packingType=%s\n", packingType); printf("packingType=%s\n", packingType);
free(packingType); free(packingType);
/* get the size of the values array*/ /* get the size of the values array*/
GRIB_CHECK(grib_get_size(h,"values",&values_len),0); CODES_CHECK(codes_get_size(h,"values",&values_len),0);
values = (double*)malloc(values_len*sizeof(double)); values = (double*)malloc(values_len*sizeof(double));
/* get data values*/ /* get data values*/
GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0); CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
average = 0; average = 0;
for(i = 0; i < values_len; i++) for(i = 0; i < values_len; i++)
@ -121,14 +121,14 @@ int main(int argc, char** argv)
int eq = 0; int eq = 0;
/* Now retrieve the value of the key "file" */ /* Now retrieve the value of the key "file" */
char file[256]={0,}; char file[256]={0,};
GRIB_CHECK(grib_get_length(h, "file", &len),0); CODES_CHECK(codes_get_length(h, "file", &len),0);
assert(len == 1+strlen(filename)); assert(len == 1+strlen(filename));
grib_get_string(h, "file", file, &len); codes_get_string(h, "file", file, &len);
eq = strcmp(file, filename); eq = strcmp(file, filename);
assert( eq == 0 ); assert( eq == 0 );
} }
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
return 0; return 0;
} }

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
int main (int argc, char **argv) int main (int argc, char **argv)
{ {
@ -25,7 +25,7 @@ int main (int argc, char **argv)
size_t i = 0; size_t i = 0;
FILE *in = NULL; FILE *in = NULL;
const char *filename = "../../data/reduced_latlon_surface.grib1"; const char *filename = "../../data/reduced_latlon_surface.grib1";
grib_handle *h = NULL; codes_handle *h = NULL;
long numberOfPoints = 0; long numberOfPoints = 0;
const double missing = 9999.0; const double missing = 9999.0;
double *lats, *lons, *values; /* arrays */ double *lats, *lons, *values; /* arrays */
@ -37,14 +37,14 @@ int main (int argc, char **argv)
} }
/* create new handle from a message in a file */ /* create new handle from a message in a file */
h = grib_handle_new_from_file (0, in, &err); h = codes_handle_new_from_file (0, in, &err);
if (h == NULL) { if (h == NULL) {
printf ("Error: unable to create handle from file %s\n", filename); printf ("Error: unable to create handle from file %s\n", filename);
return 1; return 1;
} }
GRIB_CHECK (grib_get_long (h, "numberOfPoints", &numberOfPoints), 0); CODES_CHECK (codes_get_long (h, "numberOfPoints", &numberOfPoints), 0);
GRIB_CHECK (grib_set_double (h, "missingValue", missing), 0); CODES_CHECK (codes_set_double (h, "missingValue", missing), 0);
lats = (double *) malloc (numberOfPoints * sizeof (double)); lats = (double *) malloc (numberOfPoints * sizeof (double));
if (!lats) { if (!lats) {
@ -65,7 +65,7 @@ int main (int argc, char **argv)
return 1; return 1;
} }
GRIB_CHECK (grib_get_data (h, lats, lons, values, NULL), 0); CODES_CHECK (codes_get_data (h, lats, lons, values, NULL), 0);
for (i = 0; i < numberOfPoints; ++i) { for (i = 0; i < numberOfPoints; ++i) {
if (values[i] != missing) { if (values[i] != missing) {
@ -76,7 +76,7 @@ int main (int argc, char **argv)
free (lats); free (lats);
free (lons); free (lons);
free (values); free (values);
grib_handle_delete (h); codes_handle_delete (h);
fclose (in); fclose (in);
return 0; return 0;

View File

@ -23,7 +23,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("usage: %s filename\n",prog); printf("usage: %s filename\n",prog);
@ -39,7 +39,7 @@ int main(int argc, char** argv)
FILE* in = NULL; FILE* in = NULL;
char* filename ; char* filename ;
grib_handle *h = NULL; codes_handle *h = NULL;
if (argc<2) usage(argv[0]); if (argc<2) usage(argv[0]);
filename=argv[1]; filename=argv[1];
@ -51,22 +51,22 @@ int main(int argc, char** argv)
} }
/* create new handle from a message in a file*/ /* create new handle from a message in a file*/
while((h = grib_handle_new_from_file(0,f,&err)) != NULL) { while((h = codes_handle_new_from_file(0,f,&err)) != NULL) {
/* get the size of the values array*/ /* get the size of the values array*/
GRIB_CHECK(grib_get_size(h,"values",&values_len),0); CODES_CHECK(codes_get_size(h,"values",&values_len),0);
values = malloc(values_len*sizeof(double)); values = malloc(values_len*sizeof(double));
/* get data values*/ /* get data values*/
GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0); CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
for(i = 0; i < values_len; i++) for(i = 0; i < values_len; i++)
printf("%d %.10e\n",i+1,values[i]); printf("%d %.10e\n",i+1,values[i]);
free(values); free(values);
grib_handle_delete(h); codes_handle_delete(h);
} }
fclose(in); fclose(in);

View File

@ -19,7 +19,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("Usage: %s grib_file\n",prog); printf("Usage: %s grib_file\n",prog);
@ -35,9 +35,9 @@ int main(int argc, char** argv)
char* filename = NULL; char* filename = NULL;
/* Message handle. Required in all the grib_api calls acting on a message.*/ /* Message handle. Required in all the grib_api calls acting on a message.*/
grib_handle *h = NULL; codes_handle *h = NULL;
/* Iterator on lat/lon/values.*/ /* Iterator on lat/lon/values.*/
grib_iterator* iter=NULL; codes_iterator* iter=NULL;
if (argc != 2) usage(argv[0]); if (argc != 2) usage(argv[0]);
@ -50,20 +50,20 @@ int main(int argc, char** argv)
} }
/* Loop on all the messages in a file.*/ /* Loop on all the messages in a file.*/
while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) { while ((h = codes_handle_new_from_file(0,in,&err)) != NULL ) {
/* Check of errors after reading a message. */ /* Check of errors after reading a message. */
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0); if (err != CODES_SUCCESS) CODES_CHECK(err,0);
/* Get the double representing the missing value in the field. */ /* Get the double representing the missing value in the field. */
GRIB_CHECK(grib_get_double(h,"missingValue",&missingValue),0); CODES_CHECK(codes_get_double(h,"missingValue",&missingValue),0);
/* A new iterator on lat/lon/values is created from the message handle h. */ /* A new iterator on lat/lon/values is created from the message handle h. */
iter=grib_iterator_new(h,0,&err); iter=codes_iterator_new(h,0,&err);
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0); if (err != CODES_SUCCESS) CODES_CHECK(err,0);
n = 0; n = 0;
/* Loop on all the lat/lon/values. */ /* Loop on all the lat/lon/values. */
while(grib_iterator_next(iter,&lat,&lon,&value)) { while(codes_iterator_next(iter,&lat,&lon,&value)) {
/* You can now print lat and lon, */ /* You can now print lat and lon, */
printf("- %d - lat=%f lon=%f value=",n,lat,lon); printf("- %d - lat=%f lon=%f value=",n,lat,lon);
/* decide what to print if a missing value is found. */ /* decide what to print if a missing value is found. */
@ -74,10 +74,10 @@ int main(int argc, char** argv)
} }
/* At the end the iterator is deleted to free memory. */ /* At the end the iterator is deleted to free memory. */
grib_iterator_delete(iter); codes_iterator_delete(iter);
/* At the end the grib_handle is deleted to free memory. */ /* At the end the codes_handle is deleted to free memory. */
grib_handle_delete(h); codes_handle_delete(h);
} }
fclose(in); fclose(in);

View File

@ -18,7 +18,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
void usage(char* prog) void usage(char* prog)
{ {
@ -37,8 +37,8 @@ int main(int argc, char** argv)
long bitmapPresent = 0; long bitmapPresent = 0;
long *bitmap = NULL; long *bitmap = NULL;
double *values = NULL; double *values = NULL;
grib_handle *h = NULL; codes_handle *h = NULL;
grib_iterator* iter=NULL; codes_iterator* iter=NULL;
if (argc != 2) usage(argv[0]); if (argc != 2) usage(argv[0]);
filename=argv[1]; filename=argv[1];
@ -48,33 +48,33 @@ int main(int argc, char** argv)
return 1; return 1;
} }
while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) while ((h = codes_handle_new_from_file(0,in,&err)) != NULL )
{ {
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0); if (err != CODES_SUCCESS) CODES_CHECK(err,0);
GRIB_CHECK(grib_get_long(h,"bitmapPresent",&bitmapPresent),0); CODES_CHECK(codes_get_long(h,"bitmapPresent",&bitmapPresent),0);
if (bitmapPresent) if (bitmapPresent)
{ {
GRIB_CHECK(grib_get_size(h,"bitmap",&bmp_len),0); CODES_CHECK(codes_get_size(h,"bitmap",&bmp_len),0);
bitmap = (long*)malloc(bmp_len*sizeof(long)); bitmap = (long*)malloc(bmp_len*sizeof(long));
GRIB_CHECK(grib_get_long_array(h,"bitmap",bitmap,&bmp_len),0); CODES_CHECK(codes_get_long_array(h,"bitmap",bitmap,&bmp_len),0);
printf("Bitmap is present. Num = %ld\n", bmp_len); printf("Bitmap is present. Num = %ld\n", bmp_len);
} }
/* Sanity check. Number of values must match number in bitmap */ /* Sanity check. Number of values must match number in bitmap */
GRIB_CHECK(grib_get_size(h,"values",&values_len),0); CODES_CHECK(codes_get_size(h,"values",&values_len),0);
values = (double*)malloc(values_len*sizeof(double)); values = (double*)malloc(values_len*sizeof(double));
GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0); CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
if (bitmapPresent) { if (bitmapPresent) {
assert(values_len==bmp_len); assert(values_len==bmp_len);
} }
/* A new iterator on lat/lon/values is created from the message handle h */ /* A new iterator on lat/lon/values is created from the message handle h */
iter=grib_iterator_new(h,0,&err); iter=codes_iterator_new(h,0,&err);
if (err != GRIB_SUCCESS) GRIB_CHECK(err,0); if (err != CODES_SUCCESS) CODES_CHECK(err,0);
n = 0; n = 0;
/* Loop on all the lat/lon/values. Only print non-missing values */ /* Loop on all the lat/lon/values. Only print non-missing values */
while(grib_iterator_next(iter,&lat,&lon,&value)) while(codes_iterator_next(iter,&lat,&lon,&value))
{ {
int is_missing_val = (bitmapPresent && bitmap[n] == 0); int is_missing_val = (bitmapPresent && bitmap[n] == 0);
if (!is_missing_val) { if (!is_missing_val) {
@ -85,8 +85,8 @@ int main(int argc, char** argv)
/* Check number of elements in iterator matches value count */ /* Check number of elements in iterator matches value count */
assert(n == values_len); assert(n == values_len);
grib_iterator_delete(iter); codes_iterator_delete(iter);
grib_handle_delete(h); codes_handle_delete(h);
} }
fclose(in); fclose(in);

View File

@ -13,7 +13,7 @@
* *
* Description: * Description:
* Example on how to use keys_iterator functions and the * Example on how to use keys_iterator functions and the
* grib_keys_iterator structure to get all the available * codes_keys_iterator structure to get all the available
* keys in a message. * keys in a message.
* *
*/ */
@ -24,7 +24,7 @@
#include <unistd.h> #include <unistd.h>
#include <string.h> #include <string.h>
#include "grib_api.h" #include "eccodes.h"
#define MAX_KEY_LEN 255 #define MAX_KEY_LEN 255
#define MAX_VAL_LEN 1024 #define MAX_VAL_LEN 1024
@ -34,10 +34,10 @@ static void usage(char* progname);
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
/* To skip read only and not coded keys /* To skip read only and not coded keys
unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_SKIP_READ_ONLY || unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_SKIP_READ_ONLY ||
GRIB_KEYS_ITERATOR_SKIP_COMPUTED; CODES_KEYS_ITERATOR_SKIP_COMPUTED;
*/ */
unsigned long key_iterator_filter_flags=GRIB_KEYS_ITERATOR_ALL_KEYS; unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_ALL_KEYS;
/* Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" */ /* Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" */
char* name_space="ls"; char* name_space="ls";
@ -46,10 +46,10 @@ int main(int argc, char *argv[])
/* char* name_space=0; */ /* char* name_space=0; */
FILE* f; FILE* f;
grib_handle* h=NULL; codes_handle* h=NULL;
int err=0; int err=0;
int grib_count=0; int msg_count=0;
char value[MAX_VAL_LEN]; char value[MAX_VAL_LEN];
size_t vlen=MAX_VAL_LEN; size_t vlen=MAX_VAL_LEN;
@ -62,36 +62,36 @@ int main(int argc, char *argv[])
exit(1); exit(1);
} }
while((h = grib_handle_new_from_file(0,f,&err)) != NULL) while((h = codes_handle_new_from_file(0,f,&err)) != NULL)
{ {
grib_keys_iterator* kiter=NULL; codes_keys_iterator* kiter=NULL;
grib_count++; msg_count++;
printf("-- GRIB N. %d --\n",grib_count); printf("-- GRIB N. %d --\n",msg_count);
if(!h) { if(!h) {
printf("ERROR: Unable to create grib handle\n"); printf("ERROR: Unable to create grib handle\n");
exit(1); exit(1);
} }
kiter=grib_keys_iterator_new(h,key_iterator_filter_flags,name_space); kiter=codes_keys_iterator_new(h,key_iterator_filter_flags,name_space);
if (!kiter) { if (!kiter) {
printf("ERROR: Unable to create keys iterator\n"); printf("ERROR: Unable to create keys iterator\n");
exit(1); exit(1);
} }
while(grib_keys_iterator_next(kiter)) while(codes_keys_iterator_next(kiter))
{ {
const char* name = grib_keys_iterator_get_name(kiter); const char* name = codes_keys_iterator_get_name(kiter);
vlen=MAX_VAL_LEN; vlen=MAX_VAL_LEN;
bzero(value,vlen); bzero(value,vlen);
GRIB_CHECK(grib_get_string(h,name,value,&vlen),name); CODES_CHECK(codes_get_string(h,name,value,&vlen),name);
printf("%s = %s\n",name,value); printf("%s = %s\n",name,value);
/* Alternative way of getting the string value */ /* Alternative way of getting the string value */
GRIB_CHECK(grib_keys_iterator_get_string(kiter, value, &vlen),0); CODES_CHECK(codes_keys_iterator_get_string(kiter, value, &vlen),0);
} }
grib_keys_iterator_delete(kiter); codes_keys_iterator_delete(kiter);
grib_handle_delete(h); codes_handle_delete(h);
} }
return 0; return 0;

View File

@ -10,7 +10,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
/* See JIRA issue GRIB-361 */ /* See JIRA issue GRIB-361 */
int main() int main()
@ -19,7 +19,7 @@ int main()
const int nj = 2880; const int nj = 2880;
double *values; double *values;
int i = 0; int i = 0;
grib_handle *h = NULL; codes_handle *h = NULL;
char* filename = "bigfile.grib"; char* filename = "bigfile.grib";
values = (double*) malloc(ni*nj*sizeof(double)); values = (double*) malloc(ni*nj*sizeof(double));
@ -33,39 +33,39 @@ int main()
values[i] = 10*rand; values[i] = 10*rand;
} }
h = grib_handle_new_from_samples(0, "GRIB1"); h = codes_handle_new_from_samples(0, "GRIB1");
GRIB_CHECK(grib_set_long(h, "Ni", ni), 0); CODES_CHECK(codes_set_long(h, "Ni", ni), 0);
GRIB_CHECK(grib_set_long(h, "Nj", nj), 0); CODES_CHECK(codes_set_long(h, "Nj", nj), 0);
GRIB_CHECK(grib_set_long(h, "centre", 86), 0); CODES_CHECK(codes_set_long(h, "centre", 86), 0);
GRIB_CHECK(grib_set_long(h, "process", 100), 0); CODES_CHECK(codes_set_long(h, "process", 100), 0);
GRIB_CHECK(grib_set_long(h, "indicatorOfTypeOfLevel", 105), 0); CODES_CHECK(codes_set_long(h, "indicatorOfTypeOfLevel", 105), 0);
GRIB_CHECK(grib_set_long(h, "level", 2), 0); CODES_CHECK(codes_set_long(h, "level", 2), 0);
GRIB_CHECK(grib_set_long(h, "indicatorOfParameter", 1), 0); CODES_CHECK(codes_set_long(h, "indicatorOfParameter", 1), 0);
GRIB_CHECK(grib_set_long(h, "table2Version", 1), 0); CODES_CHECK(codes_set_long(h, "table2Version", 1), 0);
GRIB_CHECK(grib_set_long(h, "dataDate", 20130424), 0); CODES_CHECK(codes_set_long(h, "dataDate", 20130424), 0);
GRIB_CHECK(grib_set_long(h, "dataTime", 0), 0); CODES_CHECK(codes_set_long(h, "dataTime", 0), 0);
GRIB_CHECK(grib_set_long(h, "startStep", 0), 0); CODES_CHECK(codes_set_long(h, "startStep", 0), 0);
GRIB_CHECK(grib_set_long(h, "endStep", 0), 0); CODES_CHECK(codes_set_long(h, "endStep", 0), 0);
GRIB_CHECK(grib_set_long(h, "bitmapPresent", 1), 0); CODES_CHECK(codes_set_long(h, "bitmapPresent", 1), 0);
GRIB_CHECK(grib_set_double(h, "iDirectionIncrementInDegrees", 0.125), 0); CODES_CHECK(codes_set_double(h, "iDirectionIncrementInDegrees", 0.125), 0);
GRIB_CHECK(grib_set_double(h, "jDirectionIncrementInDegrees", 0.125), 0); CODES_CHECK(codes_set_double(h, "jDirectionIncrementInDegrees", 0.125), 0);
GRIB_CHECK(grib_set_long(h, "iScansNegatively", 0), 0); CODES_CHECK(codes_set_long(h, "iScansNegatively", 0), 0);
GRIB_CHECK(grib_set_long(h, "jScansPositively", 1), 0); CODES_CHECK(codes_set_long(h, "jScansPositively", 1), 0);
GRIB_CHECK(grib_set_double(h, "latitudeOfFirstGridPointInDegrees", -90), 0); CODES_CHECK(codes_set_double(h, "latitudeOfFirstGridPointInDegrees", -90), 0);
GRIB_CHECK(grib_set_double(h, "latitudeOfLastGridPointInDegrees", 90), 0); CODES_CHECK(codes_set_double(h, "latitudeOfLastGridPointInDegrees", 90), 0);
GRIB_CHECK(grib_set_double(h, "longitudeOfFirstGridPointInDegrees", -180), 0); CODES_CHECK(codes_set_double(h, "longitudeOfFirstGridPointInDegrees", -180), 0);
GRIB_CHECK(grib_set_double(h, "longitudeOfLastGridPointInDegrees", 180), 0); CODES_CHECK(codes_set_double(h, "longitudeOfLastGridPointInDegrees", 180), 0);
GRIB_CHECK(grib_set_double_array(h, "values", values, ni*nj), 0); CODES_CHECK(codes_set_double_array(h, "values", values, ni*nj), 0);
grib_write_message(h, filename, "w"); codes_write_message(h, filename, "w");
/*printf("Wrote file %s\n", filename);*/ /*printf("Wrote file %s\n", filename);*/
grib_handle_delete(h); codes_handle_delete(h);
free (values); free (values);
return 0; return 0;

View File

@ -18,7 +18,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -34,7 +34,7 @@ int main(int argc, char** argv)
FILE* in = NULL; FILE* in = NULL;
char* filename = "../../data/satellite.grib"; char* filename = "../../data/satellite.grib";
grib_handle *h = NULL; codes_handle *h = NULL;
in = fopen(filename,"r"); in = fopen(filename,"r");
if(!in) { if(!in) {
@ -43,34 +43,34 @@ int main(int argc, char** argv)
} }
/* create new handle from a message in a file*/ /* create new handle from a message in a file*/
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",filename); printf("Error: unable to create handle from file %s\n",filename);
} }
GRIB_CHECK(grib_get_long(h,"numberOfContributingSpectralBands",&numberOfContributingSpectralBands),0); CODES_CHECK(codes_get_long(h,"numberOfContributingSpectralBands",&numberOfContributingSpectralBands),0);
assert(numberOfContributingSpectralBands == 3); assert(numberOfContributingSpectralBands == 3);
/* Shrink NB to 2 */ /* Shrink NB to 2 */
numberOfContributingSpectralBands = 2; numberOfContributingSpectralBands = 2;
GRIB_CHECK(grib_set_long(h,"numberOfContributingSpectralBands",numberOfContributingSpectralBands),0); CODES_CHECK(codes_set_long(h,"numberOfContributingSpectralBands",numberOfContributingSpectralBands),0);
/* Expand NB to 9 */ /* Expand NB to 9 */
numberOfContributingSpectralBands = 9; numberOfContributingSpectralBands = 9;
GRIB_CHECK(grib_set_long(h,"numberOfContributingSpectralBands",numberOfContributingSpectralBands),0); CODES_CHECK(codes_set_long(h,"numberOfContributingSpectralBands",numberOfContributingSpectralBands),0);
/* get as a long*/ /* get as a long*/
GRIB_CHECK(grib_get_long(h,"numberOfContributingSpectralBands",&numberOfContributingSpectralBands),0); CODES_CHECK(codes_get_long(h,"numberOfContributingSpectralBands",&numberOfContributingSpectralBands),0);
printf("numberOfContributingSpectralBands=%ld\n",numberOfContributingSpectralBands); printf("numberOfContributingSpectralBands=%ld\n",numberOfContributingSpectralBands);
/* get as a long*/ /* get as a long*/
GRIB_CHECK(grib_get_size(h,"scaledValueOfCentralWaveNumber",&count),0); CODES_CHECK(codes_get_size(h,"scaledValueOfCentralWaveNumber",&count),0);
printf("count=%ld\n",(long)count); printf("count=%ld\n",(long)count);
assert(count < sizeof(values)/sizeof(values[0])); assert(count < sizeof(values)/sizeof(values[0]));
size = count; size = count;
GRIB_CHECK(grib_get_long_array(h,"scaledValueOfCentralWaveNumber",values,&size),0); CODES_CHECK(codes_get_long_array(h,"scaledValueOfCentralWaveNumber",values,&size),0);
assert(size == count); assert(size == count);
for(i=0;i<count;i++) { for(i=0;i<count;i++) {
@ -84,18 +84,18 @@ int main(int argc, char** argv)
size = count; size = count;
/* size--; */ /* size--; */
GRIB_CHECK(grib_set_long_array(h,"scaledValueOfCentralWaveNumber",values,size),0); CODES_CHECK(codes_set_long_array(h,"scaledValueOfCentralWaveNumber",values,size),0);
assert(size == count); assert(size == count);
/* check what we set */ /* check what we set */
GRIB_CHECK(grib_get_long_array(h,"scaledValueOfCentralWaveNumber",new_values,&size),0); CODES_CHECK(codes_get_long_array(h,"scaledValueOfCentralWaveNumber",new_values,&size),0);
assert(size == count); assert(size == count);
for(i=0;i<count;i++) { for(i=0;i<count;i++) {
printf("Now scaledValueOfCentralWaveNumber %lu = %ld\n",(unsigned long)i,new_values[i]); printf("Now scaledValueOfCentralWaveNumber %lu = %ld\n",(unsigned long)i,new_values[i]);
assert( new_values[i] == (i+1000) ); assert( new_values[i] == (i+1000) );
} }
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
return 0; return 0;

View File

@ -17,18 +17,18 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
grib_string_list* list; codes_string_list* list;
grib_string_list* list2; codes_string_list* list2;
list=grib_util_get_param_id("11.2"); list=codes_util_get_param_id("11.2");
printf("mars.param=11.2 -> paramId= "); printf("mars.param=11.2 -> paramId= ");
while (list) { while (list) {
printf("%s ",list->value); printf("%s ",list->value);
list2=grib_util_get_param_id("130.128"); list2=codes_util_get_param_id("130.128");
printf("mars.param=11.2 -> paramId= "); printf("mars.param=11.2 -> paramId= ");
while (list2) { while (list2) {
printf("%s ",list2->value); printf("%s ",list2->value);
@ -40,7 +40,7 @@ int main(int argc, char** argv)
printf("\n"); printf("\n");
printf("paramId=130 -> mars.param= "); printf("paramId=130 -> mars.param= ");
list=grib_util_get_mars_param("130"); list=codes_util_get_mars_param("130");
while (list) { while (list) {
printf("%s ",list->value); printf("%s ",list->value);
list=list->next; list=list->next;

View File

@ -21,7 +21,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -29,13 +29,13 @@ int main(int argc, char** argv)
long parameterCategory=0,parameterNumber=0,discipline=0; long parameterCategory=0,parameterNumber=0,discipline=0;
FILE* in = NULL; FILE* in = NULL;
char* filename = "../../data/multi.grib2"; char* filename = "../../data/multi.grib2";
grib_handle *h = NULL; codes_handle *h = NULL;
/* turn on support for multi fields messages */ /* turn on support for multi fields messages */
grib_multi_support_on(0); codes_multi_support_on(0);
/* turn off support for multi fields messages */ /* turn off support for multi fields messages */
/* grib_multi_support_off(0); */ /* codes_multi_support_off(0); */
in = fopen(filename,"r"); in = fopen(filename,"r");
if(!in) { if(!in) {
@ -43,24 +43,24 @@ int main(int argc, char** argv)
return 1; return 1;
} }
while ((h = grib_handle_new_from_file(0,in,&err)) != NULL ) { while ((h = codes_handle_new_from_file(0,in,&err)) != NULL ) {
GRIB_CHECK(err,0); CODES_CHECK(err,0);
GRIB_CHECK(grib_get_long(h,"discipline",&discipline),0); CODES_CHECK(codes_get_long(h,"discipline",&discipline),0);
printf("discipline=%ld\n",discipline); printf("discipline=%ld\n",discipline);
GRIB_CHECK(grib_get_long(h,"parameterCategory",&parameterCategory),0); CODES_CHECK(codes_get_long(h,"parameterCategory",&parameterCategory),0);
printf("parameterCategory=%ld\n",parameterCategory); printf("parameterCategory=%ld\n",parameterCategory);
GRIB_CHECK(grib_get_long(h,"parameterNumber",&parameterNumber),0); CODES_CHECK(codes_get_long(h,"parameterNumber",&parameterNumber),0);
printf("parameterNumber=%ld\n",parameterNumber); printf("parameterNumber=%ld\n",parameterNumber);
if ( discipline == 0 && parameterCategory==2) { if ( discipline == 0 && parameterCategory==2) {
if (parameterNumber == 2) printf("-------- u -------\n"); if (parameterNumber == 2) printf("-------- u -------\n");
if (parameterNumber == 3) printf("-------- v -------\n"); if (parameterNumber == 3) printf("-------- v -------\n");
} }
grib_handle_delete(h); codes_handle_delete(h);
} }
fclose(in); fclose(in);

View File

@ -15,7 +15,7 @@
* *
*/ */
#include "grib_api.h" #include "eccodes.h"
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -32,7 +32,7 @@ int main(int argc, char** argv)
int i; int i;
/* turn on support for multi fields messages */ /* turn on support for multi fields messages */
grib_multi_support_on(0); codes_multi_support_on(0);
for(i=1; i<COUNT; ++i) { for(i=1; i<COUNT; ++i) {
printf("Pass %d: \n",i); printf("Pass %d: \n",i);
@ -46,7 +46,7 @@ void read_data(int num_msgs)
int err = 0,i; int err = 0,i;
FILE* fp = NULL; FILE* fp = NULL;
long stepRange = 0; long stepRange = 0;
grib_handle *h = NULL; codes_handle *h = NULL;
fp = fopen(file_path, "r"); fp = fopen(file_path, "r");
if(!fp) { if(!fp) {
@ -55,12 +55,12 @@ void read_data(int num_msgs)
} }
printf("Opened GRIB file %s: \n", file_path); printf("Opened GRIB file %s: \n", file_path);
for(i=0; i<num_msgs; ++i) { for(i=0; i<num_msgs; ++i) {
h = grib_handle_new_from_file(0, fp, &err); h = codes_handle_new_from_file(0, fp, &err);
GRIB_CHECK(err, 0); CODES_CHECK(err, 0);
GRIB_CHECK( grib_get_long(h, "stepRange", &stepRange), 0); CODES_CHECK( codes_get_long(h, "stepRange", &stepRange), 0);
printf("%d : stepRange=%ld\n", i, stepRange); printf("%d : stepRange=%ld\n", i, stepRange);
grib_handle_delete(h); codes_handle_delete(h);
/* These tests make sure we always start from 1st field of the grib msg */ /* These tests make sure we always start from 1st field of the grib msg */
/* and not where we left off last time */ /* and not where we left off last time */
if (i == 0) assert(stepRange == 0); /* 1st field */ if (i == 0) assert(stepRange == 0); /* 1st field */
@ -69,6 +69,6 @@ void read_data(int num_msgs)
if (i == 3) assert(stepRange == 36); /* 4th field */ if (i == 3) assert(stepRange == 36); /* 4th field */
} }
/* Must reset this file pointer for the next round */ /* Must reset this file pointer for the next round */
grib_multi_support_reset_file(grib_context_get_default(), fp); codes_multi_support_reset_file(codes_context_get_default(), fp);
fclose(fp); fclose(fp);
} }

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("usage: %s in.grib out.grib\n",prog); printf("usage: %s in.grib out.grib\n",prog);
@ -32,8 +32,8 @@ int main(int argc, char** argv)
long edition, step; long edition, step;
char* filename=NULL; char* filename=NULL;
char* ofilename=NULL; char* ofilename=NULL;
grib_handle *h = NULL; codes_handle *h = NULL;
grib_multi_handle *mh=NULL; codes_multi_handle *mh=NULL;
const int start_section = 4; /* Grib2 Product Definition Section */ const int start_section = 4; /* Grib2 Product Definition Section */
if (argc < 3) usage(argv[0]); if (argc < 3) usage(argv[0]);
@ -48,16 +48,16 @@ int main(int argc, char** argv)
} }
/* new grib handle from input file */ /* new grib handle from input file */
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
GRIB_CHECK(grib_get_long(h,"edition",&edition),0); CODES_CHECK(codes_get_long(h,"edition",&edition),0);
if (edition != 2) { if (edition != 2) {
fprintf(stderr, "ERROR: Input grib must be edition 2 for multi fields\n"); fprintf(stderr, "ERROR: Input grib must be edition 2 for multi fields\n");
exit(1); exit(1);
} }
/* create a new empty multi field handle */ /* create a new empty multi field handle */
mh=grib_multi_handle_new(0); mh=codes_multi_handle_new(0);
if (!mh) { if (!mh) {
fprintf(stderr,"ERROR: Unable to create multi field handle\n"); fprintf(stderr,"ERROR: Unable to create multi field handle\n");
exit(1); exit(1);
@ -65,10 +65,10 @@ int main(int argc, char** argv)
for (step=12;step<=120;step+=12) { for (step=12;step<=120;step+=12) {
/* set step */ /* set step */
grib_set_long(h,"step",step); codes_set_long(h,"step",step);
/* append h to mh repeating from section 4 */ /* append h to mh repeating from section 4 */
/* i.e. starting from section 4 all the sections to the end of the message will be copied */ /* i.e. starting from section 4 all the sections to the end of the message will be copied */
grib_multi_handle_append(h, start_section, mh); codes_multi_handle_append(h, start_section, mh);
} }
/* open output file */ /* open output file */
@ -79,12 +79,12 @@ int main(int argc, char** argv)
} }
/* write multi fields handle to output file */ /* write multi fields handle to output file */
grib_multi_handle_write(mh,of); codes_multi_handle_write(mh,of);
fclose(of); fclose(of);
/* release memory */ /* release memory */
grib_handle_delete(h); codes_handle_delete(h);
grib_multi_handle_delete(mh); codes_multi_handle_delete(mh);
fclose(in); fclose(in);
return 0; return 0;

View File

@ -7,7 +7,7 @@
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/ */
#include "grib_api.h" #include "eccodes.h"
void usage(char* prog) { void usage(char* prog) {
printf("usage: %s in.nc\n",prog); printf("usage: %s in.nc\n",prog);
@ -18,19 +18,19 @@ int main(int argc,char* argv[]) {
char* file; char* file;
int err=0; int err=0;
grib_handle* h; codes_handle* h;
char identifier[7]={0,}; char identifier[7]={0,};
size_t len=7; size_t len=7;
grib_context* c=grib_context_get_default(); codes_context* c=codes_context_get_default();
if (argc>2) usage(argv[0]); if (argc>2) usage(argv[0]);
file=argv[1]; file=argv[1];
h=grib_handle_new_from_nc_file(c,file,&err); h=codes_handle_new_from_nc_file(c,file,&err);
grib_get_string(h,"identifier",identifier,&len); codes_get_string(h,"identifier",identifier,&len);
printf("%s\n",identifier); printf("%s\n",identifier);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
return err; return err;
} }

View File

@ -18,7 +18,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("Usage: %s grib_file grib_file ...\n",prog); printf("Usage: %s grib_file grib_file ...\n",prog);
@ -31,8 +31,8 @@ int main(int argc, char** argv)
long step=0; long step=0;
size_t nfiles; size_t nfiles;
int i=0; int i=0;
grib_fieldset* set=NULL; codes_fieldset* set=NULL;
grib_handle* h=NULL; codes_handle* h=NULL;
char param[20]={0,}; char param[20]={0,};
size_t len=20; size_t len=20;
double lats[4]={0,}; double lats[4]={0,};
@ -47,7 +47,7 @@ int main(int argc, char** argv)
int mode=0; int mode=0;
int count; int count;
char** filenames; char** filenames;
grib_nearest* nearest=NULL; codes_nearest* nearest=NULL;
if (argc < 2) usage(argv[0]); if (argc < 2) usage(argv[0]);
@ -56,35 +56,35 @@ int main(int argc, char** argv)
for (i=0;i<nfiles;i++) for (i=0;i<nfiles;i++)
filenames[i]=(char*)strdup(argv[i+1]); filenames[i]=(char*)strdup(argv[i+1]);
set=grib_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err); set=codes_fieldset_new_from_files(0,filenames,nfiles,0,0,0,order_by,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
printf("\nordering by %s\n",order_by); printf("\nordering by %s\n",order_by);
printf("\n%d fields in the fieldset\n",grib_fieldset_count(set)); printf("\n%d fields in the fieldset\n",codes_fieldset_count(set));
printf("n,step,param\n"); printf("n,step,param\n");
mode=GRIB_NEAREST_SAME_GRID | GRIB_NEAREST_SAME_POINT; mode=CODES_NEAREST_SAME_GRID | CODES_NEAREST_SAME_POINT;
count=1; count=1;
while ((h=grib_fieldset_next_handle(set,&err))!=NULL) { while ((h=codes_fieldset_next_handle(set,&err))!=NULL) {
GRIB_CHECK(grib_get_long(h,"step",&step),0); CODES_CHECK(codes_get_long(h,"step",&step),0);
len=20; len=20;
GRIB_CHECK(grib_get_string(h,"param",param,&len),0); CODES_CHECK(codes_get_string(h,"param",param,&len),0);
printf("%d %ld %s ",count,step,param); printf("%d %ld %s ",count,step,param);
if (!nearest) nearest=grib_nearest_new(h,&err); if (!nearest) nearest=codes_nearest_new(h,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
GRIB_CHECK(grib_nearest_find(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0); CODES_CHECK(codes_nearest_find(nearest,h,lat,lon,mode,lats,lons,values,distances,indexes,&size),0);
for (i=0;i<4;i++) printf("%d %.2f %.2f %g %g - ", for (i=0;i<4;i++) printf("%d %.2f %.2f %g %g - ",
(int)indexes[i],lats[i],lons[i],distances[i],values[i]); (int)indexes[i],lats[i],lons[i],distances[i],values[i]);
printf("\n"); printf("\n");
grib_handle_delete(h); codes_handle_delete(h);
count++; count++;
} }
if (nearest) grib_nearest_delete(nearest); if (nearest) codes_nearest_delete(nearest);
if (set) grib_fieldset_delete(set); if (set) codes_fieldset_delete(set);
return 0; return 0;
} }

View File

@ -1,11 +1,11 @@
#include <grib_api.h> #include <eccodes.h>
/* This code was generated automatically */ /* This code was generated automatically */
int main(int argc,const char** argv) int main(int argc,const char** argv)
{ {
grib_handle *h = NULL; codes_handle *h = NULL;
size_t size = 0; size_t size = 0;
double* vdouble = NULL; double* vdouble = NULL;
FILE* f = NULL; FILE* f = NULL;
@ -16,113 +16,112 @@ int main(int argc,const char** argv)
exit(1); exit(1);
} }
h = grib_handle_new_from_samples(NULL,"GRIB2"); h = codes_handle_new_from_samples(NULL,"GRIB2");
if(!h) { if(!h) {
fprintf(stderr,"Cannot create grib handle\n"); fprintf(stderr,"Cannot create grib handle\n");
exit(1); exit(1);
} }
GRIB_CHECK(grib_set_long(h,"parametersVersion",1),0); CODES_CHECK(codes_set_long(h,"parametersVersion",1),0);
GRIB_CHECK(grib_set_long(h,"truncateLaplacian",0),0); CODES_CHECK(codes_set_long(h,"truncateLaplacian",0),0);
GRIB_CHECK(grib_set_long(h,"truncateDegrees",0),0); CODES_CHECK(codes_set_long(h,"truncateDegrees",0),0);
GRIB_CHECK(grib_set_long(h,"dummy",1),0); CODES_CHECK(codes_set_long(h,"dummy",1),0);
GRIB_CHECK(grib_set_long(h,"changingPrecision",0),0); CODES_CHECK(codes_set_long(h,"changingPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"unitsFactor",1),0); CODES_CHECK(codes_set_long(h,"unitsFactor",1),0);
GRIB_CHECK(grib_set_long(h,"unitsBias",0),0); CODES_CHECK(codes_set_long(h,"unitsBias",0),0);
GRIB_CHECK(grib_set_long(h,"timeRangeIndicatorFromStepRange",-1),0); CODES_CHECK(codes_set_long(h,"timeRangeIndicatorFromStepRange",-1),0);
GRIB_CHECK(grib_set_long(h,"missingValue",9999),0); CODES_CHECK(codes_set_long(h,"missingValue",9999),0);
/* 0 = Meteorological products (grib2/tables/4/0.0.table) */ /* 0 = Meteorological products (grib2/tables/4/0.0.table) */
GRIB_CHECK(grib_set_long(h,"discipline",0),0); CODES_CHECK(codes_set_long(h,"discipline",0),0);
GRIB_CHECK(grib_set_long(h,"editionNumber",2),0); CODES_CHECK(codes_set_long(h,"editionNumber",2),0);
/* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table) */ /* 98 = European Center for Medium-Range Weather Forecasts (grib1/0.table) */
GRIB_CHECK(grib_set_long(h,"centre",98),0); CODES_CHECK(codes_set_long(h,"centre",98),0);
GRIB_CHECK(grib_set_long(h,"subCentre",0),0); CODES_CHECK(codes_set_long(h,"subCentre",0),0);
/* 4 = Version implemented on 7 November 2007 (grib2/tables/1.0.table) */ /* 4 = Version implemented on 7 November 2007 (grib2/tables/1.0.table) */
GRIB_CHECK(grib_set_long(h,"tablesVersion",4),0); CODES_CHECK(codes_set_long(h,"tablesVersion",4),0);
/* 0 = Local tables not used (grib2/tables/4/1.1.table) */ /* 0 = Local tables not used (grib2/tables/4/1.1.table) */
GRIB_CHECK(grib_set_long(h,"localTablesVersion",0),0); CODES_CHECK(codes_set_long(h,"localTablesVersion",0),0);
/* 1 = Start of forecast (grib2/tables/4/1.2.table) */ /* 1 = Start of forecast (grib2/tables/4/1.2.table) */
GRIB_CHECK(grib_set_long(h,"significanceOfReferenceTime",1),0); CODES_CHECK(codes_set_long(h,"significanceOfReferenceTime",1),0);
GRIB_CHECK(grib_set_long(h,"year",2007),0); CODES_CHECK(codes_set_long(h,"year",2007),0);
GRIB_CHECK(grib_set_long(h,"month",3),0); CODES_CHECK(codes_set_long(h,"month",3),0);
GRIB_CHECK(grib_set_long(h,"day",23),0); CODES_CHECK(codes_set_long(h,"day",23),0);
GRIB_CHECK(grib_set_long(h,"hour",12),0); CODES_CHECK(codes_set_long(h,"hour",12),0);
GRIB_CHECK(grib_set_long(h,"minute",0),0); CODES_CHECK(codes_set_long(h,"minute",0),0);
GRIB_CHECK(grib_set_long(h,"second",0),0); CODES_CHECK(codes_set_long(h,"second",0),0);
GRIB_CHECK(grib_set_long(h,"dataDate",20070323),0); CODES_CHECK(codes_set_long(h,"dataDate",20070323),0);
GRIB_CHECK(grib_set_long(h,"dataTime",1200),0); CODES_CHECK(codes_set_long(h,"dataTime",1200),0);
/* 0 = Operational products (grib2/tables/4/1.3.table) */ /* 0 = Operational products (grib2/tables/4/1.3.table) */
GRIB_CHECK(grib_set_long(h,"productionStatusOfProcessedData",0),0); CODES_CHECK(codes_set_long(h,"productionStatusOfProcessedData",0),0);
/* 2 = Analysis and forecast products (grib2/tables/4/1.4.table) */ /* 2 = Analysis and forecast products (grib2/tables/4/1.4.table) */
GRIB_CHECK(grib_set_long(h,"typeOfProcessedData",2),0); CODES_CHECK(codes_set_long(h,"typeOfProcessedData",2),0);
GRIB_CHECK(grib_set_long(h,"selectStepTemplateInterval",1),0); CODES_CHECK(codes_set_long(h,"selectStepTemplateInterval",1),0);
GRIB_CHECK(grib_set_long(h,"selectStepTemplateInstant",1),0); CODES_CHECK(codes_set_long(h,"selectStepTemplateInstant",1),0);
GRIB_CHECK(grib_set_long(h,"grib2LocalSectionPresent",0),0); CODES_CHECK(codes_set_long(h,"grib2LocalSectionPresent",0),0);
/* 0 = Specified in Code table 3.1 (grib2/tables/4/3.0.table) */ /* 0 = Specified in Code table 3.1 (grib2/tables/4/3.0.table) */
GRIB_CHECK(grib_set_long(h,"sourceOfGridDefinition",0),0); CODES_CHECK(codes_set_long(h,"sourceOfGridDefinition",0),0);
GRIB_CHECK(grib_set_long(h,"numberOfDataPoints",496),0); CODES_CHECK(codes_set_long(h,"numberOfDataPoints",496),0);
GRIB_CHECK(grib_set_long(h,"numberOfOctectsForNumberOfPoints",0),0); CODES_CHECK(codes_set_long(h,"numberOfOctectsForNumberOfPoints",0),0);
/* 0 = There is no appended list (grib2/tables/4/3.11.table) */ /* 0 = There is no appended list (grib2/tables/4/3.11.table) */
GRIB_CHECK(grib_set_long(h,"interpretationOfNumberOfPoints",0),0); CODES_CHECK(codes_set_long(h,"interpretationOfNumberOfPoints",0),0);
GRIB_CHECK(grib_set_long(h,"PLPresent",0),0); CODES_CHECK(codes_set_long(h,"PLPresent",0),0);
/* 0 = Latitude/longitude. Also called equidistant cylindrical, or Plate Carree (grib2/tables/4/3.1.table) */ /* 0 = Latitude/longitude. Also called equidistant cylindrical, or Plate Carree (grib2/tables/4/3.1.table) */
GRIB_CHECK(grib_set_long(h,"gridDefinitionTemplateNumber",0),0); CODES_CHECK(codes_set_long(h,"gridDefinitionTemplateNumber",0),0);
/* 0 = Earth assumed spherical with radius = 6,367,470.0 m (grib2/tables/4/3.2.table) */ /* 0 = Earth assumed spherical with radius = 6,367,470.0 m (grib2/tables/4/3.2.table) */
GRIB_CHECK(grib_set_long(h,"shapeOfTheEarth",0),0); CODES_CHECK(codes_set_long(h,"shapeOfTheEarth",0),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfRadiusOfSphericalEarth"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfRadiusOfSphericalEarth"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfRadiusOfSphericalEarth"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfRadiusOfSphericalEarth"),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfEarthMajorAxis"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfEarthMajorAxis"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfEarthMajorAxis"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfEarthMajorAxis"),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfEarthMinorAxis"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfEarthMinorAxis"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfEarthMinorAxis"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfEarthMinorAxis"),0);
GRIB_CHECK(grib_set_long(h,"radius",6367470),0); CODES_CHECK(codes_set_long(h,"radius",6367470),0);
GRIB_CHECK(grib_set_long(h,"Ni",16),0); CODES_CHECK(codes_set_long(h,"Ni",16),0);
GRIB_CHECK(grib_set_long(h,"Nj",31),0); CODES_CHECK(codes_set_long(h,"Nj",31),0);
GRIB_CHECK(grib_set_long(h,"basicAngleOfTheInitialProductionDomain",0),0); CODES_CHECK(codes_set_long(h,"basicAngleOfTheInitialProductionDomain",0),0);
GRIB_CHECK(grib_set_long(h,"mBasicAngle",0),0); CODES_CHECK(codes_set_long(h,"mBasicAngle",0),0);
GRIB_CHECK(grib_set_long(h,"angleMultiplier",1),0); CODES_CHECK(codes_set_long(h,"angleMultiplier",1),0);
GRIB_CHECK(grib_set_long(h,"mAngleMultiplier",1000000),0); CODES_CHECK(codes_set_long(h,"mAngleMultiplier",1000000),0);
GRIB_CHECK(grib_set_missing(h,"subdivisionsOfBasicAngle"),0); CODES_CHECK(codes_set_missing(h,"subdivisionsOfBasicAngle"),0);
GRIB_CHECK(grib_set_long(h,"angleDivisor",1000000),0); CODES_CHECK(codes_set_long(h,"angleDivisor",1000000),0);
GRIB_CHECK(grib_set_long(h,"latitudeOfFirstGridPoint",60000000),0); CODES_CHECK(codes_set_long(h,"latitudeOfFirstGridPoint",60000000),0);
GRIB_CHECK(grib_set_long(h,"longitudeOfFirstGridPoint",0),0); CODES_CHECK(codes_set_long(h,"longitudeOfFirstGridPoint",0),0);
/* 48 = 00110000 /* 48 = 00110000
(3=1) i direction increments given (3=1) i direction increments given
(4=1) j direction increments given (4=1) j direction increments given
(5=0) Resolved u- and v- components of vector quantities relative to easterly and northerly directions (5=0) Resolved u- and v- components of vector quantities relative to easterly and northerly directions
See grib2/tables/[tablesVersion]/3.3.table */ See grib2/tables/[tablesVersion]/3.3.table */
GRIB_CHECK(grib_set_long(h,"resolutionAndComponentFlags",48),0); CODES_CHECK(codes_set_long(h,"resolutionAndComponentFlags",48),0);
GRIB_CHECK(grib_set_long(h,"iDirectionIncrementGiven",1),0); CODES_CHECK(codes_set_long(h,"iDirectionIncrementGiven",1),0);
GRIB_CHECK(grib_set_long(h,"jDirectionIncrementGiven",1),0); CODES_CHECK(codes_set_long(h,"jDirectionIncrementGiven",1),0);
GRIB_CHECK(grib_set_long(h,"uvRelativeToGrid",0),0); CODES_CHECK(codes_set_long(h,"uvRelativeToGrid",0),0);
GRIB_CHECK(grib_set_long(h,"latitudeOfLastGridPoint",0),0); CODES_CHECK(codes_set_long(h,"latitudeOfLastGridPoint",0),0);
GRIB_CHECK(grib_set_long(h,"longitudeOfLastGridPoint",30000000),0); CODES_CHECK(codes_set_long(h,"longitudeOfLastGridPoint",30000000),0);
GRIB_CHECK(grib_set_long(h,"iDirectionIncrement",2000000),0); CODES_CHECK(codes_set_long(h,"iDirectionIncrement",2000000),0);
GRIB_CHECK(grib_set_long(h,"jDirectionIncrement",2000000),0); CODES_CHECK(codes_set_long(h,"jDirectionIncrement",2000000),0);
/* 0 = 00000000 /* 0 = 00000000
(1=0) Points of first row or column scan in the +i (+x) direction (1=0) Points of first row or column scan in the +i (+x) direction
@ -130,94 +129,94 @@ int main(int argc,const char** argv)
(3=0) Adjacent points in i (x) direction are consecutive (3=0) Adjacent points in i (x) direction are consecutive
(4=0) All rows scan in the same direction (4=0) All rows scan in the same direction
See grib2/tables/[tablesVersion]/3.4.table */ See grib2/tables/[tablesVersion]/3.4.table */
GRIB_CHECK(grib_set_long(h,"scanningMode",0),0); CODES_CHECK(codes_set_long(h,"scanningMode",0),0);
GRIB_CHECK(grib_set_long(h,"iScansNegatively",0),0); CODES_CHECK(codes_set_long(h,"iScansNegatively",0),0);
GRIB_CHECK(grib_set_long(h,"jScansPositively",0),0); CODES_CHECK(codes_set_long(h,"jScansPositively",0),0);
GRIB_CHECK(grib_set_long(h,"jPointsAreConsecutive",0),0); CODES_CHECK(codes_set_long(h,"jPointsAreConsecutive",0),0);
GRIB_CHECK(grib_set_long(h,"alternativeRowScanning",0),0); CODES_CHECK(codes_set_long(h,"alternativeRowScanning",0),0);
GRIB_CHECK(grib_set_long(h,"iScansPositively",1),0); CODES_CHECK(codes_set_long(h,"iScansPositively",1),0);
/* ITERATOR */ /* ITERATOR */
/* NEAREST */ /* NEAREST */
GRIB_CHECK(grib_set_long(h,"timeRangeIndicator",0),0); CODES_CHECK(codes_set_long(h,"timeRangeIndicator",0),0);
GRIB_CHECK(grib_set_long(h,"NV",0),0); CODES_CHECK(codes_set_long(h,"NV",0),0);
GRIB_CHECK(grib_set_long(h,"neitherPresent",0),0); CODES_CHECK(codes_set_long(h,"neitherPresent",0),0);
/* 0 = Analysis or forecast at a horizontal level or in a horizontal layer at a point in time (grib2/tables/4/4.0.table) */ /* 0 = Analysis or forecast at a horizontal level or in a horizontal layer at a point in time (grib2/tables/4/4.0.table) */
GRIB_CHECK(grib_set_long(h,"productDefinitionTemplateNumber",0),0); CODES_CHECK(codes_set_long(h,"productDefinitionTemplateNumber",0),0);
/* Parameter information */ /* Parameter information */
/* 0 = Temperature (grib2/tables/4/4.1.0.table) */ /* 0 = Temperature (grib2/tables/4/4.1.0.table) */
GRIB_CHECK(grib_set_long(h,"parameterCategory",0),0); CODES_CHECK(codes_set_long(h,"parameterCategory",0),0);
/* 0 = Temperature (K) (grib2/tables/4/4.2.0.0.table) */ /* 0 = Temperature (K) (grib2/tables/4/4.2.0.0.table) */
GRIB_CHECK(grib_set_long(h,"parameterNumber",0),0); CODES_CHECK(codes_set_long(h,"parameterNumber",0),0);
/* 0 = Analysis (grib2/tables/4/4.3.table) */ /* 0 = Analysis (grib2/tables/4/4.3.table) */
GRIB_CHECK(grib_set_long(h,"typeOfGeneratingProcess",0),0); CODES_CHECK(codes_set_long(h,"typeOfGeneratingProcess",0),0);
GRIB_CHECK(grib_set_long(h,"backgroundProcess",255),0); CODES_CHECK(codes_set_long(h,"backgroundProcess",255),0);
GRIB_CHECK(grib_set_long(h,"generatingProcessIdentifier",128),0); CODES_CHECK(codes_set_long(h,"generatingProcessIdentifier",128),0);
GRIB_CHECK(grib_set_long(h,"hoursAfterDataCutoff",0),0); CODES_CHECK(codes_set_long(h,"hoursAfterDataCutoff",0),0);
GRIB_CHECK(grib_set_long(h,"minutesAfterDataCutoff",0),0); CODES_CHECK(codes_set_long(h,"minutesAfterDataCutoff",0),0);
/* 1 = Hour (grib2/tables/4/4.4.table) */ /* 1 = Hour (grib2/tables/4/4.4.table) */
GRIB_CHECK(grib_set_long(h,"indicatorOfUnitOfTimeRange",1),0); CODES_CHECK(codes_set_long(h,"indicatorOfUnitOfTimeRange",1),0);
/* 1 = Hour (stepUnits.table) */ /* 1 = Hour (stepUnits.table) */
GRIB_CHECK(grib_set_long(h,"stepUnits",1),0); CODES_CHECK(codes_set_long(h,"stepUnits",1),0);
GRIB_CHECK(grib_set_long(h,"forecastTime",0),0); CODES_CHECK(codes_set_long(h,"forecastTime",0),0);
/* 1 = Ground or water surface (grib2/tables/4/4.5.table) */ /* 1 = Ground or water surface (grib2/tables/4/4.5.table) */
GRIB_CHECK(grib_set_long(h,"typeOfFirstFixedSurface",1),0); CODES_CHECK(codes_set_long(h,"typeOfFirstFixedSurface",1),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfFirstFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfFirstFixedSurface"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfFirstFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfFirstFixedSurface"),0);
/* 255 = Missing (grib2/tables/4/4.5.table) */ /* 255 = Missing (grib2/tables/4/4.5.table) */
GRIB_CHECK(grib_set_long(h,"typeOfSecondFixedSurface",255),0); CODES_CHECK(codes_set_long(h,"typeOfSecondFixedSurface",255),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfSecondFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfSecondFixedSurface"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfSecondFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfSecondFixedSurface"),0);
GRIB_CHECK(grib_set_long(h,"level",0),0); CODES_CHECK(codes_set_long(h,"level",0),0);
GRIB_CHECK(grib_set_long(h,"bottomLevel",0),0); CODES_CHECK(codes_set_long(h,"bottomLevel",0),0);
GRIB_CHECK(grib_set_long(h,"topLevel",0),0); CODES_CHECK(codes_set_long(h,"topLevel",0),0);
GRIB_CHECK(grib_set_long(h,"dummyc",0),0); CODES_CHECK(codes_set_long(h,"dummyc",0),0);
GRIB_CHECK(grib_set_long(h,"PVPresent",0),0); CODES_CHECK(codes_set_long(h,"PVPresent",0),0);
/* grib 2 Section 5 DATA REPRESENTATION SECTION */ /* grib 2 Section 5 DATA REPRESENTATION SECTION */
GRIB_CHECK(grib_set_long(h,"numberOfValues",496),0); CODES_CHECK(codes_set_long(h,"numberOfValues",496),0);
/* 0 = Grid point data - simple packing (grib2/tables/4/5.0.table) */ /* 0 = Grid point data - simple packing (grib2/tables/4/5.0.table) */
GRIB_CHECK(grib_set_long(h,"dataRepresentationTemplateNumber",0),0); CODES_CHECK(codes_set_long(h,"dataRepresentationTemplateNumber",0),0);
GRIB_CHECK(grib_set_long(h,"decimalScaleFactor",0),0); CODES_CHECK(codes_set_long(h,"decimalScaleFactor",0),0);
GRIB_CHECK(grib_set_long(h,"bitsPerValue",0),0); CODES_CHECK(codes_set_long(h,"bitsPerValue",0),0);
/* 0 = Floating point (grib2/tables/4/5.1.table) */ /* 0 = Floating point (grib2/tables/4/5.1.table) */
GRIB_CHECK(grib_set_long(h,"typeOfOriginalFieldValues",0),0); CODES_CHECK(codes_set_long(h,"typeOfOriginalFieldValues",0),0);
GRIB_CHECK(grib_set_long(h,"representationMode",0),0); CODES_CHECK(codes_set_long(h,"representationMode",0),0);
/* grib 2 Section 6 BIT-MAP SECTION */ /* grib 2 Section 6 BIT-MAP SECTION */
/* 255 = A bit map does not apply to this product (grib2/tables/4/6.0.table) */ /* 255 = A bit map does not apply to this product (grib2/tables/4/6.0.table) */
GRIB_CHECK(grib_set_long(h,"bitMapIndicator",255),0); CODES_CHECK(codes_set_long(h,"bitMapIndicator",255),0);
GRIB_CHECK(grib_set_long(h,"bitmapPresent",0),0); CODES_CHECK(codes_set_long(h,"bitmapPresent",0),0);
/* grib 2 Section 7 data */ /* grib 2 Section 7 data */
@ -353,12 +352,12 @@ int main(int argc,const char** argv)
vdouble[ 488] = 1; vdouble[ 489] = 1; vdouble[ 490] = 1; vdouble[ 491] = 1; vdouble[ 488] = 1; vdouble[ 489] = 1; vdouble[ 490] = 1; vdouble[ 491] = 1;
vdouble[ 492] = 1; vdouble[ 493] = 1; vdouble[ 494] = 1; vdouble[ 495] = 1; vdouble[ 492] = 1; vdouble[ 493] = 1; vdouble[ 494] = 1; vdouble[ 495] = 1;
GRIB_CHECK(grib_set_double_array(h,"values",vdouble,size),0); CODES_CHECK(codes_set_double_array(h,"values",vdouble,size),0);
free(vdouble); free(vdouble);
GRIB_CHECK(grib_set_long(h,"dirty_statistics",1),0); CODES_CHECK(codes_set_long(h,"dirty_statistics",1),0);
GRIB_CHECK(grib_set_long(h,"changeDecimalPrecision",0),0); CODES_CHECK(codes_set_long(h,"changeDecimalPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"decimalPrecision",0),0); CODES_CHECK(codes_set_long(h,"decimalPrecision",0),0);
GRIB_CHECK(grib_set_long(h,"setBitsPerValue",0),0); CODES_CHECK(codes_set_long(h,"setBitsPerValue",0),0);
/* Save the message */ /* Save the message */
f = fopen(argv[1],"w"); f = fopen(argv[1],"w");
@ -367,7 +366,7 @@ int main(int argc,const char** argv)
exit(1); exit(1);
} }
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
if(fwrite(buffer,1,size,f) != size) { if(fwrite(buffer,1,size,f) != size) {
perror(argv[1]); perror(argv[1]);
@ -379,6 +378,6 @@ int main(int argc,const char** argv)
exit(1); exit(1);
} }
grib_handle_delete(h); codes_handle_delete(h);
return 0; return 0;
} }

View File

@ -17,7 +17,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("Usage: %s latlon_file grib_orography grib_file grib_file ...\n",prog); printf("Usage: %s latlon_file grib_orography grib_file grib_file ...\n",prog);
@ -32,7 +32,7 @@ int main(int argc, char** argv)
float lat,lon; float lat,lon;
double *vlat,*vlon; double *vlat,*vlon;
int npoints=0,i=0,n=0; int npoints=0,i=0,n=0;
grib_handle* h; codes_handle* h;
double *outlats,*outlons,*values,*lsm_values,*distances; double *outlats,*outlons,*values,*lsm_values,*distances;
int* indexes; int* indexes;
long step=0; long step=0;
@ -86,13 +86,13 @@ int main(int argc, char** argv)
fname=argv[2]; fname=argv[2];
fin=fopen(fname,"r"); fin=fopen(fname,"r");
if(!fin) { perror(fname); exit(1); } if(!fin) { perror(fname); exit(1); }
h=grib_handle_new_from_file(0,fin,&ret); h=codes_handle_new_from_file(0,fin,&ret);
if (!h || ret!=GRIB_SUCCESS) {printf(" unable to create handle\n");exit(1);} if (!h || ret!=CODES_SUCCESS) {printf(" unable to create handle\n");exit(1);}
grib_nearest_find_multiple(h,1,vlat,vlon,npoints, codes_nearest_find_multiple(h,1,vlat,vlon,npoints,
outlats,outlons,lsm_values,distances,indexes); outlats,outlons,lsm_values,distances,indexes);
grib_handle_delete(h); codes_handle_delete(h);
fclose(fin); fclose(fin);
@ -100,18 +100,18 @@ int main(int argc, char** argv)
fname=argv[n]; fname=argv[n];
fin=fopen(fname,"r"); fin=fopen(fname,"r");
if(!fin) { perror(fname); exit(1); } if(!fin) { perror(fname); exit(1); }
while ((h=grib_handle_new_from_file(0,fin,&ret))!=NULL) { while ((h=codes_handle_new_from_file(0,fin,&ret))!=NULL) {
grib_get_double_elements(h,"values",indexes,npoints,values); codes_get_double_elements(h,"values",indexes,npoints,values);
GRIB_CHECK(grib_get_length(h, "date", &len),0); CODES_CHECK(codes_get_length(h, "date", &len),0);
grib_get_string(h,"date",date,&len); codes_get_string(h,"date",date,&len);
GRIB_CHECK(grib_get_length(h, "time", &len),0); CODES_CHECK(codes_get_length(h, "time", &len),0);
grib_get_string(h,"time",time,&len); codes_get_string(h,"time",time,&len);
grib_get_long(h,"step",&step); codes_get_long(h,"step",&step);
grib_get_long(h,"parameter",&parameter); codes_get_long(h,"parameter",&parameter);
printf("# %s %s %ld %ld\n",date,time,step,parameter); printf("# %s %s %ld %ld\n",date,time,step,parameter);
grib_handle_delete(h); codes_handle_delete(h);
for (i=0;i<npoints;i++) for (i=0;i<npoints;i++)
printf("%ld %g %g %g %g\n", printf("%ld %g %g %g %g\n",
id[i],outlats[i],outlons[i], id[i],outlats[i],outlons[i],

View File

@ -19,7 +19,7 @@
#include <math.h> #include <math.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
#define EPSILON 1e-6 #define EPSILON 1e-6
#define EXPECTED_MIN 270.466796875 #define EXPECTED_MIN 270.466796875
@ -34,7 +34,7 @@ int main(int argc, char** argv)
char* infile = "../../data/regular_latlon_surface.grib1"; char* infile = "../../data/regular_latlon_surface.grib1";
FILE* out = NULL; FILE* out = NULL;
char* outfile = "out.grib1"; char* outfile = "out.grib1";
grib_handle *h = NULL; codes_handle *h = NULL;
const void* buffer = NULL; const void* buffer = NULL;
double* values1=NULL; double* values1=NULL;
double* values2=NULL; double* values2=NULL;
@ -59,35 +59,35 @@ int main(int argc, char** argv)
} }
/* create a new handle from a message in a file */ /* create a new handle from a message in a file */
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",infile); printf("Error: unable to create handle from file %s\n",infile);
} }
/* bitsPerValue before changing the packing parameters */ /* bitsPerValue before changing the packing parameters */
GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue1),0); CODES_CHECK(codes_get_long(h,"bitsPerValue",&bitsPerValue1),0);
assert(bitsPerValue1 == 16); assert(bitsPerValue1 == 16);
/* get the size of the values array*/ /* get the size of the values array*/
GRIB_CHECK(grib_get_size(h,"values",&size),0); CODES_CHECK(codes_get_size(h,"values",&size),0);
assert(size == 496); assert(size == 496);
values1 = (double*)malloc(size*sizeof(double)); values1 = (double*)malloc(size*sizeof(double));
/* get data values before changing the packing parameters*/ /* get data values before changing the packing parameters*/
GRIB_CHECK(grib_get_double_array(h,"values",values1,&size),0); CODES_CHECK(codes_get_double_array(h,"values",values1,&size),0);
/* changing decimal precision to 2 means that 2 decimal digits /* changing decimal precision to 2 means that 2 decimal digits
are preserved when packing. */ are preserved when packing. */
decimalPrecision=2; decimalPrecision=2;
GRIB_CHECK(grib_set_long(h,"changeDecimalPrecision",decimalPrecision),0); CODES_CHECK(codes_set_long(h,"changeDecimalPrecision",decimalPrecision),0);
/* bitsPerValue after changing the packing parameters */ /* bitsPerValue after changing the packing parameters */
GRIB_CHECK(grib_get_long(h,"bitsPerValue",&bitsPerValue2),0); CODES_CHECK(codes_get_long(h,"bitsPerValue",&bitsPerValue2),0);
assert(bitsPerValue2 == 12); assert(bitsPerValue2 == 12);
values2 = (double*)malloc(size*sizeof(double)); values2 = (double*)malloc(size*sizeof(double));
/* get data values after changing the packing parameters*/ /* get data values after changing the packing parameters*/
GRIB_CHECK(grib_get_double_array(h,"values",values2,&size),0); CODES_CHECK(codes_get_double_array(h,"values",values2,&size),0);
/* computing error */ /* computing error */
maxa=0; maxa=0;
@ -110,7 +110,7 @@ int main(int argc, char** argv)
assert(fabs(maxv - EXPECTED_MAX) < EPSILON); assert(fabs(maxv - EXPECTED_MAX) < EPSILON);
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
/* write the buffer in a file*/ /* write the buffer in a file*/
if(fwrite(buffer,1,size,out) != size) if(fwrite(buffer,1,size,out) != size)
@ -119,7 +119,7 @@ int main(int argc, char** argv)
exit(1); exit(1);
} }
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
fclose(out); fclose(out);

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
printf("usage: %s filename\n",prog); printf("usage: %s filename\n",prog);
@ -33,7 +33,7 @@ int main(int argc, char** argv)
FILE* in = NULL; FILE* in = NULL;
char* filename ; char* filename ;
grib_handle *h = NULL; codes_handle *h = NULL;
if (argc<2) usage(argv[0]); if (argc<2) usage(argv[0]);
filename=argv[1]; filename=argv[1];
@ -45,19 +45,19 @@ int main(int argc, char** argv)
} }
/* create new handle from a message in a file*/ /* create new handle from a message in a file*/
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",filename); printf("Error: unable to create handle from file %s\n",filename);
} }
/* get the size of the values array*/ /* get the size of the values array*/
GRIB_CHECK(grib_get_size(h,"values",&values_len),0); CODES_CHECK(codes_get_size(h,"values",&values_len),0);
values = (double*)malloc(values_len*sizeof(double)); values = (double*)malloc(values_len*sizeof(double));
/* get data values*/ /* get data values*/
GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0); CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
for(i = 0; i < values_len; i++) for(i = 0; i < values_len; i++)
printf("%d %.10e\n",i+1,values[i]); printf("%d %.10e\n",i+1,values[i]);
@ -65,14 +65,14 @@ int main(int argc, char** argv)
free(values); free(values);
GRIB_CHECK(grib_get_double(h,"max",&max),0); CODES_CHECK(codes_get_double(h,"max",&max),0);
GRIB_CHECK(grib_get_double(h,"min",&min),0); CODES_CHECK(codes_get_double(h,"min",&min),0);
GRIB_CHECK(grib_get_double(h,"average",&average),0); CODES_CHECK(codes_get_double(h,"average",&average),0);
printf("%d values found in %s\n",(int)values_len,filename); printf("%d values found in %s\n",(int)values_len,filename);
printf("max=%.10e min=%.10e average=%.10e\n",max,min,average); printf("max=%.10e min=%.10e average=%.10e\n",max,min,average);
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
return 0; return 0;

View File

@ -7,7 +7,7 @@
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/ */
#include "grib_api.h" #include "eccodes.h"
#include <ctype.h> #include <ctype.h>
void usage(char* prog) { void usage(char* prog) {
@ -21,7 +21,7 @@ void usage(char* prog) {
int main ( int argc, char* argv[]) int main ( int argc, char* argv[])
{ {
grib_handle *hfrom,*hto,*h; codes_handle *hfrom,*hto,*h;
FILE *in; FILE *in;
char *in_name1, *in_name2, *what_str, *out_name; char *in_name1, *in_name2, *what_str, *out_name;
int i, err=0, what=0; int i, err=0, what=0;
@ -39,8 +39,8 @@ int main ( int argc, char* argv[])
exit(1); exit(1);
} }
hfrom=grib_handle_new_from_file(0,in,&err); hfrom=codes_handle_new_from_file(0,in,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
fclose(in); fclose(in);
in=fopen(in_name2,"r"); in=fopen(in_name2,"r");
@ -49,39 +49,39 @@ int main ( int argc, char* argv[])
exit(1); exit(1);
} }
hto=grib_handle_new_from_file(0,in,&err); hto=codes_handle_new_from_file(0,in,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
fclose(in); fclose(in);
/* The sections for the "what" argument are: /* The sections for the "what" argument are:
* GRIB_SECTION_PRODUCT * CODES_SECTION_PRODUCT
* GRIB_SECTION_GRID * CODES_SECTION_GRID
* GRIB_SECTION_LOCAL * CODES_SECTION_LOCAL
* GRIB_SECTION_DATA * CODES_SECTION_DATA
* GRIB_SECTION_BITMAP * CODES_SECTION_BITMAP
* One can bitwise-OR them to have more than one section copied * One can bitwise-OR them to have more than one section copied
* E.g. what = GRIB_SECTION_PRODUCT | GRIB_SECTION_LOCAL; * E.g. what = CODES_SECTION_PRODUCT | CODES_SECTION_LOCAL;
*/ */
for(i=0; i<strlen(what_str); ++i) { for(i=0; i<strlen(what_str); ++i) {
if (what_str[i] == 'p') { if (what_str[i] == 'p') {
printf("Copying the PRODUCT section\n"); printf("Copying the PRODUCT section\n");
what |= GRIB_SECTION_PRODUCT; what |= CODES_SECTION_PRODUCT;
} }
else if (what_str[i] == 'g') { else if (what_str[i] == 'g') {
printf("Copying the GRID section\n"); printf("Copying the GRID section\n");
what |= GRIB_SECTION_GRID; what |= CODES_SECTION_GRID;
} }
else if (what_str[i] == 'l') { else if (what_str[i] == 'l') {
printf("Copying the LOCAL section\n"); printf("Copying the LOCAL section\n");
what |= GRIB_SECTION_LOCAL; what |= CODES_SECTION_LOCAL;
} }
else if (what_str[i] == 'd') { else if (what_str[i] == 'd') {
printf("Copying the DATA section\n"); printf("Copying the DATA section\n");
what |= GRIB_SECTION_DATA; what |= CODES_SECTION_DATA;
} }
else if (what_str[i] == 'b') { else if (what_str[i] == 'b') {
printf("Copying the BITMAP section\n"); printf("Copying the BITMAP section\n");
what |= GRIB_SECTION_BITMAP; what |= CODES_SECTION_BITMAP;
} }
else if (isspace(what_str[i]) || what_str[i] == ',') { else if (isspace(what_str[i]) || what_str[i] == ',') {
/* Ignore spaces and comma separator */ /* Ignore spaces and comma separator */
@ -92,14 +92,14 @@ int main ( int argc, char* argv[])
} }
} }
h=grib_util_sections_copy(hfrom,hto,what,&err); h=codes_util_sections_copy(hfrom,hto,what,&err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
err=grib_write_message(h,out_name,"w"); err=codes_write_message(h,out_name,"w");
grib_handle_delete(hfrom); codes_handle_delete(hfrom);
grib_handle_delete(hto); codes_handle_delete(hto);
grib_handle_delete(h); codes_handle_delete(h);
return err; return err;
} }

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -32,9 +32,9 @@ int main(int argc, char** argv)
char* infile = "../../data/regular_latlon_surface.grib1"; char* infile = "../../data/regular_latlon_surface.grib1";
FILE* out = NULL; FILE* out = NULL;
char* outfile = "out.grib1"; char* outfile = "out.grib1";
grib_handle *h = NULL; codes_handle *h = NULL;
const void* buffer = NULL; const void* buffer = NULL;
size_t str_len = 0; /* See the call to grib_set_string later */ size_t str_len = 0; /* See the call to codes_set_string later */
in = fopen(infile,"r"); in = fopen(infile,"r");
if(!in) { if(!in) {
@ -50,29 +50,29 @@ int main(int argc, char** argv)
} }
/* create a new handle from a message in a file */ /* create a new handle from a message in a file */
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",infile); printf("Error: unable to create handle from file %s\n",infile);
} }
/* set centre as a long */ /* set centre as a long */
GRIB_CHECK(grib_set_long(h,"centre",centre),0); CODES_CHECK(codes_set_long(h,"centre",centre),0);
/* set paramId and shortName - normally you would do one or the other */ /* set paramId and shortName - normally you would do one or the other */
GRIB_CHECK(grib_set_long(h,"paramId", 500004),0); CODES_CHECK(codes_set_long(h,"paramId", 500004),0);
/* the value of str_len is not used, it can be anything! */ /* the value of str_len is not used, it can be anything! */
GRIB_CHECK(grib_set_string(h,"shortName", "fis", &str_len),0); CODES_CHECK(codes_set_string(h,"shortName", "fis", &str_len),0);
/* get centre as a long */ /* get centre as a long */
GRIB_CHECK(grib_get_long(h,"centre",&long_value),0); CODES_CHECK(codes_get_long(h,"centre",&long_value),0);
printf("centre long value=%ld\n",long_value); printf("centre long value=%ld\n",long_value);
/* get centre as a string */ /* get centre as a string */
GRIB_CHECK(grib_get_string(h,"centre",string_value,&len),0); CODES_CHECK(codes_get_string(h,"centre",string_value,&len),0);
printf("centre string value=%s\n",string_value); printf("centre string value=%s\n",string_value);
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
/* write the buffer in a file*/ /* write the buffer in a file*/
if(fwrite(buffer,1,size,out) != size) if(fwrite(buffer,1,size,out) != size)
@ -81,7 +81,7 @@ int main(int argc, char** argv)
exit(1); exit(1);
} }
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
fclose(out); fclose(out);

View File

@ -19,7 +19,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -30,7 +30,7 @@ int main(int argc, char** argv)
char* infile = "../../data/regular_latlon_surface.grib1"; char* infile = "../../data/regular_latlon_surface.grib1";
FILE* out = NULL; FILE* out = NULL;
char* outfile = "out.grib1"; char* outfile = "out.grib1";
grib_handle *h = NULL; codes_handle *h = NULL;
const void* buffer = NULL; const void* buffer = NULL;
size_t values_len; size_t values_len;
double* values; double* values;
@ -50,30 +50,30 @@ int main(int argc, char** argv)
return 1; return 1;
} }
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",infile); printf("Error: unable to create handle from file %s\n",infile);
} }
GRIB_CHECK(grib_set_double(h,"missingValue",missing),0); CODES_CHECK(codes_set_double(h,"missingValue",missing),0);
/* get the size of the values array*/ /* get the size of the values array*/
GRIB_CHECK(grib_get_size(h,"values",&values_len),0); CODES_CHECK(codes_get_size(h,"values",&values_len),0);
values = (double*)malloc(values_len*sizeof(double)); values = (double*)malloc(values_len*sizeof(double));
/* get data values*/ /* get data values*/
GRIB_CHECK(grib_get_double_array(h,"values",values,&values_len),0); CODES_CHECK(codes_get_double_array(h,"values",values,&values_len),0);
GRIB_CHECK(grib_set_long(h,"bitmapPresent",1),0); CODES_CHECK(codes_set_long(h,"bitmapPresent",1),0);
for(i = 0; i < 10; i++) for(i = 0; i < 10; i++)
values[i]=missing; values[i]=missing;
GRIB_CHECK(grib_set_double_array(h,"values",values,values_len),0); CODES_CHECK(codes_set_double_array(h,"values",values,values_len),0);
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
/* write the buffer in a file*/ /* write the buffer in a file*/
if(fwrite(buffer,1,size,out) != size) if(fwrite(buffer,1,size,out) != size)
@ -83,7 +83,7 @@ int main(int argc, char** argv)
} }
/* delete handle */ /* delete handle */
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
fclose(out); fclose(out);

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) void usage(const char* prog)
{ {
@ -37,15 +37,15 @@ int main(int argc, char** argv)
/* setting the environment variable GRIB_SAMPLES_PATH */ /* setting the environment variable GRIB_SAMPLES_PATH */
const char* sample_filename = "regular_ll_pl_grib1"; const char* sample_filename = "regular_ll_pl_grib1";
/* Here is how you can get the samples path */ /* Here is how you can get the samples path */
const char* samples_path = grib_samples_path(NULL); const char* samples_path = codes_samples_path(NULL);
grib_handle *h = NULL; codes_handle *h = NULL;
double d,e; double d,e;
long count; long count;
if (argc!=2) usage(argv[0]); if (argc!=2) usage(argv[0]);
/* create new handle from message in sample file */ /* create new handle from message in sample file */
printf("Using samples path: %s\n", samples_path); printf("Using samples path: %s\n", samples_path);
h = grib_handle_new_from_samples(0, sample_filename); h = codes_handle_new_from_samples(0, sample_filename);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from sample file %s\n", sample_filename); printf("Error: unable to create handle from sample file %s\n", sample_filename);
exit(1); exit(1);
@ -55,7 +55,7 @@ int main(int argc, char** argv)
/* will be the same as the sample GRIB. */ /* will be the same as the sample GRIB. */
/* But if your data array has a different size, then specify the grid geometry */ /* But if your data array has a different size, then specify the grid geometry */
/* (e.g. keys Ni, Nj etc) and set the correct number of data values */ /* (e.g. keys Ni, Nj etc) and set the correct number of data values */
GRIB_CHECK(grib_get_size(h, "values", &values_len),0); CODES_CHECK(codes_get_size(h, "values", &values_len),0);
values = (double*)malloc(values_len*sizeof(double)); values = (double*)malloc(values_len*sizeof(double));
d=10e-8; d=10e-8;
@ -69,15 +69,15 @@ int main(int argc, char** argv)
count++; count++;
} }
GRIB_CHECK(grib_set_long(h,"bitsPerValue",16),0); CODES_CHECK(codes_set_long(h,"bitsPerValue",16),0);
/* set data values */ /* set data values */
GRIB_CHECK(grib_set_double_array(h,"values",values,values_len),0); CODES_CHECK(codes_set_double_array(h,"values",values,values_len),0);
GRIB_CHECK(grib_write_message(h, argv[1], "w"), 0); CODES_CHECK(codes_write_message(h, argv[1], "w"), 0);
free(values); free(values);
grib_handle_delete(h); codes_handle_delete(h);
return 0; return 0;
} }

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
@ -27,7 +27,7 @@ int main(int argc, char** argv)
char* infile = "../../data/reduced_gaussian_pressure_level.grib2"; char* infile = "../../data/reduced_gaussian_pressure_level.grib2";
FILE* out = NULL; FILE* out = NULL;
char* outfile = "out_surface_level.grib2"; char* outfile = "out_surface_level.grib2";
grib_handle *h = NULL; codes_handle *h = NULL;
const void* buffer = NULL; const void* buffer = NULL;
size_t size=0; size_t size=0;
char str[]="sfc"; char str[]="sfc";
@ -48,24 +48,24 @@ int main(int argc, char** argv)
} }
/* create a new handle from a message in a file */ /* create a new handle from a message in a file */
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
printf("Error: unable to create handle from file %s\n",infile); printf("Error: unable to create handle from file %s\n",infile);
} }
GRIB_CHECK(grib_set_string(h,"typeOfFirstFixedSurface",str,&str_len),0); CODES_CHECK(codes_set_string(h,"typeOfFirstFixedSurface",str,&str_len),0);
GRIB_CHECK(grib_set_missing(h,"scaleFactorOfFirstFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaleFactorOfFirstFixedSurface"),0);
GRIB_CHECK(grib_set_missing(h,"scaledValueOfFirstFixedSurface"),0); CODES_CHECK(codes_set_missing(h,"scaledValueOfFirstFixedSurface"),0);
/* See GRIB-490 */ /* See GRIB-490 */
GRIB_CHECK(grib_get_long(h,"Ni",&Ni),0); CODES_CHECK(codes_get_long(h,"Ni",&Ni),0);
is_missing = grib_is_missing(h, "Ni", &err); is_missing = codes_is_missing(h, "Ni", &err);
GRIB_CHECK(err,0); CODES_CHECK(err,0);
assert(is_missing == 1); assert(is_missing == 1);
GRIB_CHECK(grib_set_long(h,"Ni", Ni),0); CODES_CHECK(codes_set_long(h,"Ni", Ni),0);
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
/* write the buffer in a file*/ /* write the buffer in a file*/
if(fwrite(buffer,1,size,out) != size) if(fwrite(buffer,1,size,out) != size)
@ -75,7 +75,7 @@ int main(int argc, char** argv)
} }
/* delete handle */ /* delete handle */
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
fclose(out); fclose(out);

View File

@ -17,7 +17,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <assert.h> #include <assert.h>
#include "grib_api.h" #include "eccodes.h"
void usage(const char* prog) { void usage(const char* prog) {
fprintf(stderr, "usage: %s in out\n",prog); fprintf(stderr, "usage: %s in out\n",prog);
@ -36,7 +36,7 @@ int main(int argc, char** argv)
char* infile = NULL; char* infile = NULL;
FILE* out = NULL; FILE* out = NULL;
char* outfile = NULL; char* outfile = NULL;
grib_handle *h = NULL; codes_handle *h = NULL;
const void* buffer = NULL; const void* buffer = NULL;
if (argc != 3) usage(argv[0]); if (argc != 3) usage(argv[0]);
@ -57,21 +57,21 @@ int main(int argc, char** argv)
} }
/* create a new handle from a message in a file */ /* create a new handle from a message in a file */
h = grib_handle_new_from_file(0,in,&err); h = codes_handle_new_from_file(0,in,&err);
if (h == NULL) { if (h == NULL) {
fprintf(stderr, "Error: unable to create handle from file %s\n",infile); fprintf(stderr, "Error: unable to create handle from file %s\n",infile);
} }
GRIB_CHECK(grib_set_long(h,"PVPresent",PVPresent),0); CODES_CHECK(codes_set_long(h,"PVPresent",PVPresent),0);
GRIB_CHECK(grib_set_double_array(h,"pv",pv,pvsize),0); CODES_CHECK(codes_set_double_array(h,"pv",pv,pvsize),0);
/* Once we set the pv array, the NV key should be also set */ /* Once we set the pv array, the NV key should be also set */
GRIB_CHECK(grib_get_long(h,"NV",&NV),0); CODES_CHECK(codes_get_long(h,"NV",&NV),0);
assert( NV == pvsize ); assert( NV == pvsize );
/* get the coded message in a buffer */ /* get the coded message in a buffer */
GRIB_CHECK(grib_get_message(h,&buffer,&size),0); CODES_CHECK(codes_get_message(h,&buffer,&size),0);
/* write the buffer in a file*/ /* write the buffer in a file*/
if(fwrite(buffer,1,size,out) != size) if(fwrite(buffer,1,size,out) != size)
@ -80,7 +80,7 @@ int main(int argc, char** argv)
exit(1); exit(1);
} }
grib_handle_delete(h); codes_handle_delete(h);
fclose(in); fclose(in);
fclose(out); fclose(out);

View File

@ -7,16 +7,16 @@
* In applying this licence, ECMWF does not waive the privileges and immunities granted to it by * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
* virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.
*/ */
#include "grib_api.h" #include "eccodes.h"
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
FILE* f; FILE* f;
int err=0; int err=0;
char infile[]="../../data/reduced_gaussian_model_level.grib1"; char infile[]="../../data/reduced_gaussian_model_level.grib1";
grib_handle *h=NULL; codes_handle *h=NULL;
grib_context* c=grib_context_get_default(); codes_context* c=codes_context_get_default();
grib_values values[2]; codes_values values[2];
int nvalues=2; int nvalues=2;
int i; int i;
char* name = NULL; char* name = NULL;
@ -27,37 +27,37 @@ int main(int argc, char* argv[])
exit(1); exit(1);
} }
h=grib_handle_new_from_file(c,f,&err); h=codes_handle_new_from_file(c,f,&err);
if (!h) { if (!h) {
printf("unable to create handle from file %s\n",infile); printf("unable to create handle from file %s\n",infile);
exit(err); exit(err);
} }
fclose(f); fclose(f);
values[0].type=GRIB_TYPE_LONG; values[0].type=CODES_TYPE_LONG;
values[0].name="centre"; values[0].name="centre";
values[0].long_value=98; values[0].long_value=98;
values[1].type=GRIB_TYPE_LONG; values[1].type=CODES_TYPE_LONG;
values[1].name="level"; values[1].name="level";
values[1].long_value=2; values[1].long_value=2;
/*GRIB_VALUE_DIFFERENT -> value is different*/ /*CODES_VALUE_DIFFERENT -> value is different*/
err=grib_values_check(h,values,nvalues); err=codes_values_check(h,values,nvalues);
if (err) { if (err) {
for (i=0;i<nvalues;i++) { for (i=0;i<nvalues;i++) {
if (values[i].error==err) name=(char*)values[i].name; if (values[i].error==err) name=(char*)values[i].name;
} }
printf("ERROR: \"%s\" %s\n",name,grib_get_error_message(err)); printf("ERROR: \"%s\" %s\n",name,codes_get_error_message(err));
} }
values[1].name="levelll"; values[1].name="levelll";
err=grib_values_check(h,values,nvalues); err=codes_values_check(h,values,nvalues);
if (err) { if (err) {
for (i=0;i<nvalues;i++) { for (i=0;i<nvalues;i++) {
if (values[i].error==err) name=(char*)values[i].name; if (values[i].error==err) name=(char*)values[i].name;
} }
printf("ERROR: \"%s\" %s\n",name,grib_get_error_message(err)); printf("ERROR: \"%s\" %s\n",name,codes_get_error_message(err));
} }
return 0; return 0;