25#define G2C_VERSION "2.0.0"
27#define G2_PNG_ENABLED 1
28#define G2_JPEG2000_ENABLED 1
226 unsigned char **csec2);
230 g2int *mappdslen,
float **coordlist,
g2int *numcoord);
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
282#define G2C_SECTION0_BYTES 16
286#define G2C_SECTION1_BYTES 21
288#define G2C_SECTION0_LEN 3
289#define G2C_SECTION1_LEN 13
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
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);
309int g2c_inq(
int g2cid,
int *num_msg);
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);
323int g2c_get_prod(
int g2cid,
int msg_num,
int prod_num,
int *num_data_points,
329 int *extlen,
int *ext);
331 int *extlen,
int *ext);
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);
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,
347int g2c_seekmsg(
int g2cid,
size_t skip,
size_t *offset,
size_t *msglen);
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);
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);
376 int ltype,
int ratio,
int retry,
char *outjpc,
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);
395int g2c_param_g1tog2(
int g1val,
int g1ver,
int *g2disc,
int *g2cat,
int *g2num);
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);
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
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
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
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)
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.
g2int igdtnum
Grid Definition Template Number (See Table 3.1).
void g2_free(gribfield *gfld)
Free memory that was allocated for struct gribfield.
g2int locallen
Length of array local.
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...
g2int ibmap
Bitmap indicator (see Table 6.0).
int g2c_inq(int g2cid, int *num_msg)
Learn about a GRIB2 file.
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.
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.
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...
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.
g2int interp_opt
Interpretation of list for optional points definition.
g2int ngrdpts
Number of grid points in the defined grid.
int g2c_find_desc_str(char *title, char *code, char *desc)
Given a table title and a code, find a description.
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.
const char * g2c_strerror(int g2cerr)
Given an error code, return an error message.
void seekgb(FILE *lugb, g2int iseek, g2int mseek, g2int *lskip, g2int *lgrib)
Search a file for the next GRIB Message.
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.
int g2c_param_g2tog1(int g2disc, int g2cat, int g2num, int *g1val, int *g1ver)
Translate GRIB2 parameter to GRIB1 parameter.
g2int ifldnum
Field number within GRIB message.
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...
int g2c_param_abbrev(int g2disc, int g2cat, int g2num, char *abbrev)
Get NOAA abbreviation for a GRIB2 parameter.
int g2c_open_index1(const char *index_file)
Open a GRIB1 index file and read the contents.
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...
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.
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.
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...
g2int griddef
Source of grid definition (see Table 3.0).
int g2c_find_desc(char *title, int code, char *desc)
Given a table title and an integer code, find a description.
g2int ipdtnum
Product Definition Template Number (see Table 4.0).
g2int * ipdtmpl
Contains the data values for the Product Definition Template specified by ipdtnum.
g2int discipline
Message Discipline (see Table 0.0).
g2int g2_unpack2(unsigned char *cgrib, g2int *iofst, g2int *lencsec2, unsigned char **csec2)
Unpack Section 2 (Local Use Section) of a GRIB2 message.
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".
g2int numoct_opt
Number of octets needed for each additional grid points definition.
g2int g2_unpack1(unsigned char *cgrib, g2int *iofst, g2int **ids, g2int *idslen)
Unpacks Section 1 - Identification Section of a GRIB2 message.
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.
g2int idrtlen
Number of elements in idrtmpl.
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.
g2int unpacked
Logical value indicating whether the bitmap and data values were unpacked.
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.
int g2c_degrib2(int g2cid, const char *fileout)
Write a summary file like the degrib2 utility.
g2int g2_unpack6(unsigned char *cgrib, g2int *iofst, g2int ngpts, g2int *ibmap, g2int **bmap)
Unpack Section 6 (Bit-Map Section) of a GRIB2 message.
g2int g2_gribend(unsigned char *cgrib)
Finalize a GRIB2 message after all grids and fields have been added.
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...
g2int idsectlen
Number of elements in idsect.
g2int ipdtlen
Number of elements in ipdtmpl - i.e.
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.
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.
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.
uint64_t g2intu
Unsigned long integer type.
float * coord_list
Array containing floating point values intended to document the vertical discretisation associated to...
void g2c_free_tables()
Free table memory.
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...
int g2c_set_log_level(int new_level)
Use this to set the global log level.
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.
g2int * igdtmpl
Contains the data values for the Grid Definition Template specified by igdtnum.
g2int idrtnum
Data Representation Template Number (see Table 5.0).
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.
g2int g2_addlocal(unsigned char *cgrib, unsigned char *csec2, g2int lcsec2)
Adds a Local Use Section (Section 2) to a GRIB2 message.
g2int ndpts
Number of data points unpacked and returned.
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.
g2int * idrtmpl
Contains the data values for the Data Representation Template specified by idrtnum.
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.
g2int * list_opt
(Used if numoct_opt .ne.
int g2c_get_prod(int g2cid, int msg_num, int prod_num, int *num_data_points, float *data)
Read the data for a product.
int g2c_param_g1tog2(int g1val, int g1ver, int *g2disc, int *g2cat, int *g2num)
Translate GRIB1 parameter to GRIB2 parameter.
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.
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...
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...
g2int version
GRIB edition number (2).
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.
int g2c_log_file(int g2cid)
Print a summary of the contents of an open GRIB2 file.
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).
float * fld
Array of ndpts unpacked data points.
g2int num_coord
Number of values in array coord_list.
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.
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...
unsigned char * local
Pointer to character array containing contents of Local Section 2, if included.
g2int expanded
Logical value indicating whether the data field was expanded to the grid in the case where a bit-map ...
g2int num_opt
(Used if numoct_opt .ne.
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.
g2int igdtlen
Number of elements in igdtmpl - i.e.
int g2c_compare(int g2cid1, int g2cid2)
Compare the metadata of two open GRIB2 files.
g2int * bmap
Integer array containing decoded bitmap, if ibmap=0 or ibap=254.
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...
int64_t g2int
Long integer type.
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.
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...