25#define G2C_VERSION "1.9.0"
27#define G2_PNG_ENABLED 1
28#define G2_JPEG2000_ENABLED 1
226 unsigned char **csec2);
230 g2int *mappdslen,
float **coordlist,
g2int *numcoord);
259 unsigned char *cpack,
g2int *lcpack);
263 unsigned char *cpack,
g2int *lcpack);
267 unsigned char *cpack,
g2int *lcpack);
288#define G2C_MAX_FILES 3
289#define G2C_MAX_NAME 1024
290#define G2C_NOWRITE 0x0000
291#define G2C_WRITE 0x0001
292#define G2C_CLOBBER 0x0000
293#define G2C_NOCLOBBER 0x0004
294#define G2C_LARGE_FILE_INDEX 0x0008
297#define G2C_SECTION0_BYTES 16
301#define G2C_SECTION1_BYTES 21
303#define G2C_SECTION0_LEN 3
304#define G2C_SECTION1_LEN 13
307#define G2C_MAX_GDS_TEMPLATE 31
308#define G2C_MAX_GDS_TEMPLATE_MAPLEN 28
309#define G2C_MAX_PDS_TEMPLATE 47
310#define G2C_MAX_PDS_TEMPLATE_MAPLEN 45
311#define G2C_MAX_DRS_TEMPLATE 10
312#define G2C_MAX_DRS_TEMPLATE_MAPLEN 18
315int g2c_open(
const char *path,
int mode,
int *g2cid);
316int g2c_open_index(
const char *data_file,
const char *index_file,
int mode,
int *g2cid);
324int g2c_inq(
int g2cid,
int *num_msg);
326 int *num_local,
short *center,
short *subcenter,
unsigned char *master_version,
327 unsigned char *local_version);
328int g2c_inq_msg_time(
int g2cid,
int msg_num,
unsigned char *sig_ref_time,
short *year,
329 unsigned char *month,
unsigned char *day,
unsigned char *hour,
330 unsigned char *minute,
unsigned char *second);
331int g2c_inq_prod(
int g2cid,
int msg_num,
int prod_num,
int *pds_template_len,
332 int *pds_template,
int *gds_template_len,
int *gds_template,
333 int *drs_template_len,
int *drs_template);
334int g2c_inq_dim(
int g2cid,
int msg_num,
int prod_num,
int dim_num,
size_t *len,
335 char *name,
float *val);
338int g2c_get_prod(
int g2cid,
int msg_num,
int prod_num,
int *num_data_points,
344 int *extlen,
int *ext);
346 int *extlen,
int *ext);
351int g2c_get_msg(
int g2cid,
size_t skip_bytes,
size_t max_bytes,
size_t *bytes_to_msg,
352 size_t *bytes_in_msg,
unsigned char **cbuf);
353int g2c_find_msg2(
int g2cid,
size_t skip_bytes,
size_t max_bytes,
size_t *bytes_to_msg,
354 size_t *bytes_in_msg);
359void g2c_gbit_int(
unsigned char *in,
int *iout,
int iskip,
int nbits);
360int g2c_gbits_int(
unsigned char *in,
int *iout,
int iskip,
int nbits,
362int g2c_seekmsg(
int g2cid,
size_t skip,
size_t *offset,
size_t *msglen);
372int g2c_unpack7(
unsigned char *cgrib,
int igdsnum,
int gds_tmpl_len,
long long int *gdstmpl,
373 int idrsnum,
int drs_tmpl_len,
long long int *drstmpl,
int ndpts,
float *
fld);
374int g2c_pngpackf(
float *
fld,
size_t width,
size_t height,
int *idrstmpl,
375 unsigned char *cpack,
int *lcpack);
376int g2c_pngpackd(
double *
fld,
size_t width,
size_t height,
int *idrstmpl,
377 unsigned char *cpack,
int *lcpack);
382int g2c_jpcpackf(
float *
fld,
size_t width,
size_t height,
int *idrstmpl,
383 unsigned char *cpack,
size_t *lcpack);
384int g2c_jpcpackd(
double *
fld,
size_t width,
size_t height,
int *idrstmpl,
385 unsigned char *cpack,
size_t *lcpack);
391 int ltype,
int ratio,
int retry,
char *outjpc,
394int g2c_aecpackf(
float *
fld,
size_t width,
size_t height,
int *idrstmpl,
395 unsigned char *cpack,
size_t *lcpack);
396int g2c_aecpackd(
double *
fld,
size_t width,
size_t height,
int *idrstmpl,
397 unsigned char *cpack,
size_t *lcpack);
410int g2c_param_g1tog2(
int g1val,
int g1ver,
int *g2disc,
int *g2cat,
int *g2num);
412int g2c_param_g2tog1(
int g2disc,
int g2cat,
int g2num,
int *g1val,
int *g1ver);
413int g2c_param_all(
int param_idx,
int *g1ver,
int *g1val,
int *g2disc,
int *g2cat,
414 int *g2num,
char *abbdrev);
417#define G2C_SECTION0_ARRAY_LEN 3
418#define G2C_SECTION1_ARRAY_LEN 13
420#define G2C_JPEG_DRS_TEMPLATE_LEN 7
421#define G2C_PNG_DRS_TEMPLATE_LEN 5
422#define G2C_AEC_DRS_TEMPLATE_LEN 8
424#define G2C_MAX_GRIB_DESC_LEN 512
425#define G2C_MAX_GRIB_STATUS_LEN 40
426#define G2C_MAX_GRIB_LEVEL_DESC_LEN 40
427#define G2C_MAX_GRIB_CODE_LEN 20
428#define G2C_MAX_GRIB_TITLE_LEN 200
429#define G2C_MAX_NUM_SECTIONS 1024
431#define G2C_MAX_NOAA_PARAMS 2000
432#define G2C_MAX_NOAA_ABBREV_LEN 8
433#define G2C_MAX_NOAA_PARAM_LINE_LEN 120
435#define G2C_JASPER_MAX_MEM 268435456
439#define G2_CREATE_GRIB_VERSION -1
440#define G2_INFO_NO_GRIB 1
441#define G2_INFO_GRIB_VERSION 2
442#define G2_INFO_NO_SEC1 3
443#define G2_INFO_WRONG_END 4
444#define G2_INFO_BAD_END 5
445#define G2_INFO_INVAL_SEC 6
446#define G2_GETFLD_NO_GRIB 1
447#define G2_GETFLD_GRIB_VERSION 2
448#define G2_GETFLD_INVAL 3
449#define G2_GETFLD_WRONG_END 4
450#define G2_GETFLD_WRONG_NFLDS 6
451#define G2_GETFLD_BAD_END 7
452#define G2_GETFLD_INVAL_SEC 8
453#define G2_GETFLD_NO_DRT 9
454#define G2_GETFLD_BAD_SEC1 15
455#define G2_GETFLD_BAD_SEC2 16
456#define G2_GETFLD_BAD_SEC3 10
457#define G2_GETFLD_BAD_SEC4 11
458#define G2_GETFLD_BAD_SEC5 12
459#define G2_GETFLD_BAD_SEC6 13
460#define G2_GETFLD_BAD_SEC7 14
461#define G2_GETFLD_NO_BITMAP 17
462#define G2_GRIBEND_MSG_INIT -1
464#define G2_UNPACK_BAD_SEC 2
465#define G2_UNPACK_NO_MEM 6
466#define G2_UNPACK3_BAD_GDT 5
467#define G2_UNPACK4_BAD_PDT 5
468#define G2_UNPACK5_BAD_DRT 7
469#define G2_UNPACK6_BAD_BITMAP 4
470#define G2_UNPACK7_CORRUPT_SEC 7
471#define G2_UNPACK7_WRONG_GDT 5
472#define G2_UNPACK7_BAD_DRT 4
473#define G2_ADD_MSG_INIT -1
474#define G2_ADD_MSG_COMPLETE -2
475#define G2_BAD_SEC_COUNTS -3
476#define G2_ADDFIELD_BAD_PDT -5
477#define G2_ADDFIELD_BAD_GDS -6
478#define G2_ADDFIELD_BAD_DRT -7
479#define G2_ADDFIELD_BAD_BITMAP -8
480#define G2_ADDFIELD_BAD_GDT -9
481#define G2_ADDFIELD_ERR -10
482#define G2_ADDGRID_BAD_GDT -5
483#define G2_JPCUNPACK_MEM 1
484#define G2_SPECUNPACK_TYPE -3
485#define G2_JASPER_INIT -2
486#define G2_JASPER_ENCODE -3
487#define G2_JASPER_DECODE -3
488#define G2_JASPER_DECODE_COLOR -5
493#define G2C_ENOTGRIB (-50)
494#define G2C_EMSGCOMPLETE (-51)
495#define G2C_ENAMETOOLONG (-52)
496#define G2C_EINVAL (-53)
497#define G2C_EFILE (-54)
498#define G2C_EBADID (-55)
499#define G2C_ETOOMANYFILES (-56)
500#define G2C_ENOMEM (-57)
501#define G2C_EMSG (-58)
502#define G2C_ENOMSG (-59)
503#define G2C_EXML (-60)
504#define G2C_ENOTFOUND (-61)
505#define G2C_ENOTGRIB2 (-62)
506#define G2C_ENOSECTION (-63)
507#define G2C_ENOEND (-64)
508#define G2C_EBADEND (-65)
509#define G2C_EBADSECTION (-66)
510#define G2C_EJPEG (-67)
511#define G2C_EPNG (-68)
512#define G2C_ENOTEMPLATE (-69)
513#define G2C_EBADTEMPLATE (-70)
514#define G2C_ENOPARAM (-71)
515#define G2C_ENOPRODUCT (-72)
516#define G2C_EBADTYPE (-73)
517#define G2C_EAEC (-74)
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).
g2int jpcunpack(unsigned char *cpack, g2int len, g2int *idrstmpl, g2int ndpts, float *fld)
Unpack JPEG2000 compressed data into an array of floats, using info from the GRIB2 Data Representatio...
void g2_free(gribfield *gfld)
Free memory that was allocated for struct gribfield.
int g2c_inq_prod(int g2cid, int msg_num, int prod_num, int *pds_template_len, int *pds_template, int *gds_template_len, int *gds_template, int *drs_template_len, int *drs_template)
Inquire about a product.
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.
void pngpack(float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
This subroutine packs up a float data field into PNG image format.
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.
g2int pngunpack(unsigned char *cpack, g2int len, g2int *idrstmpl, g2int ndpts, float *fld)
This subroutine unpacks a data field that was packed into a PNG image format using info from the GRIB...
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....
g2int numoct_opt
Number of octets needed for each additional grid points definition.
g2int aecunpack(unsigned char *cpack, g2int len, g2int *idrstmpl, g2int ndpts, float *fld)
Unpack AEC compressed data into an array of floats, using info from the GRIB2 Data Representation Tem...
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.
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).
void jpcpack(float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
This function packs up a float array into a JPEG2000 code stream.
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...
void aecpack(float *fld, g2int width, g2int height, g2int *idrstmpl, unsigned char *cpack, g2int *lcpack)
This function packs up a float array into a AEC code stream.