NCEPLIBS-g2c 2.0.0
Loading...
Searching...
No Matches
grib2.h
Go to the documentation of this file.
1
18#ifndef _grib2_H
19#define _grib2_H
20#include <stdint.h>
21#include <stdio.h>
22#include <string.h>
23#include <sys/types.h>
24
25#define G2C_VERSION "2.0.0"
27#define G2_PNG_ENABLED 1
28#define G2_JPEG2000_ENABLED 1
29/* #undef G2_AEC_ENABLED */
30
32typedef int64_t g2int;
33
36typedef uint64_t g2intu;
37
40typedef float g2float;
41
220
221typedef struct gribfield gribfield;
223/* Prototypes for unpacking sections API */
224g2int g2_unpack1(unsigned char *cgrib, g2int *iofst, g2int **ids, g2int *idslen);
225g2int g2_unpack2(unsigned char *cgrib, g2int *iofst, g2int *lencsec2,
226 unsigned char **csec2);
227g2int g2_unpack3(unsigned char *cgrib, g2int *iofst, g2int **igds, g2int **igdstmpl,
228 g2int *mapgridlen, g2int **ideflist, g2int *idefnum);
229g2int g2_unpack4(unsigned char *cgrib, g2int *iofst, g2int *ipdsnum, g2int **ipdstmpl,
230 g2int *mappdslen, float **coordlist, g2int *numcoord);
231g2int g2_unpack5(unsigned char *cgrib, g2int *iofst, g2int *ndpts, g2int *idrsnum,
232 g2int **idrstmpl, g2int *mapdrslen);
233g2int g2_unpack6(unsigned char *cgrib, g2int *iofst, g2int ngpts, g2int *ibmap,
234 g2int **bmap);
235g2int g2_unpack7(unsigned char *cgrib, g2int *iofst, g2int igdsnum, g2int *igdstmpl,
236 g2int idrsnum, g2int *idrstmpl, g2int ndpts, float **fld);
237
238/* Prototypes for unpacking API */
239void seekgb(FILE *lugb, g2int iseek, g2int mseek, g2int *lskip,
240 g2int *lgrib);
241g2int g2_info(unsigned char *cgrib, g2int *listsec0, g2int *listsec1,
242 g2int *numfields, g2int *numlocal);
243g2int g2_getfld(unsigned char *cgrib, g2int ifldnum, g2int unpack, g2int expand,
244 gribfield **gfld);
245void g2_free(gribfield *gfld);
246
247/* Prototypes for packing API */
248g2int g2_create(unsigned char *cgrib, g2int *listsec0, g2int *listsec1);
249g2int g2_addlocal(unsigned char *cgrib, unsigned char *csec2, g2int lcsec2);
250g2int g2_addgrid(unsigned char *cgrib, g2int *igds, g2int *igdstmpl, g2int *ideflist,
251 g2int idefnum);
252g2int g2_addfield(unsigned char *cgrib, g2int ipdsnum, g2int *ipdstmpl,
253 float *coordlist, g2int numcoord, g2int idrsnum, g2int *idrstmpl,
254 float *fld, g2int ngrdpts, g2int ibmap, g2int *bmap);
255g2int g2_gribend(unsigned char *cgrib);
256
257/* The file-based g2c API was introduced in version 2.0.0 of the library. */
258
259/* Data types. */
260#define G2C_BYTE 1
261#define G2C_CHAR 2
262#define G2C_SHORT 3
263#define G2C_INT 4
264#define G2C_FLOAT 5
265#define G2C_DOUBLE 6
266#define G2C_UBYTE 7
267#define G2C_USHORT 8
268#define G2C_UINT 9
269#define G2C_INT64 10
270#define G2C_UINT64 11
272/* Defines for file handling. */
273#define G2C_MAX_FILES 3
274#define G2C_MAX_NAME 1024
275#define G2C_NOWRITE 0x0000
276#define G2C_WRITE 0x0001
277#define G2C_CLOBBER 0x0000
278#define G2C_NOCLOBBER 0x0004
279#define G2C_LARGE_FILE_INDEX 0x0008
281/* Useful constants. */
282#define G2C_SECTION0_BYTES 16
286#define G2C_SECTION1_BYTES 21
287
288#define G2C_SECTION0_LEN 3
289#define G2C_SECTION1_LEN 13
291/* Constants to help with templates. */
292#define G2C_MAX_GDS_TEMPLATE 31
293#define G2C_MAX_GDS_TEMPLATE_MAPLEN 28
294#define G2C_MAX_PDS_TEMPLATE 47
295#define G2C_MAX_PDS_TEMPLATE_MAPLEN 45
296#define G2C_MAX_DRS_TEMPLATE 10
297#define G2C_MAX_DRS_TEMPLATE_MAPLEN 18
299/* File handling functions. */
300int g2c_open(const char *path, int mode, int *g2cid);
301int g2c_open_index(const char *data_file, const char *index_file, int mode, int *g2cid);
302int g2c_close(int g2cid);
303int g2c_write_index(int g2cid, int mode, const char *index_file);
304
305/* GRIB1 file functions. */
306int g2c_open_index1(const char *index_file);
307
308/* Inquiry functions. */
309int g2c_inq(int g2cid, int *num_msg);
310int g2c_inq_msg(int g2cid, int msg_num, unsigned char *discipline, int *num_fields,
311 int *num_local, short *center, short *subcenter, unsigned char *master_version,
312 unsigned char *local_version);
313int g2c_inq_msg_time(int g2cid, int msg_num, unsigned char *sig_ref_time, short *year,
314 unsigned char *month, unsigned char *day, unsigned char *hour,
315 unsigned char *minute, unsigned char *second);
316int g2c_inq_prod(int g2cid, int msg_num, int prod_num, int *pds_template_len,
317 long long int *pds_template, int *gds_template_len, long long int *gds_template,
318 int *drs_template_len, long long int *drs_template);
319int g2c_inq_dim(int g2cid, int msg_num, int prod_num, int dim_num, size_t *len,
320 char *name, float *val);
321
322/* Getting data. */
323int g2c_get_prod(int g2cid, int msg_num, int prod_num, int *num_data_points,
324 float *data);
325
326/* Templates. */
327int g2c_get_grid_template(int grid_template_num, int *maplen, int *map, int *needext);
328int g2c_get_grid_template_extension(int grid_template_num, int *g2c_template,
329 int *extlen, int *ext);
330int g2c_get_pds_template_extension(int pds_template_num, int *g2c_template,
331 int *extlen, int *ext);
332int g2c_get_pds_template(int pds_template_num, int *maplen, int *map, int *needext);
333int g2c_get_drs_template(int drs_template_num, int *maplen, int *map, int *needext);
334
335/* Internal functions. */
336int g2c_get_msg(int g2cid, size_t skip_bytes, size_t max_bytes, size_t *bytes_to_msg,
337 size_t *bytes_in_msg, unsigned char **cbuf);
338int g2c_find_msg2(int g2cid, size_t skip_bytes, size_t max_bytes, size_t *bytes_to_msg,
339 size_t *bytes_in_msg);
340int g2c_csv_init();
341int g2c_find_desc_str(char *title, char *code, char *desc);
342int g2c_find_desc(char *title, int code, char *desc);
343void g2c_free_tables();
344void g2c_gbit_int(unsigned char *in, int *iout, int iskip, int nbits);
345int g2c_gbits_int(unsigned char *in, int *iout, int iskip, int nbits,
346 int nskip, int n);
347int g2c_seekmsg(int g2cid, size_t skip, size_t *offset, size_t *msglen);
348
349/* Logging, for debugging purposes. */
350int g2c_set_log_level(int new_level);
351int g2c_log_file(int g2cid);
352
353/* Error handling. */
354const char *g2c_strerror(int g2cerr);
355
356/* Compression. */
357int g2c_unpack7(unsigned char *cgrib, int igdsnum, int gds_tmpl_len, long long int *gdstmpl,
358 int idrsnum, int drs_tmpl_len, long long int *drstmpl, int ndpts, float *fld);
359int g2c_pngpackf(float *fld, size_t width, size_t height, int *idrstmpl,
360 unsigned char *cpack, int *lcpack);
361int g2c_pngpackd(double *fld, size_t width, size_t height, int *idrstmpl,
362 unsigned char *cpack, int *lcpack);
363int g2c_pngunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
364 float *fld);
365int g2c_pngunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
366 double *fld);
367int g2c_jpcpackf(float *fld, size_t width, size_t height, int *idrstmpl,
368 unsigned char *cpack, size_t *lcpack);
369int g2c_jpcpackd(double *fld, size_t width, size_t height, int *idrstmpl,
370 unsigned char *cpack, size_t *lcpack);
371int g2c_jpcunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
372 float *fld);
373int g2c_jpcunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
374 double *fld);
375int g2c_enc_jpeg2000(unsigned char *cin, int width, int height, int nbits,
376 int ltype, int ratio, int retry, char *outjpc,
377 size_t jpclen);
378int g2c_dec_jpeg2000(char *injpc, size_t bufsize, int *outfld);
379int g2c_aecpackf(float *fld, size_t width, size_t height, int *idrstmpl,
380 unsigned char *cpack, size_t *lcpack);
381int g2c_aecpackd(double *fld, size_t width, size_t height, int *idrstmpl,
382 unsigned char *cpack, size_t *lcpack);
383int g2c_aecunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
384 float *fld);
385int g2c_aecunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts,
386 double *fld);
387
388/* Testing. */
389int g2c_compare(int g2cid1, int g2cid2);
390
391/* Output. */
392int g2c_degrib2(int g2cid, const char *fileout);
393
394/* Parameters. */
395int g2c_param_g1tog2(int g1val, int g1ver, int *g2disc, int *g2cat, int *g2num);
396int g2c_param_abbrev(int g2disc, int g2cat, int g2num, char *abbrev);
397int g2c_param_g2tog1(int g2disc, int g2cat, int g2num, int *g1val, int *g1ver);
398int g2c_param_all(int param_idx, int *g1ver, int *g1val, int *g2disc, int *g2cat,
399 int *g2num, char *abbdrev);
400
401/* Useful constants. */
402#define G2C_SECTION0_ARRAY_LEN 3
403#define G2C_SECTION1_ARRAY_LEN 13
405#define G2C_JPEG_DRS_TEMPLATE_LEN 7
406#define G2C_PNG_DRS_TEMPLATE_LEN 5
407#define G2C_AEC_DRS_TEMPLATE_LEN 8
409#define G2C_MAX_GRIB_DESC_LEN 512
410#define G2C_MAX_GRIB_STATUS_LEN 40
411#define G2C_MAX_GRIB_LEVEL_DESC_LEN 40
412#define G2C_MAX_GRIB_CODE_LEN 20
413#define G2C_MAX_GRIB_TITLE_LEN 200
414#define G2C_MAX_NUM_SECTIONS 1024
416#define G2C_MAX_NOAA_PARAMS 2000
417#define G2C_MAX_NOAA_ABBREV_LEN 8
418#define G2C_MAX_NOAA_PARAM_LINE_LEN 120
420#define G2C_JASPER_MAX_MEM 268435456
422/* Error codes for G2 API. */
423#define G2_NO_ERROR 0
424#define G2_CREATE_GRIB_VERSION -1
425#define G2_INFO_NO_GRIB 1
426#define G2_INFO_GRIB_VERSION 2
427#define G2_INFO_NO_SEC1 3
428#define G2_INFO_WRONG_END 4
429#define G2_INFO_BAD_END 5
430#define G2_INFO_INVAL_SEC 6
431#define G2_GETFLD_NO_GRIB 1
432#define G2_GETFLD_GRIB_VERSION 2
433#define G2_GETFLD_INVAL 3
434#define G2_GETFLD_WRONG_END 4
435#define G2_GETFLD_WRONG_NFLDS 6
436#define G2_GETFLD_BAD_END 7
437#define G2_GETFLD_INVAL_SEC 8
438#define G2_GETFLD_NO_DRT 9
439#define G2_GETFLD_BAD_SEC1 15
440#define G2_GETFLD_BAD_SEC2 16
441#define G2_GETFLD_BAD_SEC3 10
442#define G2_GETFLD_BAD_SEC4 11
443#define G2_GETFLD_BAD_SEC5 12
444#define G2_GETFLD_BAD_SEC6 13
445#define G2_GETFLD_BAD_SEC7 14
446#define G2_GETFLD_NO_BITMAP 17
447#define G2_GRIBEND_MSG_INIT -1
448#define G2_BAD_SEC -4
449#define G2_UNPACK_BAD_SEC 2
450#define G2_UNPACK_NO_MEM 6
451#define G2_UNPACK3_BAD_GDT 5
452#define G2_UNPACK4_BAD_PDT 5
453#define G2_UNPACK5_BAD_DRT 7
454#define G2_UNPACK6_BAD_BITMAP 4
455#define G2_UNPACK7_CORRUPT_SEC 7
456#define G2_UNPACK7_WRONG_GDT 5
457#define G2_UNPACK7_BAD_DRT 4
458#define G2_ADD_MSG_INIT -1
459#define G2_ADD_MSG_COMPLETE -2
460#define G2_BAD_SEC_COUNTS -3
461#define G2_ADDFIELD_BAD_PDT -5
462#define G2_ADDFIELD_BAD_GDS -6
463#define G2_ADDFIELD_BAD_DRT -7
464#define G2_ADDFIELD_BAD_BITMAP -8
465#define G2_ADDFIELD_BAD_GDT -9
466#define G2_ADDFIELD_ERR -10
467#define G2_ADDGRID_BAD_GDT -5
468#define G2_JPCUNPACK_MEM 1
469#define G2_SPECUNPACK_TYPE -3
470#define G2_JASPER_INIT -2
471#define G2_JASPER_ENCODE -3
472#define G2_JASPER_DECODE -3
473#define G2_JASPER_DECODE_COLOR -5
475/* These are the new error codes. */
476#define G2C_NOERROR 0
477#define G2C_ERROR 1
478#define G2C_ENOTGRIB (-50)
479#define G2C_EMSGCOMPLETE (-51)
480#define G2C_ENAMETOOLONG (-52)
481#define G2C_EINVAL (-53)
482#define G2C_EFILE (-54)
483#define G2C_EBADID (-55)
484#define G2C_ETOOMANYFILES (-56)
485#define G2C_ENOMEM (-57)
486#define G2C_EMSG (-58)
487#define G2C_ENOMSG (-59)
488#define G2C_EXML (-60)
489#define G2C_ENOTFOUND (-61)
490#define G2C_ENOTGRIB2 (-62)
491#define G2C_ENOSECTION (-63)
492#define G2C_ENOEND (-64)
493#define G2C_EBADEND (-65)
494#define G2C_EBADSECTION (-66)
495#define G2C_EJPEG (-67)
496#define G2C_EPNG (-68)
497#define G2C_ENOTEMPLATE (-69)
498#define G2C_EBADTEMPLATE (-70)
499#define G2C_ENOPARAM (-71)
500#define G2C_ENOPRODUCT (-72)
501#define G2C_EBADTYPE (-73)
502#define G2C_EAEC (-74)
503#define G2C_ECSV (-75)
505#endif /* _grib2_H */
g2int g2_unpack5(unsigned char *cgrib, g2int *iofst, g2int *ndpts, g2int *idrsnum, g2int **idrstmpl, g2int *mapdrslen)
Unpack Section 5 (Data Representation Section) of a GRIB2 message.
Definition g2_unpack5.c:40
g2int igdtnum
Grid Definition Template Number (See Table 3.1).
Definition grib2.h:148
void g2_free(gribfield *gfld)
Free memory that was allocated for struct gribfield.
Definition g2_free.c:23
g2int locallen
Length of array local.
Definition grib2.h:110
g2int g2_create(unsigned char *cgrib, g2int *listsec0, g2int *listsec1)
Initialize a new GRIB2 message and pack GRIB2 Section 0 (Indicator Section) and Section 1 (Identifica...
Definition g2_create.c:68
g2int ibmap
Bitmap indicator (see Table 6.0).
Definition grib2.h:211
int g2c_inq(int g2cid, int *num_msg)
Learn about a GRIB2 file.
Definition g2cinq.c:31
int g2c_open_index(const char *data_file, const char *index_file, int mode, int *g2cid)
Open a GRIB2 file with the help of an index file.
Definition g2cindex.c:902
g2int g2_addgrid(unsigned char *cgrib, g2int *igds, g2int *igdstmpl, g2int *ideflist, g2int idefnum)
Packs a Grid Definition Section (Section 3) and adds it to a GRIB2 message.
Definition g2_addgrid.c:66
int g2c_jpcunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, double *fld)
Unpack JPEG2000 compressed data into an array of doubles, using info from the GRIB2 Data Representati...
Definition jpcunpack.c:199
int g2c_aecpackf(float *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t *lcpack)
This function packs up a float array into a AEC code stream.
Definition aecpack.c:346
g2int interp_opt
Interpretation of list for optional points definition.
Definition grib2.h:133
g2int ngrdpts
Number of grid points in the defined grid.
Definition grib2.h:123
int g2c_find_desc_str(char *title, char *code, char *desc)
Given a table title and a code, find a description.
Definition g2ccsv.c:84
int g2c_dec_jpeg2000(char *injpc, size_t bufsize, int *outfld)
Decode a JPEG2000 code stream specified in the JPEG2000 Part-1 standard (i.e., ISO/IEC 15444-1) using...
int g2c_open(const char *path, int mode, int *g2cid)
Open an existing GRIB2 file.
Definition g2cfile.c:1190
const char * g2c_strerror(int g2cerr)
Given an error code, return an error message.
Definition g2cutil.c:29
void seekgb(FILE *lugb, g2int iseek, g2int mseek, g2int *lskip, g2int *lgrib)
Search a file for the next GRIB Message.
Definition seekgb.c:46
int g2c_jpcpackd(double *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t *lcpack)
This function packs up a double array into a JPEG2000 code stream.
Definition jpcpack.c:386
int g2c_param_g2tog1(int g2disc, int g2cat, int g2num, int *g1val, int *g1ver)
Translate GRIB2 parameter to GRIB1 parameter.
Definition g2cparams.c:1136
g2int ifldnum
Field number within GRIB message.
Definition grib2.h:113
int g2c_jpcunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, float *fld)
Unpack JPEG2000 compressed data into an array of floats, using info from the GRIB2 Data Representatio...
Definition jpcunpack.c:159
float g2float
Float type.
Definition grib2.h:40
int g2c_param_abbrev(int g2disc, int g2cat, int g2num, char *abbrev)
Get NOAA abbreviation for a GRIB2 parameter.
Definition g2cparams.c:1091
int g2c_open_index1(const char *index_file)
Open a GRIB1 index file and read the contents.
Definition g2cindex.c:800
int g2c_pngunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, double *fld)
This subroutine unpacks a data field that was packed into a PNG image format using info from the GRIB...
Definition pngunpack.c:188
g2int g2_unpack7(unsigned char *cgrib, g2int *iofst, g2int igdsnum, g2int *igdstmpl, g2int idrsnum, g2int *idrstmpl, g2int ndpts, float **fld)
This subroutine unpacks Section 7 (Data Section) of a GRIB2 message.
Definition g2_unpack7.c:214
g2int g2_unpack4(unsigned char *cgrib, g2int *iofst, g2int *ipdsnum, g2int **ipdstmpl, g2int *mappdslen, float **coordlist, g2int *numcoord)
Unpack Section 4 (Product Definition Section) of a GRIB2 message.
Definition g2_unpack4.c:45
int g2c_aecunpackd(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, double *fld)
Unpack AEC compressed data into an array of doubles, using info from the GRIB2 Data Representation Te...
Definition aecunpack.c:232
g2int griddef
Source of grid definition (see Table 3.0).
Definition grib2.h:120
int g2c_find_desc(char *title, int code, char *desc)
Given a table title and an integer code, find a description.
Definition g2ccsv.c:131
g2int ipdtnum
Product Definition Template Number (see Table 4.0).
Definition grib2.h:160
g2int * ipdtmpl
Contains the data values for the Product Definition Template specified by ipdtnum.
Definition grib2.h:168
g2int discipline
Message Discipline (see Table 0.0).
Definition grib2.h:52
g2int g2_unpack2(unsigned char *cgrib, g2int *iofst, g2int *lencsec2, unsigned char **csec2)
Unpack Section 2 (Local Use Section) of a GRIB2 message.
Definition g2_unpack2.c:37
int g2c_enc_jpeg2000(unsigned char *cin, int width, int height, int nbits, int ltype, int ratio, int retry, char *outjpc, size_t jpclen)
Encode a grayscale image into a JPEG2000 code stream specified in the JPEG2000 Part-1 standard (i....
int g2c_csv_init()
Initialize tables from "CodeFlag.txt".
Definition g2ccsv.c:189
g2int numoct_opt
Number of octets needed for each additional grid points definition.
Definition grib2.h:128
g2int g2_unpack1(unsigned char *cgrib, g2int *iofst, g2int **ids, g2int *idslen)
Unpacks Section 1 - Identification Section of a GRIB2 message.
Definition g2_unpack1.c:55
int g2c_get_pds_template(int pds_template_num, int *maplen, int *map, int *needext)
Get PDS template information.
int g2c_pngpackd(double *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, int *lcpack)
This subroutine packs up a double data field into PNG image format.
Definition pngpack.c:348
g2int idrtlen
Number of elements in idrtmpl.
Definition grib2.h:186
int g2c_get_grid_template_extension(int grid_template_num, int *g2c_template, int *extlen, int *ext)
Get grid template extension information.
int g2c_close(int g2cid)
Close a GRIB2 file, freeing resources.
Definition g2cfile.c:1356
g2int unpacked
Logical value indicating whether the bitmap and data values were unpacked.
Definition grib2.h:194
int g2c_jpcpackf(float *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t *lcpack)
This function packs up a float array into a JPEG2000 code stream.
Definition jpcpack.c:320
int g2c_degrib2(int g2cid, const char *fileout)
Write a summary file like the degrib2 utility.
Definition g2cdegrib2.c:634
g2int g2_unpack6(unsigned char *cgrib, g2int *iofst, g2int ngpts, g2int *ibmap, g2int **bmap)
Unpack Section 6 (Bit-Map Section) of a GRIB2 message.
Definition g2_unpack6.c:32
g2int g2_gribend(unsigned char *cgrib)
Finalize a GRIB2 message after all grids and fields have been added.
Definition g2_gribend.c:40
int g2c_pngunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, float *fld)
This subroutine unpacks a data field that was packed into a PNG image format using info from the GRIB...
Definition pngunpack.c:156
g2int idsectlen
Number of elements in idsect.
Definition grib2.h:103
g2int ipdtlen
Number of elements in ipdtmpl - i.e.
Definition grib2.h:164
int g2c_inq_dim(int g2cid, int msg_num, int prod_num, int dim_num, size_t *len, char *name, float *val)
Learn about the one of the dimensions of a GRIB2 product.
Definition g2cinq.c:328
int g2c_inq_msg_time(int g2cid, int msg_num, unsigned char *sig_ref_time, short *year, unsigned char *month, unsigned char *day, unsigned char *hour, unsigned char *minute, unsigned char *second)
Learn about the date/time information in a GRIB2 message.
Definition g2cinq.c:149
int g2c_inq_prod(int g2cid, int msg_num, int prod_num, int *pds_template_len, long long int *pds_template, int *gds_template_len, long long int *gds_template, int *drs_template_len, long long int *drs_template)
Inquire about a product.
Definition g2cinq.c:207
uint64_t g2intu
Unsigned long integer type.
Definition grib2.h:36
float * coord_list
Array containing floating point values intended to document the vertical discretisation associated to...
Definition grib2.h:176
void g2c_free_tables()
Free table memory.
Definition g2ccsv.c:42
int g2c_get_msg(int g2cid, size_t skip_bytes, size_t max_bytes, size_t *bytes_to_msg, size_t *bytes_in_msg, unsigned char **cbuf)
Search a file for the next GRIB1 or GRIB2 message, and read it, allocating space in memory to hold th...
Definition g2cfile.c:291
int g2c_set_log_level(int new_level)
Use this to set the global log level.
Definition util.c:129
int g2c_inq_msg(int g2cid, int msg_num, unsigned char *discipline, int *num_fields, int *num_local, short *center, short *subcenter, unsigned char *master_version, unsigned char *local_version)
Learn about a GRIB2 message.
Definition g2cinq.c:86
g2int * igdtmpl
Contains the data values for the Grid Definition Template specified by igdtnum.
Definition grib2.h:156
g2int idrtnum
Data Representation Template Number (see Table 5.0).
Definition grib2.h:183
int g2c_write_index(int g2cid, int mode, const char *index_file)
Create an index file from a GRIB2 file, just like those created by the grb2index utility.
Definition g2cindex.c:431
g2int g2_addlocal(unsigned char *cgrib, unsigned char *csec2, g2int lcsec2)
Adds a Local Use Section (Section 2) to a GRIB2 message.
Definition g2_addlocal.c:41
g2int ndpts
Number of data points unpacked and returned.
Definition grib2.h:179
int g2c_get_drs_template(int drs_template_num, int *maplen, int *map, int *needext)
Get DRS template information.
int g2c_param_all(int param_idx, int *g1ver, int *g1val, int *g2disc, int *g2cat, int *g2num, char *abbdrev)
Return all the information about a parameter.
Definition g2cparams.c:1185
g2int * idrtmpl
Contains the data values for the Data Representation Template specified by idrtnum.
Definition grib2.h:190
int g2c_find_msg2(int g2cid, size_t skip_bytes, size_t max_bytes, size_t *bytes_to_msg, size_t *bytes_in_msg)
Search a file for the next GRIB1 or GRIB2 message.
Definition g2cfile.c:164
g2int * list_opt
(Used if numoct_opt .ne.
Definition grib2.h:144
int g2c_get_prod(int g2cid, int msg_num, int prod_num, int *num_data_points, float *data)
Read the data for a product.
Definition g2cprod.c:28
int g2c_param_g1tog2(int g1val, int g1ver, int *g2disc, int *g2cat, int *g2num)
Translate GRIB1 parameter to GRIB2 parameter.
Definition g2cparams.c:1051
int g2c_unpack7(unsigned char *cgrib, int igdsnum, int gds_tmpl_len, long long int *gdstmpl, int idrsnum, int drs_tmpl_len, long long int *drstmpl, int ndpts, float *fld)
This subroutine unpacks Section 7 (Data Section) of a GRIB2 message.
Definition g2_unpack7.c:259
int g2c_get_pds_template_extension(int pds_template_num, int *g2c_template, int *extlen, int *ext)
Get pds template extension information.
g2int g2_getfld(unsigned char *cgrib, g2int ifldnum, g2int unpack, g2int expand, gribfield **gfld)
Return all the metadata, template values, bit-map (if applicable), and the unpacked data for a data f...
Definition g2_getfld.c:93
g2int g2_info(unsigned char *cgrib, g2int *listsec0, g2int *listsec1, g2int *numfields, g2int *numlocal)
Search through a GRIB2 message and return the number of gridded fields found in the message and the n...
Definition g2_info.c:70
g2int version
GRIB edition number (2).
Definition grib2.h:48
int g2c_aecpackd(double *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, size_t *lcpack)
This function packs up a double array into a AEC code stream.
Definition aecpack.c:410
int g2c_log_file(int g2cid)
Print a summary of the contents of an open GRIB2 file.
Definition g2cutil.c:189
g2int g2_addfield(unsigned char *cgrib, g2int ipdsnum, g2int *ipdstmpl, float *coordlist, g2int numcoord, g2int idrsnum, g2int *idrstmpl, float *fld, g2int ngrdpts, g2int ibmap, g2int *bmap)
Pack sections 4 through 7 and adds them to a GRIB2 message.
g2int * idsect
Contains the entries in the Identification Section (Section 1).
Definition grib2.h:100
float * fld
Array of ndpts unpacked data points.
Definition grib2.h:218
g2int num_coord
Number of values in array coord_list.
Definition grib2.h:171
g2int g2_unpack3(unsigned char *cgrib, g2int *iofst, g2int **igds, g2int **igdstmpl, g2int *mapgridlen, g2int **ideflist, g2int *idefnum)
Unpack Section 3 (Grid Definition Section) of a GRIB2 message.
Definition g2_unpack3.c:62
int g2c_gbits_int(unsigned char *in, int *iout, int iskip, int nbits, int nskip, int n)
Extract arbitrary size values from a packed bit string, right justifying each value in the unpacked i...
Definition gbits.c:137
unsigned char * local
Pointer to character array containing contents of Local Section 2, if included.
Definition grib2.h:107
g2int expanded
Logical value indicating whether the data field was expanded to the grid in the case where a bit-map ...
Definition grib2.h:203
g2int num_opt
(Used if numoct_opt .ne.
Definition grib2.h:139
int g2c_pngpackf(float *fld, size_t width, size_t height, int *idrstmpl, unsigned char *cpack, int *lcpack)
This subroutine packs up a float data field into PNG image format.
Definition pngpack.c:294
g2int igdtlen
Number of elements in igdtmpl - i.e.
Definition grib2.h:152
int g2c_compare(int g2cid1, int g2cid2)
Compare the metadata of two open GRIB2 files.
Definition g2ccompare.c:28
g2int * bmap
Integer array containing decoded bitmap, if ibmap=0 or ibap=254.
Definition grib2.h:215
int g2c_aecunpackf(unsigned char *cpack, size_t len, int *idrstmpl, size_t ndpts, float *fld)
Unpack AEC compressed data into an array of floats, using info from the GRIB2 Data Representation Tem...
Definition aecunpack.c:194
int64_t g2int
Long integer type.
Definition grib2.h:32
int g2c_get_grid_template(int grid_template_num, int *maplen, int *map, int *needext)
Get grid template information.
int g2c_seekmsg(int g2cid, size_t skip, size_t *offset, size_t *msglen)
Search a file for the next GRIB2 Message.
Definition g2cfile.c:56
void g2c_gbit_int(unsigned char *in, int *iout, int iskip, int nbits)
Extract arbitrary size values from a packed bit string, right justifying each value in the unpacked i...
Definition gbits.c:113
Struct for GRIB2 field.
Definition grib2.h:46