NCEPLIBS-g2c  1.8.0
g2_addgrid.c File Reference

Pack up a Grid Definition Section (Section 3) and adds it to a GRIB2 message. More...

#include <stdio.h>
#include <stdlib.h>
#include "grib2_int.h"

Go to the source code of this file.

Functions

g2int g2_addgrid (unsigned char *cgrib, g2int *igds, g2int *igdstmpl, g2int *ideflist, g2int idefnum)
 This routine packs up a Grid Definition Section (Section 3) and adds it to a GRIB2 message. More...
 

Detailed Description

Pack up a Grid Definition Section (Section 3) and adds it to a GRIB2 message.

Author
Stephen Gilbeert
Date
2002-11-01

Definition in file g2_addgrid.c.

Function Documentation

◆ g2_addgrid()

g2int g2_addgrid ( unsigned char *  cgrib,
g2int igds,
g2int igdstmpl,
g2int ideflist,
g2int  idefnum 
)

This routine packs up a Grid Definition Section (Section 3) and adds it to a GRIB2 message.

It is used with routines g2_create(), g2_addlocal(), g2_addfield(), and g2_gribend() to create a complete GRIB2 message. g2_create() must be called first to initialize a new GRIB2 message.

Program History Log

Date Programmer Comments
2002-11-01 Gilbert Initial.
2009-01-14 Vuong Changed structure name template to gtemplate
Parameters
cgribChar array that contains the GRIB2 message to which section should be added. Must be allocated large enough to store the entire GRIB2 message.
igdsContains information needed for GRIB Grid Definition Section 3. Must be dimensioned >= 5.
  • igds[0] Source of grid definition (see Code Table 3.0).
  • igds[1] Number of grid points in the defined grid.
  • igds[2] Number of octets needed for each additional grid points definition. Used to define number of points in each row (or column) for non-regular grids. = 0, if using regular grid.
  • igds[3] Interpretation of list for optional points definition. (See Code Table 3.11).
  • igds[4] Grid Definition Template Number (See Code Table 3.1).
igdstmplContains the data values for the specified Grid Definition Template (igds[4]). Each element of this integer array contains an entry (in the order specified) of Grid Defintion Template.
ideflist(Used if igds[2] != 0) This array contains the number of grid points contained in each row (or column).
idefnum(Used if igds[2] != 0) The number of entries in array ideflist. i.e. number of rows (or columns) for which optional grid points are defined.
Returns
  • > 0 Current size of updated GRIB2 message
  • G2_ADD_MSG_INIT GRIB message was not initialized. Need to call routine gribcreate first.
  • G2_ADD_MSG_COMPLETE GRIB message already complete. Cannot add new section.
  • G2_BAD_SEC_COUNTS Sum of Section byte counts doesn't add to total byte count
  • G2_BAD_SEC Previous Section was not 1, 2 or 7.
  • G2_ADDGRID_BAD_GDT Could not find requested Grid Definition Template.
Note
The Grid Def Section (Section 3) can only follow Section 1, 2 or Section 7 in a GRIB2 message.
Author
Stephen Gilbeert
Date
2002-11-01

Definition at line 70 of file g2_addgrid.c.

References gtemplate::ext, extgridtemplate(), gtemplate::extlen, G2_ADD_MSG_COMPLETE, G2_ADD_MSG_INIT, G2_ADDGRID_BAD_GDT, G2_BAD_SEC, G2_BAD_SEC_COUNTS, g2c_check_msg(), G2C_EMSGCOMPLETE, G2C_ENOTGRIB, gbit(), getgridtemplate(), gtemplate::map, gtemplate::maplen, gtemplate::needext, sbit(), and sbits().