📄 grib2.doc
字号:
! cgrib - Character array that contains the GRIB2 message! lcgrib - Length (in bytes) of GRIB message in array cgrib.!! OUTPUT ARGUMENT LIST: ! listsec0 - Contains information decoded from GRIB Indicator Section 0.! Must be dimensioned >= 2.! listsec0(1)=Discipline-GRIB Master Table Number! (see Code Table 0.0)! listsec0(2)=GRIB Edition Number (currently 2)! listsec0(3)=Length of GRIB message! listsec1 - Contains information read from GRIB Identification Section 1.! Must be dimensioned >= 13.! listsec1(1)=Id of orginating centre (Common Code Table C-1)! listsec1(2)=Id of orginating sub-centre (local table)! listsec1(3)=GRIB Master Tables Version Number (Code Table 1.0)! listsec1(4)=GRIB Local Tables Version Number ! listsec1(5)=Significance of Reference Time (Code Table 1.1)! listsec1(6)=Reference Time - Year (4 digits)! listsec1(7)=Reference Time - Month! listsec1(8)=Reference Time - Day! listsec1(9)=Reference Time - Hour! listsec1(10)=Reference Time - Minute! listsec1(11)=Reference Time - Second! listsec1(12)=Production status of data (Code Table 1.2)! listsec1(13)=Type of processed data (Code Table 1.3)! numfields- The number of gridded fields found in the GRIB message.! numlocal - The number of Local Use Sections ( Section 2 ) found in ! the GRIB message.! 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.! ierr - Error return code.! 0 = no error! 1 = Beginning characters "GRIB" not found.! 2 = GRIB message is not Edition 2.! 3 = Could not find Section 1, where expected.! 4 = End string "7777" found, but not where expected.! 5 = End string "7777" not found at end of message.! 6 = Invalid section number found.!! REMARKS: None!! ATTRIBUTES:! LANGUAGE: Fortran 90! MACHINE: IBM SP!!$$$!$$$ SUBPROGRAM DOCUMENTATION BLOCK! . . . .! SUBPROGRAM: getlocal ! PRGMMR: Gilbert ORG: W/NP11 DATE: 2000-05-25!! ABSTRACT: This subroutine returns the contents of Section 2 ( Local ! Use Section ) 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.!! PROGRAM HISTORY LOG:! 2000-05-25 Gilbert!! USAGE: CALL getlocal(cgrib,lcgrib,localnum,csec2,lcsec2,ierr)! INPUT ARGUMENT LIST:! cgrib - Character array that contains the GRIB2 message! lcgrib - Length (in bytes) of GRIB message in array cgrib.! localnum - The nth occurrence of Section 2 requested.!! OUTPUT ARGUMENT LIST: ! 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.! lcsec2 - Number of bytes of character array csec2 read from! Section 2.! ierr - Error return code.! 0 = no error! 1 = Beginning characters "GRIB" not found.! 2 = GRIB message is not Edition 2.! 3 = The section 2 request number was not positive.! 4 = End string "7777" found, but not where expected.! 5 = End string "7777" not found at end of message.! 6 = GRIB message did not contain the requested number of! Local Use Sections.!! REMARKS: Note that subroutine gribinfo can be used to first determine! how many Local Use sections exist in a given GRIB message.!! ATTRIBUTES:! LANGUAGE: Fortran 90! MACHINE: IBM SP!!$$$!$$$ SUBPROGRAM DOCUMENTATION BLOCK! . . . .! SUBPROGRAM: gf_getfld ! PRGMMR: Gilbert ORG: W/NP11 DATE: 2000-05-26!! ABSTRACT: This subroutine returns the Grid Definition, Product Definition,! Bit-map ( if applicable ), and the unpacked data for a given data! field. All of the information returned is stored in a derived! type variable, gfld. Gfld is of type gribfield, which is defined! in module grib_mod, so users of this routine will need to include! the line "USE GRIB_MOD" in their calling routine. Each component of the ! gribfield type is described in the OUTPUT ARGUMENT LIST section below.!! 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.!! PROGRAM HISTORY LOG:! 2000-05-26 Gilbert! 2002-01-24 Gilbert - Changed to pass back derived type gribfield! variable through argument list, instead of! having many different arguments.!! USAGE: CALL gf_getfld(cgrib,lcgrib,ifldnum,unpack,expand,gfld,ierr)! INPUT ARGUMENT LIST:! cgrib - Character array that contains the GRIB2 message! lcgrib - Length (in bytes) of GRIB message array cgrib.! ifldnum - Specifies which field in the GRIB2 message to return.! unpack - Logical value indicating whether to unpack bitmap/data! .true. = unpack bitmap and data values! .false. = do not unpack bitmap and data values! expand - Boolean value indicating whether the data points should be! expanded to the correspond grid, if a bit-map is present.! 1 = if possible, expand data field to grid, inserting zero! values at gridpoints that are bitmapped out.! (SEE REMARKS2)! 0 = do not expand data field, leaving it an array of! consecutive data points for each "1" in the bitmap.! This argument is ignored if unpack == 0 OR if the! returned field does not contain a bit-map.!! OUTPUT ARGUMENT LIST: ! gfld - derived type gribfield ( defined in module grib_mod )! ( NOTE: See Remarks Section )! gfld%version = GRIB edition number ( currently 2 )! gfld%discipline = Message Discipline ( see Code Table 0.0 )! gfld%idsect() = Contains the entries in the Identification! Section ( Section 1 )! This element is actually a pointer to an array! that holds the data.! gfld%idsect(1) = Identification of originating Centre ! ( see Common Code Table C-1 )! 7 - US National Weather Service! gfld%idsect(2) = Identification of originating Sub-centre! gfld%idsect(3) = GRIB Master Tables Version Number! ( see Code Table 1.0 )! 0 - Experimental! 1 - Initial operational version number! gfld%idsect(4) = GRIB Local Tables Version Number! ( see Code Table 1.1 )! 0 - Local tables not used! 1-254 - Number of local tables version used! gfld%idsect(5) = Significance of Reference Time (Code Table 1.2)! 0 - Analysis! 1 - Start of forecast! 2 - Verifying time of forecast! 3 - Observation time! gfld%idsect(6) = Year ( 4 digits )! gfld%idsect(7) = Month! gfld%idsect(8) = Day! gfld%idsect(9) = Hour! gfld%idsect(10) = Minute! gfld%idsect(11) = Second! gfld%idsect(12) = Production status of processed data! ( see Code Table 1.3 )! 0 - Operational products! 1 - Operational test products! 2 - Research products! 3 - Re-analysis products! gfld%idsect(13) = Type of processed data ( see Code Table 1.4 )! 0 - Analysis products! 1 - Forecast products! 2 - Analysis and forecast products! 3 - Control forecast products! 4 - Perturbed forecast products! 5 - Control and perturbed forecast products! 6 - Processed satellite observations! 7 - Processed radar observations! gfld%idsectlen = Number of elements in gfld%idsect().! gfld%ifldnum = field number within GRIB message! gfld%griddef = Source of grid definition (see Code Table 3.0)! 0 - Specified in Code table 3.1! 1 - Predetermined grid Defined by originating centre! gfld%ngrdpts = Number of grid points in the defined grid.! gfld%numoct_opt = 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.! gfld%interp_opt = Interpretation of list for optional points ! definition. (Code Table 3.11)! gfld%igdtnum = Grid Definition Template Number (Code Table 3.1)! gfld%igdtmpl() = Contains the data values for the specified Grid ! Definition Template ( NN=gfld%igdtnum ). Each ! element of this integer array contains an entry (in ! the order specified) of Grid Defintion Template 3.NN! This element is actually a pointer to an array! that holds the data.! gfld%igdtlen = Number of elements in gfld%igdtmpl(). i.e. number of! entries in Grid Defintion Template 3.NN ! ( NN=gfld%igdtnum ).! gfld%list_opt() = (Used if gfld%numoct_opt .ne. 0) This array ! contains the number of grid points contained in ! each row ( or column ). (part of Section 3)! This element is actually a pointer to an array! that holds the data. This pointer is nullified! if gfld%numoct_opt=0.! gfld%num_opt = (Used if gfld%numoct_opt .ne. 0) The number of entries! in array ideflist. i.e. number of rows ( or columns )! for which optional grid points are defined. This value! is set to zero, if gfld%numoct_opt=0.! gfdl%ipdtnum = Product Definition Template Number (see Code Table 4.0)! gfld%ipdtmpl() = Contains the data values for the specified Product ! Definition Template ( N=gfdl%ipdtnum ). Each element! of this integer array contains an entry (in the ! order specified) of Product Defintion Template 4.N.! This element is actually a pointer to an array! that holds the data.! gfld%ipdtlen = Number of elements in gfld%ipdtmpl(). i.e. number of! entries in Product Defintion Template 4.N ! ( N=gfdl%ipdtnum ).! gfld%coord_list() = Real array containing floating point values ! intended to document the vertical discretisation! associated to model data on hybrid coordinate! vertical levels. (part of Section 4)! This element is actually a pointer to an array! that holds the data.! gfld%num_coord = number of values in array gfld%coord_list().! gfld%ndpts = Number of data points unpacked and returned.! gfld%idrtnum = Data Representation Template Number ! ( see Code Table 5.0)! gfld%idrtmpl() = Contains the data values for the specified Data ! Representation Template ( N=gfld%idrtnum ). Each ! element of this integer array contains an entry ! (in the order specified) of Product Defintion ! Template 5.N.! This element is actually a pointer to an array! that holds the data.! gfld%idrtlen = Number of elements in gfld%idrtmpl(). i.e. number
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -