Examples: cleanup

This commit is contained in:
Shahram Najm 2021-11-30 12:44:37 +00:00
parent 986cad5ede
commit 53a870d67b
18 changed files with 77 additions and 79 deletions

View File

@ -34,7 +34,7 @@ int main(int argc, char* argv[])
{
FILE* in = NULL;
/* Message handle. Required in all the eccodes calls acting on a message.*/
/* message handle. Required in all the ecCodes calls acting on a message.*/
codes_handle* h = NULL;
double *sigt_pres = NULL, *sigt_geo = NULL, *sigt_t = NULL;
@ -51,7 +51,7 @@ int main(int argc, char* argv[])
return 1;
}
/* Loop over the messages in the BUFR file */
/* loop over the messages in the BUFR file */
while ((h = codes_handle_new_from_file(NULL, in, PRODUCT_BUFR, &err)) != NULL || err != CODES_SUCCESS) {
if (h == NULL) {
fprintf(stderr, "Error: unable to create handle for message %d\n", cnt);
@ -61,11 +61,11 @@ int main(int argc, char* argv[])
printf("message: %d\n", cnt);
/* We need to instruct ecCodes to expand the descriptors
i.e. unpack the data values */
/* we need to instruct ecCodes to expand the descriptors
i.e., unpack the data values */
CODES_CHECK(codes_set_long(h, "unpack", 1), 0);
/* In what follows we rely on the fact that for
/* in what follows we rely on the fact that for
* temperature significant levels the value of key
* verticalSoundingSignificance is 4 (see flag table 8001 for details).
*
@ -76,9 +76,9 @@ int main(int argc, char* argv[])
* condition: verticalSoundingSignificance=4.
*/
/* Get the number of the temperature significant levels.*/
/* get the number of the temperature significant levels.*/
/* We find out the number of temperature significant levels by
/* we find out the number of temperature significant levels by
* counting how many pressure values we have on these levels.*/
sprintf(key_name, "/verticalSoundingSignificance=4/pressure");
@ -86,22 +86,22 @@ int main(int argc, char* argv[])
printf("Number of T significant levels: %lu\n", (unsigned long)sigt_len);
/* Allocate memory for the values to be read. Each
/* allocate memory for the values to be read. Each
* parameter must have the same number of values. */
sigt_pres = (double*)malloc(sigt_len * sizeof(double));
sigt_geo = (double*)malloc(sigt_len * sizeof(double));
sigt_t = (double*)malloc(sigt_len * sizeof(double));
sigt_td = (double*)malloc(sigt_len * sizeof(double));
/* Get pressure */
/* get pressure */
sprintf(key_name, "/verticalSoundingSignificance=4/pressure");
len = sigt_len;
CODES_CHECK(codes_get_double_array(h, key_name, sigt_pres, &len), 0);
/* Get geopotential */
/* get geopotential */
sprintf(key_name, "/verticalSoundingSignificance=4/nonCoordinateGeopotential");
/* Check the size */
/* check the size */
CODES_CHECK(codes_get_size(h, key_name, &len), 0);
if (len != sigt_len) {
fprintf(stderr, "Error: inconsistent number of geopotential values found!\n");
@ -109,32 +109,32 @@ int main(int argc, char* argv[])
return 1;
}
/* Get the values */
/* get the values */
CODES_CHECK(codes_get_double_array(h, key_name, sigt_geo, &len), 0);
/* Get temperature */
if (len != sigt_len) { /* Check the size */
/* get temperature */
if (len != sigt_len) { /* check the size */
fprintf(stderr, "Error: inconsistent number of temperature values found!\n");
free_memory(sigt_pres, sigt_geo, sigt_t, sigt_td);
return 1;
}
/* Get the values */
/* get the values */
sprintf(key_name, "/verticalSoundingSignificance=4/airTemperature");
CODES_CHECK(codes_get_double_array(h, key_name, sigt_t, &len), 0);
/* Get dew point */
if (len != sigt_len) { /* Check the size */
/* get dew point */
if (len != sigt_len) { /* check the size */
fprintf(stderr, "Error: inconsistent number of dewpoint temperature values found!\n");
free_memory(sigt_pres, sigt_geo, sigt_t, sigt_td);
return 1;
}
/* Get the values */
/* get the values */
sprintf(key_name, "/verticalSoundingSignificance=4/dewpointTemperature");
CODES_CHECK(codes_get_double_array(h, key_name, sigt_td, &len), 0);
/* Print the values */
/* print the values */
printf("lev pres geo t td\n");
printf("-------------------------------\n");
@ -143,10 +143,8 @@ int main(int argc, char* argv[])
(unsigned long)(i + 1), sigt_pres[i], sigt_geo[i], sigt_t[i], sigt_td[i]);
}
/* Delete handle */
/* release memory */
codes_handle_delete(h);
/* Release memory */
free_memory(sigt_pres, sigt_geo, sigt_t, sigt_td);
cnt++;

View File

@ -68,8 +68,8 @@ int main(int argc, char* argv[])
i.e. unpack the data values */
/*CODES_CHECK(codes_set_long(h,"unpack",1),0);*/
/* This is the place where you may wish to modify the message*/
/*E.g. we change the centre */
/* this is the place where you may wish to modify the message */
/* e.g. we change the centre */
/* set bufrHeaderCentre */
longVal = 222;

View File

@ -58,8 +58,8 @@ int main(int argc, char* argv[])
return 1;
}
/* This is the place where you may wish to modify the clone */
/* E.g.
/* this is the place where you may wish to modify the clone */
/* e.g.
CODES_CHECK(codes_set_long(clone_handle, "centre", 250),0);
etc...
*/

View File

@ -58,7 +58,7 @@ int main(int argc, char** argv)
}
fclose(in);
/* Store the filename in the key "file" for this handle */
/* store the filename in the key "file" for this handle */
len = strlen(filename);
CODES_CHECK(codes_set_string(h, "file", filename, &len), 0);
@ -121,7 +121,7 @@ int main(int argc, char** argv)
{
int eq = 0;
/* Now retrieve the value of the key "file" */
/* now retrieve the value of the key "file" */
char file[256] = {0,};
CODES_CHECK(codes_get_length(h, "file", &len), 0);
assert(len == 1 + strlen(filename));
@ -131,7 +131,7 @@ int main(int argc, char** argv)
}
{
/* Example of getting bytes */
/* example of getting bytes */
const char* name = "reservedNeedNotBePresent";
unsigned char* byte_val = NULL;
size_t keySize = 0;

View File

@ -42,14 +42,14 @@ int main(int argc, char* argv[])
printf("indexing...\n");
/* Create an index given set of keys*/
/* create an index given set of keys*/
index = codes_index_new(0, "shortName,level,number,step", &ret);
if (ret) {
fprintf(stderr, "Error: %s\n", codes_get_error_message(ret));
exit(ret);
}
/* Indexes a file */
/* indexes a file */
ret = codes_index_add_file(index, infile);
if (ret) {
fprintf(stderr, "Error: %s\n", codes_get_error_message(ret));

View File

@ -30,14 +30,14 @@ int main(int argc, char** argv)
FILE* in = NULL;
int err = 0;
double lat, lon, value;
double missingValue = 1e+20; /* A value out of range */
double missingValue = 1e+20; /* a value out of range */
int n = 0;
long bitmapPresent = 0;
char* filename = NULL;
/* Message handle. Required in all the ecCodes calls acting on a message.*/
/* message handle. Required in all the ecCodes calls acting on a message.*/
codes_handle* h = NULL;
/* Iterator on lat/lon/values.*/
/* iterator on lat/lon/values.*/
codes_iterator* iter = NULL;
if (argc != 2) usage(argv[0]);
@ -50,28 +50,28 @@ int main(int argc, char** argv)
return 1;
}
/* Loop on all the messages in a file.*/
/* loop on all the messages in a file.*/
while ((h = codes_handle_new_from_file(0, in, PRODUCT_GRIB, &err)) != NULL) {
/* Check of errors after reading a message. */
/* check of errors after reading a message. */
if (err != CODES_SUCCESS) CODES_CHECK(err, 0);
/* Check if a bitmap applies */
/* check if a bitmap applies */
CODES_CHECK(codes_get_long(h, "bitmapPresent", &bitmapPresent), 0);
if (bitmapPresent) {
/* Set the double representing the missing value in the field. */
/* Choose a missingValue that does not correspond to any real value in the data array */
/* set the double representing the missing value in the field. */
/* choose a missingValue that does not correspond to any real value in the data array */
CODES_CHECK(codes_set_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 = codes_grib_iterator_new(h, 0, &err);
if (err != CODES_SUCCESS) CODES_CHECK(err, 0);
n = 0;
/* Loop on all the lat/lon/values. */
/* loop on all the lat/lon/values. */
while (codes_grib_iterator_next(iter, &lat, &lon, &value)) {
/* You can now print lat and lon, */
/* now print lat and lon, */
printf("- %d - lat=%f lon=%f value=", n, lat, lon);
/* decide what to print if a missing value is found. */
if (bitmapPresent && value == missingValue) printf("missing\n");
@ -81,10 +81,10 @@ int main(int argc, char** argv)
n++;
}
/* At the end the iterator is deleted to free memory. */
/* at the end the iterator is deleted to free memory. */
codes_grib_iterator_delete(iter);
/* At the end the codes_handle is deleted to free memory. */
/* at the end the codes_handle is deleted to free memory */
codes_handle_delete(h);
}

View File

@ -57,7 +57,7 @@ int main(int argc, char** argv)
CODES_CHECK(codes_get_long_array(h, "bitmap", bitmap, &bmp_len), 0);
printf("Bitmap is present. Num = %lu\n", (unsigned long)bmp_len);
}
/* Sanity check. Number of values must match number in bitmap */
/* sanity check. Number of values must match number in bitmap */
CODES_CHECK(codes_get_size(h, "values", &values_len), 0);
values = (double*)malloc(values_len * sizeof(double));
CODES_CHECK(codes_get_double_array(h, "values", values, &values_len), 0);
@ -65,21 +65,21 @@ int main(int argc, char** argv)
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 = codes_grib_iterator_new(h, 0, &err);
if (err != CODES_SUCCESS) CODES_CHECK(err, 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 (codes_grib_iterator_next(iter, &lat, &lon, &value)) {
/* Consult bitmap to see if the n'th value is missing */
/* consult bitmap to see if the n'th value is missing */
int is_missing_val = (bitmapPresent && bitmap[n] == 0);
if (!is_missing_val) {
printf("- %d - lat=%f lon=%f value=%f\n", n, lat, lon, value);
}
n++;
}
/* Check number of elements in iterator matches value count */
/* check number of elements in iterator matches value count */
assert(n == values_len);
codes_grib_iterator_delete(iter);

View File

@ -31,14 +31,14 @@ static void usage(char* progname);
int main(int argc, char* argv[])
{
/* To skip read only and computed keys
unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_SKIP_READ_ONLY |
/* to skip read only and computed keys
unsigned long key_iterator_filter_flags=CODES_KEYS_ITERATOR_SKIP_READ_ONLY |
CODES_KEYS_ITERATOR_SKIP_COMPUTED;
*/
unsigned long key_iterator_filter_flags = CODES_KEYS_ITERATOR_ALL_KEYS |
CODES_KEYS_ITERATOR_SKIP_DUPLICATES;
/* Choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" */
/* choose a namespace. E.g. "ls", "time", "parameter", "geography", "statistics" */
const char* name_space = "ls";
/* name_space=NULL to get all the keys */
@ -79,7 +79,7 @@ int main(int argc, char* argv[])
CODES_CHECK(codes_get_string(h, name, value, &vlen), name);
printf("%s = %s\n", name, value);
/* Alternative way of getting the string value */
/* alternative way of getting the string value */
CODES_CHECK(codes_keys_iterator_get_string(kiter, value, &vlen), 0);
}

View File

@ -51,11 +51,11 @@ int main(int argc, char** argv)
CODES_CHECK(codes_get_long(h, "numberOfContributingSpectralBands", &numberOfContributingSpectralBands), 0);
assert(numberOfContributingSpectralBands == 3);
/* Shrink NB to 2 */
/* shrink NB to 2 */
numberOfContributingSpectralBands = 2;
CODES_CHECK(codes_set_long(h, "numberOfContributingSpectralBands", numberOfContributingSpectralBands), 0);
/* Expand NB to 9 */
/* expand NB to 9 */
numberOfContributingSpectralBands = 9;
CODES_CHECK(codes_set_long(h, "numberOfContributingSpectralBands", numberOfContributingSpectralBands), 0);

View File

@ -46,11 +46,11 @@ int main(int argc, char** argv)
if (argc < 2) usage(argv[0]);
/* Input lat/lon file should have 3 columns:
/* input lat/lon file should have 3 columns:
* number latitude longitude
*/
fname = argv[1];
fin = fopen(fname, "r"); /* Open in text mode */
fin = fopen(fname, "r"); /* open in text mode */
if (!fin) {
perror(fname);
exit(1);
@ -111,7 +111,7 @@ int main(int argc, char** argv)
}
fname = argv[1];
fin = fopen(fname, "r"); /* Open in text mode */
fin = fopen(fname, "r"); /* open in text mode */
if (!fin) {
perror(fname);
exit(1);
@ -127,9 +127,9 @@ int main(int argc, char** argv)
}
fclose(fin);
/* The first GRIB file on the arguments is treated as the land-sea mask file */
/* the first GRIB file on the arguments is treated as the land-sea mask file */
fname = argv[2];
fin = fopen(fname, "rb"); /* Open GRIB in binary mode */
fin = fopen(fname, "rb"); /* open GRIB in binary mode */
if (!fin) {
perror(fname);
exit(1);

View File

@ -78,7 +78,7 @@ int main(int argc, char** argv)
CODES_CHECK(codes_get_double_array(h, "values", values1, &size), 0);
/* changing decimal precision to 2 means that 2 decimal digits
are preserved when packing. */
are preserved when packing. */
decimalPrecision = 2;
CODES_CHECK(codes_set_long(h, "changeDecimalPrecision", decimalPrecision), 0);

View File

@ -73,7 +73,7 @@ int main(int argc, char** argv)
printf("max=%.10e min=%.10e average=%.10e\n", max, min, average);
{
/* Example of accessing specific elements from data values */
/* example of accessing specific elements from data values */
double vals_arr[3] = { 0, 0, 0 };
const int NUM = 3;
int index_arr[3];

View File

@ -54,14 +54,14 @@ int main(int argc, char* argv[])
CODES_CHECK(err, 0);
fclose(in);
/* The sections for the "what" argument are:
* CODES_SECTION_PRODUCT
* CODES_SECTION_GRID
* CODES_SECTION_LOCAL
* CODES_SECTION_DATA
* CODES_SECTION_BITMAP
* One can bitwise-OR them to have more than one section copied
* E.g. what = CODES_SECTION_PRODUCT | CODES_SECTION_LOCAL;
/* the sections for the "what" argument are:
* CODES_SECTION_PRODUCT
* CODES_SECTION_GRID
* CODES_SECTION_LOCAL
* CODES_SECTION_DATA
* CODES_SECTION_BITMAP
* one can bitwise-OR them to have more than one section copied
* e.g. what = CODES_SECTION_PRODUCT | CODES_SECTION_LOCAL;
*/
for (i = 0; i < strlen(what_str); ++i) {
if (what_str[i] == 'p') {
@ -85,11 +85,10 @@ int main(int argc, char* argv[])
what |= CODES_SECTION_BITMAP;
}
else if (isspace(what_str[i]) || what_str[i] == ',') {
/* Ignore spaces and comma separator */
/* ignore spaces and comma separator */
}
else {
fprintf(stderr, "Invalid option: '%c'. Ignoring.\n",
what_str[i]);
fprintf(stderr, "Invalid option: '%c'. Ignoring.\n", what_str[i]);
}
}

View File

@ -76,7 +76,7 @@ int main(int argc, char** argv)
/* set the values (the bitmap will be automatically built) */
CODES_CHECK(codes_set_double_array(h, "values", values, values_len), 0);
/* Sanity checks */
/* sanity checks */
CODES_CHECK(codes_get_long(h, "numberOfDataPoints", &num_of_data_points), 0);
CODES_CHECK(codes_get_long(h, "numberOfCodedValues", &num_of_coded_values), 0);
CODES_CHECK(codes_get_long(h, "numberOfMissing", &num_of_missing), 0);

View File

@ -38,7 +38,8 @@ int main(int argc, char** argv)
/* see where that is). The default sample path can be changed by */
/* setting the environment variable ECCODES_SAMPLES_PATH */
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 = codes_samples_path(NULL);
codes_handle* h = NULL;
double d, e;
@ -53,7 +54,7 @@ int main(int argc, char** argv)
return 1;
}
/* Here we're changing the data values only, so the number of values */
/* here we're changing the data values only, so the number of values */
/* will be the same as the sample GRIB. */
/* 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 */

View File

@ -58,7 +58,7 @@ int main(int argc, char** argv)
CODES_CHECK(codes_set_missing(h, "scaleFactorOfFirstFixedSurface"), 0);
CODES_CHECK(codes_set_missing(h, "scaledValueOfFirstFixedSurface"), 0);
/* See GRIB-490 */
/* see GRIB-490 */
CODES_CHECK(codes_get_long(h, "Ni", &Ni), 0);
is_missing = codes_is_missing(h, "Ni", &err);
assert(!err);

View File

@ -68,7 +68,7 @@ int main(int argc, char** argv)
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 */
CODES_CHECK(codes_get_long(h, "NV", &NV), 0);
assert(NV == pvsize);

View File

@ -24,7 +24,7 @@ int main()
values = (double*)malloc(ni * nj * sizeof(double));
if (!values) {
printf("Malloc failed\n");
printf("Malloc failed - requested %lu bytes\n", ni * nj * sizeof(double));
exit(1);
}