NCEPLIBS-g2
3.5.0
|
Get information from a GRIB2 message. More...
Go to the source code of this file.
Functions/Subroutines | |
subroutine | gb_info (cgrib, lcgrib, listsec0, listsec1, numfields, numlocal, maxlocal, ierr) |
Find the number of gridded fields and Local Use Sections in a GRIB2 message. More... | |
subroutine | getdim (csec3, lcsec3, width, height, iscan) |
Return the dimensions and scanning mode of a grid definition packed in the Grid Definition Section. More... | |
subroutine | getfield (cgrib, lcgrib, ifldnum, igds, igdstmpl, igdslen, ideflist, idefnum, ipdsnum, ipdstmpl, ipdslen, coordlist, numcoord, ndpts, idrsnum, idrstmpl, idrslen, ibmap, bmap, fld, ierr) |
Return the Grid Definition, Product Definition, Bit-map (if applicable), and the unpacked data for a data field. More... | |
subroutine | getlocal (cgrib, lcgrib, localnum, csec2, lcsec2, ierr) |
Return the contents of Section 2 (Local Use) from a GRIB2 message. More... | |
subroutine | getpoly (csec3, lcsec3, jj, kk, mm) |
Return the J, K, and M pentagonal resolution parameters specified in a GRIB2 Grid Definition Section used spherical harmonic coefficients using GDT 5.50 through 5.53. More... | |
subroutine | gettemplates (cgrib, lcgrib, ifldnum, igds, igdstmpl, igdslen, ideflist, idefnum, ipdsnum, ipdstmpl, ipdslen, coordlist, numcoord, ierr) |
Return the Grid Definition and Product Definition for a data field. More... | |
subroutine | gribinfo (cgrib, lcgrib, listsec0, listsec1, numlocal, numfields, maxvals, ierr) |
Find the number of Local Use Sections and gridded fields in a GRIB2 message, and the maximum sizes of template arrays. More... | |
subroutine | unpack3 (cgrib, lcgrib, iofst, igds, igdstmpl, mapgridlen, ideflist, idefnum, ierr) |
This subroutine unpacks Section 3 (Grid Definition Section) starting at octet 6 of that Section. More... | |
subroutine | unpack4 (cgrib, lcgrib, iofst, ipdsnum, ipdstmpl, mappdslen, coordlist, numcoord, ierr) |
This subroutine unpacks Section 4 (Product Definition Section) starting at octet 6 of that Section. More... | |
subroutine | unpack5 (cgrib, lcgrib, iofst, ndpts, idrsnum, idrstmpl, mapdrslen, ierr) |
This subroutine unpacks Section 5 (Data Representation Section) starting at octet 6 of that Section. More... | |
subroutine | unpack6 (cgrib, lcgrib, iofst, ngpts, ibmap, bmap, ierr) |
This subroutine unpacks Section 6 (Bit-Map Section) starting at octet 6 of that Section. More... | |
subroutine gb_info | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, dimension(3), intent(out) | listsec0, | ||
integer, dimension(13), intent(out) | listsec1, | ||
integer, intent(out) | numfields, | ||
integer, intent(out) | numlocal, | ||
integer, intent(out) | maxlocal, | ||
integer, intent(out) | ierr | ||
) |
Find the number of gridded fields and Local Use Sections in a GRIB2 message.
Also various checks are performed to see if the message is a valid GRIB2 message.
This function is similar to gribinfo(), but returns less information.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message in array cgrib. |
[out] | listsec0 | Contains information decoded from GRIB Indicator Section 0. Must be dimensioned >= 2.
|
[out] | listsec1 | Contains information read from GRIB Identification Section 1. Must be dimensioned >= 13.
|
[out] | numfields | The number of gridded fieldse found in the GRIB message. |
[out] | numlocal | The number of Local Use Sections (Section 2) found in the GRIB message. |
[out] | maxlocal | The size of the largest Local Use Section (Section 2). Can be used to ensure that the return array passed to subroutine getlocal is dimensioned large enough. |
[out] | ierr | Error return code.
|
Definition at line 52 of file g2get.F90.
References g2_gbytec(), g2_gbytec1(), g2_gbytec81(), g2logging::g2_log(), and g2logging::g2_log_msg.
subroutine getdim | ( | character(len=1), dimension(*), intent(in) | csec3, |
integer, intent(in) | lcsec3, | ||
integer, intent(out) | width, | ||
integer, intent(out) | height, | ||
integer, intent(out) | iscan | ||
) |
Return the dimensions and scanning mode of a grid definition packed in the Grid Definition Section.
[in] | csec3 | Character array that contains the packed GRIB2 GDS. |
[in] | lcsec3 | Length (in octets) of section 3. |
[out] | width | x (or i) dimension of the grid. |
[out] | height | y (or j) dimension of the grid. |
[out] | iscan | Scanning mode (see Code Table 3.4). |
Definition at line 1191 of file g2get.F90.
References gf_unpack3().
Referenced by addfield().
subroutine getfield | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(in) | ifldnum, | ||
integer, dimension(*), intent(out) | igds, | ||
integer, dimension(*), intent(out) | igdstmpl, | ||
integer, intent(out) | igdslen, | ||
integer, dimension(*), intent(out) | ideflist, | ||
integer, intent(out) | idefnum, | ||
integer, intent(out) | ipdsnum, | ||
integer, dimension(*), intent(out) | ipdstmpl, | ||
integer, intent(out) | ipdslen, | ||
real, dimension(*), intent(out) | coordlist, | ||
integer, intent(out) | numcoord, | ||
integer, intent(out) | ndpts, | ||
integer, intent(out) | idrsnum, | ||
integer, dimension(*), intent(out) | idrstmpl, | ||
integer, intent(out) | idrslen, | ||
integer, intent(out) | ibmap, | ||
logical*1, dimension(*), intent(out) | bmap, | ||
real, dimension(*), intent(out) | fld, | ||
integer, intent(out) | ierr | ||
) |
Return the Grid Definition, Product Definition, Bit-map (if applicable), and the unpacked data for a data field.
Since there can be multiple data fields packed into a GRIB2 message, the calling routine indicates which field is being requested with the ifldnum argument.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in] | ifldnum | Specifies which field in the GRIB2 message to return. |
[out] | igds | Contains information read from the appropriate GRIB Grid Definition Section 3 for the field being returned. Must be dimensioned >= 5.
|
[out] | igdstmpl | Contains the data values for the specified Grid Definition Template (NN=igds(5)). Each element of this integer array contains an entry (in the order specified) of Grid Defintion Template 3.NN. A safe dimension for this array can be obtained in advance from maxvals(2), which is returned from subroutine gribinfo(). |
[out] | igdslen | Number of elements in igdstmpl. i.e. number of entries in Grid Defintion Template 3.NN (NN=igds(5)). |
[out] | ideflist | (Used if igds(3) .ne. 0) This array contains the number of grid points contained in each row (or column). (part of Section 3) A safe dimension for this array can be obtained in advance from maxvals(3), which is returned from subroutine gribinfo(). |
[out] | idefnum | (Used if igds(3) .ne. 0) The number of entries in array ideflist - i.e. number of rows (or columns) for which optional grid points are defined. |
[out] | ipdsnum | Product Definition Template Number (see Code Table 4.0). |
[out] | ipdstmpl | Contains the data values for the specified Product Definition Template (N=ipdsnum). Each element of this integer array contains an entry (in the order specified) of Product Defintion Template 4.N. A safe dimension for this array can be obtained in advance from maxvals(4), which is returned from subroutine gribinfo(). |
[out] | ipdslen | Number of elements in ipdstmpl - i.e. number of entries in Product Defintion Template 4.N (N=ipdsnum). |
[out] | coordlist | Array containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels (part of Section 4). The dimension of this array can be obtained in advance from maxvals(5), which is returned from subroutine gribinfo(). |
[out] | numcoord | number of values in array coordlist. |
[out] | ndpts | Number of data points unpacked and returned. |
[out] | idrsnum | Data Representation Template Number (see Code Table 5.0). |
[out] | idrstmpl | Contains the data values for the specified Data Representation Template (N=idrsnum). Each element of this integer array contains an entry (in the order specified) of Product Defintion Template 5.N A safe dimension for this array can be obtained in advance from maxvals(6), which is returned from subroutine gribinfo(). |
[out] | idrslen | Number of elements in idrstmpl. i.e. number of entries in Data Representation Template specified by idrsnum. |
[out] | ibmap | Bitmap indicator (see Code Table 6.0).
|
[out] | bmap | Logical*1 array containing decoded bitmap (if ibmap=0). The dimension of this array can be obtained in advance from maxvals(7), which is returned from subroutine gribinfo(). |
[out] | fld | Array of ndpts unpacked data points. A safe dimension for this array can be obtained in advance from maxvals(7), which is returned from subroutine gribinfo(). |
[out] | ierr | Error return code.
|
Definition at line 543 of file g2get.F90.
References comunpack(), g2_gbytec(), g2_gbytec1(), g2_gbytec81(), jpcunpack(), pngunpack(), rdieee(), simunpack(), unpack3(), unpack4(), unpack5(), and unpack6().
subroutine getlocal | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(in) | localnum, | ||
character(len = 1), dimension(*), intent(out) | csec2, | ||
integer, intent(out) | lcsec2, | ||
integer, intent(out) | ierr | ||
) |
Return the contents of Section 2 (Local Use) from a GRIB2 message.
Since there can be multiple occurrences of Section 2 within a GRIB message, the calling routine indicates which occurrence is being requested with the localnum argument.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in] | localnum | The nth occurrence of Section 2 requested. |
[out] | csec2 | Character array containing information read from Section 2. The dimension of this array can be obtained in advance from argument maxlocal, which is returned from subroutine gb_info(). |
[out] | lcsec2 | Number of bytes of character array csec2 read from Section 2. |
[out] | ierr | Error return code.
|
Definition at line 1292 of file g2get.F90.
References g2_gbytec(), and g2_gbytec1().
subroutine getpoly | ( | character(len = 1), dimension(*), intent(in) | csec3, |
integer, intent(in) | lcsec3, | ||
integer, intent(out) | jj, | ||
integer, intent(out) | kk, | ||
integer, intent(out) | mm | ||
) |
Return the J, K, and M pentagonal resolution parameters specified in a GRIB2 Grid Definition Section used spherical harmonic coefficients using GDT 5.50 through 5.53.
[in] | csec3 | Character array containing the packed GRIB2 GDS |
[in] | lcsec3 | Length (in octets) of section 3 |
[out] | JJ | =J pentagonal resolution parameter |
[out] | KK | =K pentagonal resolution parameter |
[out] | MM | =M pentagonal resolution parameter |
Definition at line 1418 of file g2get.F90.
References gf_unpack3().
Referenced by addfield().
subroutine gettemplates | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(in) | ifldnum, | ||
integer, dimension(*), intent(out) | igds, | ||
integer, dimension(*), intent(out) | igdstmpl, | ||
integer | igdslen, | ||
integer, dimension(*), intent(out) | ideflist, | ||
integer, intent(out) | idefnum, | ||
integer, intent(out) | ipdsnum, | ||
integer, dimension(*), intent(out) | ipdstmpl, | ||
integer | ipdslen, | ||
real, dimension(*), intent(out) | coordlist, | ||
integer, intent(out) | numcoord, | ||
integer, intent(out) | ierr | ||
) |
Return the Grid Definition and Product Definition for a data field.
Since there can be multiple data fields packed into a GRIB2 message, the calling routine indicates which field is being requested with the ifldnum argument.
[in] | cgrib | Character array that contains the GRIB2 message |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in] | ifldnum | Specifies which field in the GRIB2 message to return. |
[out] | igds | Contains information read from the appropriate GRIB Grid Definition Section 3 for the field being returned. Must be dimensioned >= 5.
|
[out] | igdstmpl | Contains the data values for the specified Grid Definition Template (NN=igds(5)). Each element of this integer array contains an entry (in the order specified) of Grid Defintion Template 3.NN. |
[out] | igdslen | Number of elements in igdstmpl. i.e. number of entries in Data Representation Template 5.N (N=idrsnum). |
[out] | ideflist | (Used if igds(3) .ne. 0) This array contains the number of grid points contained in each row (or column). (part of Section 3). |
[out] | idefnum | (Used if igds(3) .ne. 0) The number of entries in array ideflist. i.e. number of rows (or columns) for which optional grid points are defined. |
[out] | ipdsnum | Product Definition Template Number (see Code Table 4.0). |
[out] | ipdstmpl | Contains the data values for the specified Product Definition Template (N=ipdsnum). Each element of this integer array contains an entry (in the order specified) of Product Defintion Template 4.N. A safe dimension for this array can be obtained in advance from maxvals(4), which is returned from subroutine gribinfo(). |
[out] | ipdslen | Number of elements in ipdstmpl. i.e. number of entries in Product Defintion Template 4.N (N=ipdsnum). |
[out] | coordlist | Array containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels. (part of Section 4) The dimension of this array can be obtained in advance from maxvals(5), which is returned from subroutine gribinfo(). |
[out] | numcoord | number of values in array coordlist. |
[out] | ierr | Error return code.
|
Definition at line 1528 of file g2get.F90.
References g2_gbytec1(), unpack3(), and unpack4().
subroutine gribinfo | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, dimension(3), intent(out) | listsec0, | ||
integer, dimension(13), intent(out) | listsec1, | ||
integer, intent(out) | numlocal, | ||
integer, intent(out) | numfields, | ||
integer, dimension(7), intent(out) | maxvals, | ||
integer, intent(out) | ierr | ||
) |
Find the number of Local Use Sections and gridded fields in a GRIB2 message, and the maximum sizes of template arrays.
This subroutine also performs various checks to see if the message is a valid GRIB2 message. Also, a list of safe array dimensions is returned for use in allocating return arrays from routines getlocal(), gettemplates(), and getfields().
Array maxvals contains the maximum possible number of values that will be returned in argument arrays for routines getlocal(), gettemplates() and getfields(). Users can use this info to determine if their arrays are dimensioned large enough for the data that may be returned from the above routines, or to dynamically allocate arrays with a reasonable size.
This function is similar to gb_info(), but returns more information.
[in] | cgrib | Character that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of array cgrib. |
[out] | listsec0 | Contains information needed for GRIB Indicator Section 0. Must be dimensioned >= 2.
|
[out] | listsec1 | Contains information needed for GRIB Identification Section 1. Must be dimensioned >= 13.
|
[out] | numlocal | The number of Local Use Sections (Section 2) found in the GRIB message. |
[out] | numfields | The number of gridded fieldse found in the GRIB message. |
[out] | maxvals | The maximum number of elements that could be returned in various arrays from this GRIB2 message.
|
[out] | ierr | Error return code.
|
Definition at line 282 of file g2get.F90.
References g2_gbytec(), g2_gbytec1(), and g2_gbytec81().
subroutine unpack3 | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(inout) | iofst, | ||
integer, dimension(*), intent(out) | igds, | ||
integer, dimension(*), intent(out) | igdstmpl, | ||
integer | mapgridlen, | ||
integer, dimension(*), intent(out) | ideflist, | ||
integer, intent(out) | idefnum, | ||
integer, intent(out) | ierr | ||
) |
This subroutine unpacks Section 3 (Grid Definition Section) starting at octet 6 of that Section.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in,out] | iofst | Bit offset of the beginning (in) or the end (out) of Section 3. |
[out] | igds | Contains information read from the appropriate GRIB Grid Definition Section 3 for the field being returned. Must be dimensioned >= 5.
|
[out] | igdstmpl | Contains the data values for the specified Grid Definition Template (NN=igds(5)). Each element of this integer array contains an entry (in the order specified) of Grid Defintion Template 3.NN. |
[out] | mapgridlen | Number of elements in igdstmpl - i.e. number of entries in Grid Defintion Template 3.NN (NN=igds(5)). |
[out] | ideflist | (Used if igds(3) .ne. 0). This array contains the number of grid points contained in each row (or column) (part of Section 3). |
[out] | idefnum | (Used if igds(3) .ne. 0). The number of entries in array ideflist - i.e. number of rows (or columns) for which optional grid points are defined. |
[out] | ierr | Error return code.
|
Definition at line 811 of file g2get.F90.
References gridtemplates::extgridtemplate(), g2_gbytec1(), g2_gbytesc(), and gridtemplates::getgridtemplate().
Referenced by getfield(), and gettemplates().
subroutine unpack4 | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(inout) | iofst, | ||
integer, intent(out) | ipdsnum, | ||
integer, dimension(*), intent(out) | ipdstmpl, | ||
integer | mappdslen, | ||
real, dimension(*), intent(out) | coordlist, | ||
integer, intent(out) | numcoord, | ||
integer, intent(out) | ierr | ||
) |
This subroutine unpacks Section 4 (Product Definition Section) starting at octet 6 of that Section.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in,out] | iofst | Bit offset of the beginning (in) or the end (out) of Section 4. |
[out] | ipdsnum | Product Definition Template Number (see Code Table 4.0). |
[out] | ipdstmpl | Contains the data values for the specified Product Definition Template (N=ipdsnum). Each element of this integer array contains an entry (in the order specified) of Product Defintion Template 4.N. |
[out] | mappdslen | Number of elements in ipdstmpl. i.e. number of entries in Product Defintion Template 4.N (N=ipdsnum). |
[out] | coordlist- | Array containg floating point values intended to document the vertical discretisation associated to model data on hybrid coordinate vertical levels (part of Section 4). |
[out] | numcoord | number of values in array coordlist. |
[out] | ierr | Error return code.
|
Definition at line 936 of file g2get.F90.
References pdstemplates::extpdstemplate(), g2_gbytec1(), g2_gbytescr(), pdstemplates::getpdstemplate(), and rdieee().
Referenced by getfield(), and gettemplates().
subroutine unpack5 | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(inout) | iofst, | ||
integer, intent(out) | ndpts, | ||
integer, intent(out) | idrsnum, | ||
integer, dimension(*), intent(out) | idrstmpl, | ||
integer | mapdrslen, | ||
integer, intent(out) | ierr | ||
) |
This subroutine unpacks Section 5 (Data Representation Section) starting at octet 6 of that Section.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in,out] | iofst | Bit offset of the beginning (in) or the end(out) of Section 5. |
[out] | ndpts | Number of data points unpacked and returned. |
[out] | idrsnum | Data Representation Template Number (see Code Table 5.0) |
[out] | idrstmpl | Contains the data values for the specified Data Representation Template (N = idrsnum). Each element of this integer array contains an entry (in the order specified) of Data Representation Template 5.N. |
[out] | mapdrslen | Number of elements in idrstmpl. i.e. number of entries in Data Representation Template 5.N (N = idrsnum). |
[out] | ierr | Error return code.
|
Definition at line 1043 of file g2get.F90.
References drstemplates::extdrstemplate(), g2_gbytec1(), and drstemplates::getdrstemplate().
Referenced by getfield().
subroutine unpack6 | ( | character(len = 1), dimension(lcgrib), intent(in) | cgrib, |
integer, intent(in) | lcgrib, | ||
integer, intent(inout) | iofst, | ||
integer, intent(in) | ngpts, | ||
integer, intent(out) | ibmap, | ||
logical*1, dimension(ngpts), intent(out) | bmap, | ||
integer, intent(out) | ierr | ||
) |
This subroutine unpacks Section 6 (Bit-Map Section) starting at octet 6 of that Section.
[in] | cgrib | Character array that contains the GRIB2 message. |
[in] | lcgrib | Length (in bytes) of GRIB message array cgrib. |
[in,out] | iofst | Bit offset of the beginning (in) or the end (out) of Section 6. |
[in] | ngpts | Number of grid points specified in the bit-map. |
[out] | ibmap | Bitmap indicator (see Code Table 6.0).
|
[out] | bmap | Logical*1 array containing decoded bitmap (if ibmap = 0). |
[out] | ierr | Error return code.
|
Definition at line 1137 of file g2get.F90.
References g2_gbytec1(), and g2_gbytesc().
Referenced by getfield().