ホーム  •  ニュース  •  フォーラム  •  アカウント情報  •  サイト内検索  •  新規登録
 ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
 カウントダウンブロック
カウントダウンイベントはありません
 メニュー

メイン
   地球科学のための R
     Reading GRIB format data natively by R
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
投稿日時: 2005-11-29 16:19
登録日: 2004-7-29
居住地: 地球
投稿: 303
Reading GRIB format data natively by R
I am trying to make a short program which read GRIB format data natively by R (statistical package). Up to now, I have not yet succeeded in it. And I am so sorry that I have no more time to take part in making it.

There are some important points we should note when we try to do this.
1. GRIB Edition 1 and GRIB Edition 2 are (completely) different format.
2. GPV data provided by Japan Meteorological Agency at WMO Distributed Data Base / JMA2 and the data in NCEP/NCAR reanalysis data CD-ROM are both written in GRIB Edition 1.
3. The information about GRIB Edition 1 can be seen at Guide to GRIB.
4. The GRIB formatted data is composed by 5 sections.
5. Section 2 and Section 3 are optional
6. The format definition allows locally defined tables. That makes decoding very complicated.
7. and etc. etc.

Here, I want to show you the source code I'm writing. I will not have enough time to improve this in several weeks. So, if you can do it, why don't you use this.

Thank you.
#################################################################
#                                                               #
#  GRIB Edition 1                                               #
#                                                               #
#################################################################

GetGPVData <- function(filename="WMODDB20051117/g002f00/hhca10"){
  
  zz <- file(filename,"rb")
  
############
# Section 0
############
#  1-4  'GRIB' (Coded CCITT-ITA No. 5) (ASCII);
  varGRIB <- readChar(zz, 4)
#  5-7  Total length, in octets, of GRIB message(including Sections 0 & 5);
  varLEN0 <- readBin(zz, integer(),   1, 1, signed=F)
  varLEN0 <- readBin(zz, integer(),   1, 1, signed=F) + varLEN0 * 256
  varLEN0 <- readBin(zz, integer(),   1, 1, signed=F) + varLEN0 * 256
#  8    Edition number - currently 1
  varEDIT <- readBin(zz, integer(),   1, 1, signed=F)

  if( varEDIT != 1 ){
    print("Wrong Edition Number !")
    return(9999)
  }

############
# Section 1
############
#  1-3 Length in octets of the Product Definition Section
  varLEN1 <- readBin(zz, integer(),   1, 1, signed=F)
  varLEN1 <- readBin(zz, integer(),   1, 1, signed=F) + varLEN1 * 256
  varLEN1 <- readBin(zz, integer(),   1, 1, signed=F) + varLEN1 * 256
# 4      Parameter Table Version number. (international : 2 or local use : 128-254)
  varPTVN  <- readBin(zz, integer(),   1, 1, signed=F); # print("Table Version Nr."); print(varPTVN)
# 5      Identification of center (Table 0 - Part 1)
  varIDCT  <- readBin(zz, integer(),   1, 1, signed=F); # print(TABLE0[varIDCT])
# 6      Generating process ID number (Dependes on the Center)
  varGPID  <- readBin(zz, integer(),   1, 1, signed=F)
# 7      Grid Identification (geographical location and area; See Table B)
  varGRID  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("GRID ID",varGRID))
# 8      Flag specifying the presence of a GDS or a BMS ( GDS: 192 or 128, BMS: 192, 64 )
  varFGGB  <- readBin(zz, integer(),   1, 1, signed=F)
# 9      Indicator of parameter and units (Table 2)
  varIPRU  <- readBin(zz, integer(),   1, 1, signed=F); # print(TABLE2[TABLE2[,1]==varIPRU,])
# 10     Indicator of type of level or layer (See Tables 3 & 3a)
  varLVLY  <- readBin(zz, integer(),   1, 1, signed=F)
  varLVP1  <- readBin(zz, integer(),   1, 1, signed=F)
  varLVP2  <- readBin(zz, integer(),   1, 1, signed=F)
# 13     Year of century
  varYEAR  <- readBin(zz, integer(),   1, 1, signed=F)
  if(varYEAR < 40 ){
    varYEAR <- varYEAR + 2000
  }else{
    varYEAR <- varYEAR + 2000
  }
# 14     Month of year 
  varMNTH  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("varMNTH", varMNTH) )
# 15     Day of month
  varDAYM  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("varDAYM", varDAYM) )
# 16     Hour of day
  varHOUR  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("varHOUR", varHOUR) )
# 17 	 Minute of hour
  varMINU  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("varMINU", varMINU) )
# 18     Forecast time unit (see Table 4)
  varTMUT  <- readBin(zz, integer(),   1, 1, signed=F); # print(c("varTMUT", varTMUT) )
# 19     P1 - Period of time (Number of time units)
  varPOT1  <- readBin(zz, integer(),   1, 1, signed=F)
# 20     P2 - Period of time (Number of time units) or
#             Time interval between successive analyses, successive initialized analyses, or
#             forecasts, undergoing averaging or accumulation.
  varPOT2  <- readBin(zz, integer(),   1, 1, signed=F); # print(varTMUT)
# 21     Time range indicator (See Table 5)
  varTRID  <- readBin(zz, integer(),   1, 1, signed=F)
# 22-23  Number included in average, when octet 21 (Table 5) indicates an average or accumulation; otherwise set to zero.
  varNIAV  <- readBin(zz, integer(),   1, 2, signed=F)
# 24     Number Missing from averages or accumulations.
  varNMAV  <- readBin(zz, integer(),   1, 1, signed=F)
# 25     Century of Initial (Reference) time (=20 until Jan. 1, 2001)
  varCENT  <- readBin(zz, integer(),   1, 1, signed=F)
# 26     Identification of sub-center (Table 0 - Part 2)
  varIDSC  <- readBin(zz, integer(),   1, 1, signed=F)
# 27-28  The decimal scale factor D.
#        A negative value is indicated by setting the high order bit (bit No. 1) in octet 27 to 1 (on).
  varDSFD  <- readBin(zz, integer(),   1, 2, signed=F)
# 29-40  Reserved (need not be present)
# 41-... Reserved for originating center use.
  varSC13  <- readBin(zz, integer(), varLEN1-28, 1, signed=F)

  if( varPTVN != 2 ){
    print(c("Warning: Wrong Parameter Table Version number !",varPTVN))
  }

######################## Table 3 ###############################################################

TABLE3 <- list(
               000,  	"reserved", 0, 0,
               001, 	"surface (of the Earth, which includes sea surface)", 0, 0,
               002, 	"cloud base level", 0, 0,
               003, 	"cloud top level", 0, 0,
               004, 	"0 deg (C) isotherm level", 0, 0,
               005, 	"adiabatic condensation level(parcel lifted from surface)", 0, 0,
               006, 	"maximum wind speed level", 0, 0,
               007, 	"tropopause level", 0, 0,
               008, 	"Nominal top of atmosphere", 0, 0,
               009, 	"Sea bottom", 0, 0,
               100,     "isobaric level [hPa]", 0, varLVP1*256 + varLVP2,
               101,     "layer between two isobaric levels P1 and P2 [kPa]", varLVP1, varLVP2,
               102,     "mean sea level", 0, 0, 
               103,     "fixed height level above MSL [m]", 0, varLVP1*256 + varLVP2,
               104,     "layer between two height levels above msl P1 and P2[hm]", varLVP1, varLVP2,
               105,     "fixed height above ground [m]", 0, varLVP1*256 + varLVP2,
               106,     "layer between two height levels above ground [hm]", varLVP1, varLVP2,
               107,     "sigma level in 1/10000", 0, varLVP1*256 + varLVP2,
               108,     "layer between two sigma levels P1 and P2 [1/100]", varLVP1, varLVP2,
               109,     "Hybrid level", 0, varLVP1*256 + varLVP2,
               110,     "layer between two hybrid levels P1 and P2",  varLVP1, varLVP2,
               111,     "depth below land surface [cm]", 0, varLVP1*256 + varLVP2,
               112,     "layer between two depths below land surface P1 and P2 [cm]", varLVP1, varLVP2,
               113,     "isentropic (theta) level [K]", 0, varLVP1*256 + varLVP2,
               114,     "layer between two isentropic levels P1(top) and P2(bottom) (475K-theta)[K]", varLVP1, varLVP2, 
               121,     "layer between two isobaric surfaces (high precision) P1(top) and P2(bottom) (1100 hPa - p) [hPa]", varLVP1, varLVP2,
               125,     "Height level above ground (high precision) [cm]", 0, varLVP1*256 + varLVP2,
               128,     "layer between two sigma levels (high precision) P1 and P2 [1/1000]", varLVP1, varLVP2,
               141,     "layer between two isobaric surfaces (mixed precision) P1(top,[kPa]) and P2(bottom,1100hPa - p,[hPa]", varLVP1, varLVP2,
               160,     "depth below sea level [m]", 0, varLVP1*256 + varLVP2,
               200,     "entire atmosphere considered as a single layer", 0, 0,
               201,     "entire ocean considered as a single layer", 0, 0
               )
#  print(str(TABLE3))
  dim(TABLE3) <- c(4,32)
  TABLE3      <- t(TABLE3)

######################## Table 3 ###############################################################


#   print( c("Section 1"))
#   print( c(varLEN1, varNIAV, varDSFD, varSC13) )

############
# Section 2 (optional)
############
  if( varFGGB == 192 | varFGGB == 128 ){
# 1-3   Length in octets of the Grid Description Section
    varLEN2  <- readBin(zz, integer(),   1, 1, signed=F)
    varLEN2  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN2 * 256
    varLEN2  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN2 * 256
# 4     NV, the number of vertical coordinate parameters
    varNVCP  <- readBin(zz, integer(),   1, 1, signed=F)
# 5     PV, the location (octet number) of the list of vertical coordinate parameters, if present or
#       PL, the location (octet number) of the list of numbers of points in each row
#       (when no vertical parameters are present), if present or
#       255 if neither are present
    varNVLC  <- readBin(zz, integer(),   1, 1, signed=F)
# 6     Data representation type (See Table 6)
    varDRPT  <- readBin(zz, integer(),   1, 1, signed=F); print(c("Data Representation ",TABLE6[TABLE6[1,]==varDRPT,]))
# 7-32  Grid description, according to data representation type, except Lambert, Mercator or Space View.
# 7-42  Grid description for Lambert or Mercator grid
# 7-44  Grid description for Space View perspective grid
    varSC21  <- readBin(zz, integer(), varLEN2 - 6, 1, signed=F)

    print( c("Section 2"))
#    print( c(varLEN2))
    print( str(varSC21))
  }

############
# Section 3 (optional)
############
  if( varFGGB == 192 | varFGGB == 64 ){
# 1-3   Length in octets of the Bit Map Section
    varLEN3  <- readBin(zz, integer(),   1, 1, signed=F)
    varLEN3  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN3 * 256
    varLEN3  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN3 * 256
# 4     Number of unused bits at end of Section 3.
    varNUBT  <- readBin(zz, integer(),   1, 1, signed=F)
# 5-6   Numeric:
#	= 0: a bit map follows;
#       otherwise: the numeric refers to a predefined bit map provided by the center
    varPRDB  <- readBin(zz, integer(),   1, 2, signed=F)
# 7-nnn Bit map, zero filled to an even number of octets
    varBTMP  <- readBin(zz, integer(), varLEN3-6, 1, signed=F)
  
#    print( c("Section 3"))
#    print( c(varLEN3, varNUBT, varPRDB ))
  }
  
############
# Section 4
############
# 1-3    Length in octets of the Binary Data Section
  varLEN4  <- readBin(zz, integer(),   1, 1, signed=F)
  varLEN4  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN4 * 256
  varLEN4  <- readBin(zz, integer(),   1, 1, signed=F) + varLEN4 * 256
# 4      Bits 1 through 4: Flag - See Table 11
#        Bits 5 through 8: Number of unused bits at end of Section 4.
  varFLG4  <- readBin(zz, integer(),   1, 1, signed=F)
# 5-6    The binary scale factor (E). 
  varPCKE  <- readBin(zz, integer(),   1, 2, signed=F)
# 7-10   Reference value (minimum value); floating point representation of the number.
  varPCKR  <- readBin(zz, double(),    1, 4, signed=F)
# 11     Number of bits into which a datum point is packed
  varXBIT  <- readBin(zz, integer(),   1, 1, signed=F)
# 12-nnn Variable, depending on octet 4; zero filled to an even number of octets.
# 14     Optionally, may contain an extension of the flags in octet 4. See Table 11.
  varXVAL  <- readBin(zz, integer(), varLEN4-11, 1, signed=F)

  print( c("Section 4"))
#  print( c(varLEN4, varFLG4, varPCKE, varPCKR, varXBIT ))

############
# Section 5
############
# 1-4    7777
  varEND7 <- readChar(zz, 4)

  print( c("Section 5"))
  print( c( varEND7 ) )

#  print( c(varLEN0, varLEN1, varLEN2, varLEN4, varLEN1 + varLEN2 + varLEN4 + 12 ) )
  
  close(zz)

  
}

######################## Table 0 ###############################################################

TABLE0 <- rep("",99)
TABLE0[7]       <- "US Weather Service - National Met. Center"
TABLE0[8] 	<- "US Weather Service - NWS Telecomms Gateway"
TABLE0[9] 	<- "US Weather Service - Field Stations"
TABLE0[34] 	<- "Japanese Meteorological Agency - Tokyo"
TABLE0[52] 	<- "National Hurricane Center, Miami"
TABLE0[54] 	<- "Canadian Meteorological Service - Montreal"
TABLE0[57] 	<- "U.S. Air Force - Global Weather Center"
TABLE0[58] 	<- "US Navy - Fleet Numerical Oceanography Center"
TABLE0[59] 	<- "NOAA Forecast Systems Lab, Boulder CO"
TABLE0[74] 	<- "U.K. Met Office - Bracknell"
TABLE0[85] 	<- "French Weather Service - Toulouse"
TABLE0[97] 	<- "European Space Agency (ESA)"
TABLE0[98] 	<- "European Center for Medium-Range Weather Forecasts - Reading"
TABLE0[99] 	<- "DeBilt, Netherlands"

######################## Table 2 ###############################################################

TABLE2 <- list(
               000,  	"Reserved","[]",
               001, 	"Pressure" 	,"[Pa]",
               002, 	"Pressure reduced to MSL"	,"[Pa]",
               003, 	"Pressure tendency"	,"[Pa/s]",
               004, 	""	,"",
               005, 	""	,"",
               006, 	"Geopotential"	,"[m2/s2]",
               007, 	"Geopotential height"	,"[Gpm]",
               008, 	"Geometric height"	,"[M]",
               009, 	"Standard deviation of height"	,"[M]",
               010, 	""	,"",
               011, 	"Temperature"	,"[K]",
               012, 	"Virtual temperature"	,"[K]",
               013, 	"Potential temperature"	,"[K]",
               014, 	"Pseudo-adiabatic potential temperature"	,"[K]",
               015, 	"Maximum temperature"	,"[K]",
               016, 	"Minimum temperature"	,"[K]",
               017, 	"Dew point temperature"	,"[K]",
               018, 	"Dew point depression (or deficit)"	,"[K]",
               019, 	"Lapse rate"	,"[K/m]",
               020, 	"Visibility"	,"[M]",
               021, 	"Radar Spectra (1)"	,"[-]",
               022, 	"Radar Spectra (2)"	,"[-]",
               023, 	"Radar Spectra (3)"	,"[-]",
               024, 	""	,"",
               025, 	"Temperature anomaly"	,"[K]",
               026, 	"Pressure anomaly"	,"[Pa]",
               027, 	"Geopotential height anomaly"	,"[Gpm]",
               028, 	"Wave Spectra (1)"	,"[-]",
               029, 	"Wave Spectra (2)"	,"[-]",
               030, 	"Wave Spectra (3)"	,"[-]",
               031, 	"Wind direction"	,"[Deg. true]",
               032, 	"Wind speed"	,"[m/s]",
               033, 	"u-component of wind"	,"[m/s]",
               034, 	"v-component of wind"	,"[m/s]",
               035, 	"Stream function"	,"[m2/s]",
               036, 	"Velocity potential"	,"[m2/s]",
               037, 	"Montgomery stream function"	,"[m2/s2]",
               038, 	"Sigma coord. vertical velocity"	,"[s /s]",
               039, 	"Pressure Vertical velocity"	,"[Pa/s]",
               040, 	"Geometric Vertical velocity"	,"[m/s]",
               041, 	"Absolute vorticity"	,"[/s]",
               042, 	"Absolute divergence"	,"[/s]",
               043, 	"Relative vorticity"	,"[/s]",
               044, 	"Relative divergence"	,"[/s]",
               045, 	"Vertical u-component shear"	,"[/s]",
               046, 	"Vertical v-component shear"	,"[/s]",
               047, 	"Direction of current"	,"[Deg. true]",
               048, 	"Speed of current"	,"[m/s]",
               049, 	"u-component of current"	,"[m/s]",
               050, 	"v-component of current"	,"[m/s]",
               051, 	"Specific humidity"	,"[kg/kg]",
               052, 	"Relative humidity"	,"[%]",
               053, 	"Humidity mixing ratio"	,"[kg/kg]",
               054, 	"Precipitable water"	,"[kg/m2]",
               055, 	"Vapor pressure"	,"[Pa]",
               056, 	"Saturation deficit"	,"[Pa]",
               057, 	"Evaporation"	,"[kg/m2]",
               058, 	"Cloud Ice"	,"[kg/m2]",
               059, 	"Precipitation rate"	,"[kg/m2/s]",
               060, 	"Thunderstorm probability"	,"[%]",
               061, 	"Total precipitation"	,"[kg/m2]",
               062, 	"Large scale precipitation"	,"[kg/m2]",
               063, 	"Convective precipitation"	,"[kg/m2]",
               064, 	"Snowfall rate water equivalent"	,"[kg/m2s]",
               065, 	"Water equiv. of accum. snow depth"	,"[kg/m2]",
               066, 	"Snow depth"	,"[M]",
               067, 	"Mixed layer depth"	,"[M]",
               068, 	"Transient thermocline depth"	,"[M]",
               069, 	"Main thermocline depth"	,"[M]",
               070, 	"Main thermocline anomaly"	,"[M]",
               071, 	"Total cloud cover"	,"[%]",
               072, 	"Convective cloud cover"	,"[%]",
               073, 	"Low cloud cover"	,"[%]",
               074, 	"Medium cloud cover"	,"[%]",
               075, 	"High cloud cover"	,"[%]",
               076, 	"Cloud water"	,"[kg/m2]",
               077, 	""	,"",
               078, 	"Convective snow"	,"[kg/m2]",
               079, 	"Large scale snow"	,"[kg/m2]",
               080, 	"Water Temperature"	,"[K]",
               081, 	"Land-sea mask (1=land;0=sea) (see note)"	,"[Fraction]",
               082, 	"Deviation of sea level from mean"	,"[M]",
               083, 	"Surface roughness"	,"[M]",
               084, 	"Albedo"	,"[%]",
               085, 	"Soil temperature"	,"[K]",
               086, 	"Soil moisture content"	,"[kg/m2]",
               087, 	"Vegetation"	,"[%]",
               088, 	"Salinity"	,"[kg/kg]",
               089, 	"Density"	,"[kg/m3]",
               090, 	"Water run off"	,"[kg/m2]",
               091, 	"Ice concentration (ice=1;no ice=0)(see note)"	,"[Fraction]",
               092, 	"Ice thickness"	,"[M]",
               093, 	"Direction of ice drift"	,"[deg. true]",
               094, 	"Speed of ice drift"	,"[m/s]",
               095, 	"u-component of ice drift"	,"[m/s]",
               096, 	"v-component of ice drift"	,"[m/s]",
               097, 	"Ice growth rate"	,"[m/s]",
               098, 	"Ice divergence"	,"[/s]",
               099, 	"Snow melt"	,"[kg/m2]",
               100, 	"Significant height of combined wind waves and swell"	,"[m]",
               101, 	"Direction of wind waves"	,"[deg. true]",
               102, 	"Significant height of wind waves"	,"[m]",
               103, 	"Mean period of wind waves"	,"[s]",
               104, 	"Direction of swell waves"	,"[deg. true]",
               105, 	"Significant height of swell waves"	,"[m]",
               106, 	"Mean period of swell waves"	,"[s]",
               107, 	"Primary wave direction"	,"[deg. true]",
               108, 	"Primary wave mean period"	,"[s]",
               109, 	"Secondary wave direction"	,"[deg. true]",
               110, 	"Secondary wave mean period"	,"[s]",
               111, 	"Net short-wave radiation (surface)"	,"[W/m2]",
               112, 	"Net long wave radiation (surface)"	,"[W/m2]",
               113, 	"Net short-wave radiation (top of atmos.)"	,"[W/m2]",
               114, 	"Net long wave radiation (top of atmos.)"	,"[W/m2]",
               115, 	"Long wave radiation"	,"[W/m2]",
               116, 	"Short wave radiation"	,"[W/m2]",
               117, 	"Global radiation"	,"[W/m2]",
               118, 	""	,"",
               119, 	""	,"",
               120, 	""	,"",
               121, 	"Latent heat net flux"	,"[W/m2]",
               122, 	"Sensible heat net flux"	,"[W/m2]",
               123, 	"Boundary layer dissipation"	,"[W/m2]",
               124, 	"Momentum flux, u component"	,"[N/m2]",
               125, 	"Momentum flux, v component"	,"[N/m2]",
               126, 	"Wind mixing energy"	,"[J]",
               127, 	"Image data"	,"",
               128, 	"Reserved for use by originating center","",
               129, 	"Reserved for use by originating center","",
               130, 	"Reserved for use by originating center","",
               131, 	"Reserved for use by originating center","",
               132, 	"Reserved for use by originating center","",
               133, 	"Reserved for use by originating center","",
               134, 	"Reserved for use by originating center","",
               135, 	"Reserved for use by originating center","",
               136, 	"Reserved for use by originating center","",
               137, 	"Reserved for use by originating center","",
               138, 	"Reserved for use by originating center","",
               139, 	"Reserved for use by originating center","",
               140, 	"Reserved for use by originating center","",
               141, 	"Reserved for use by originating center","",
               142, 	"Reserved for use by originating center","",
               143, 	"Reserved for use by originating center","",
               144, 	"Reserved for use by originating center","",
               145, 	"Reserved for use by originating center","",
               146, 	"Reserved for use by originating center","",
               147, 	"Reserved for use by originating center","",
               148, 	"Reserved for use by originating center","",
               149, 	"Reserved for use by originating center","",
               150, 	"Reserved for use by originating center","",
               151, 	"Reserved for use by originating center","",
               152, 	"Reserved for use by originating center","",
               153, 	"Reserved for use by originating center","",
               154, 	"Reserved for use by originating center","",
               155, 	"Reserved for use by originating center","",
               156, 	"Reserved for use by originating center","",
               157, 	"Reserved for use by originating center","",
               158, 	"Reserved for use by originating center","",
               159, 	"Reserved for use by originating center","",
               160, 	"Reserved for use by originating center","",
               161, 	"Reserved for use by originating center","",
               162, 	"Reserved for use by originating center","",
               163, 	"Reserved for use by originating center","",
               164, 	"Reserved for use by originating center","",
               165, 	"Reserved for use by originating center","",
               166, 	"Reserved for use by originating center","",
               167, 	"Reserved for use by originating center","",
               168, 	"Reserved for use by originating center","",
               169, 	"Reserved for use by originating center","",
               170, 	"Reserved for use by originating center","",
               171, 	"Reserved for use by originating center","",
               172, 	"Reserved for use by originating center","",
               173, 	"Reserved for use by originating center","",
               174, 	"Reserved for use by originating center","",
               175, 	"Reserved for use by originating center","",
               176, 	"Reserved for use by originating center","",
               177, 	"Reserved for use by originating center","",
               178, 	"Reserved for use by originating center","",
               179, 	"Reserved for use by originating center","",
               180, 	"Reserved for use by originating center","",
               181, 	"Reserved for use by originating center","",
               182, 	"Reserved for use by originating center","",
               183, 	"Reserved for use by originating center","",
               184, 	"Reserved for use by originating center","",
               185, 	"Reserved for use by originating center","",
               186, 	"Reserved for use by originating center","",
               187, 	"Reserved for use by originating center","",
               188, 	"Reserved for use by originating center","",
               189, 	"Reserved for use by originating center","",
               190, 	"Reserved for use by originating center","",
               191, 	"Reserved for use by originating center","",
               192, 	"Reserved for use by originating center","",
               193, 	"Reserved for use by originating center","",
               194, 	"Reserved for use by originating center","",
               195, 	"Reserved for use by originating center","",
               196, 	"Reserved for use by originating center","",
               197, 	"Reserved for use by originating center","",
               198, 	"Reserved for use by originating center","",
               199, 	"Reserved for use by originating center","",
               200, 	"Reserved for use by originating center","",
               201, 	"Reserved for use by originating center","",
               202, 	"Reserved for use by originating center","",
               203, 	"Reserved for use by originating center","",
               204, 	"Reserved for use by originating center","",
               205, 	"Reserved for use by originating center","",
               206, 	"Reserved for use by originating center","",
               207, 	"Reserved for use by originating center","",
               208, 	"Reserved for use by originating center","",
               209, 	"Reserved for use by originating center","",
               210, 	"Reserved for use by originating center","",
               211, 	"Reserved for use by originating center","",
               212, 	"Reserved for use by originating center","",
               213, 	"Reserved for use by originating center","",
               214, 	"Reserved for use by originating center","",
               215, 	"Reserved for use by originating center","",
               216, 	"Reserved for use by originating center","",
               217, 	"Reserved for use by originating center","",
               218, 	"Reserved for use by originating center","",
               219, 	"Reserved for use by originating center","",
               220, 	"Reserved for use by originating center","",
               221, 	"Reserved for use by originating center","",
               222, 	"Reserved for use by originating center","",
               223, 	"Reserved for use by originating center","",
               224, 	"Reserved for use by originating center","",
               225, 	"Reserved for use by originating center","",
               226, 	"Reserved for use by originating center","",
               227, 	"Reserved for use by originating center","",
               228, 	"Reserved for use by originating center","",
               229, 	"Reserved for use by originating center","",
               230, 	"Reserved for use by originating center","",
               231, 	"Reserved for use by originating center","",
               232, 	"Reserved for use by originating center","",
               233, 	"Reserved for use by originating center","",
               234, 	"Reserved for use by originating center","",
               235, 	"Reserved for use by originating center","",
               236, 	"Reserved for use by originating center","",
               237, 	"Reserved for use by originating center","",
               238, 	"Reserved for use by originating center","",
               239, 	"Reserved for use by originating center","",
               240, 	"Reserved for use by originating center","",
               241, 	"Reserved for use by originating center","",
               242, 	"Reserved for use by originating center","",
               243, 	"Reserved for use by originating center","",
               244, 	"Reserved for use by originating center","",
               245, 	"Reserved for use by originating center","",
               246, 	"Reserved for use by originating center","",
               247, 	"Reserved for use by originating center","",
               248, 	"Reserved for use by originating center","",
               249, 	"Reserved for use by originating center","",
               250, 	"Reserved for use by originating center","",
               251, 	"Reserved for use by originating center","",
               252, 	"Reserved for use by originating center","",
               253, 	"Reserved for use by originating center","",
               254, 	"Reserved for use by originating center","",
               255,	"Missing",""
               )
dim(TABLE2) <- c(3,256)
TABLE2      <- t(TABLE2)

######################## Table 4 ###############################################################

TABLE4 <- list(c(
                 0,  	"minute",
                 1, 	"hour",
                 2, 	"day",
                 3, 	"month",
                 4, 	"year",
                 5, 	"decade",
                 6, 	"normal (30 years)",
                 7, 	"century",
                 254,	"second"))

######################## Table B ###############################################################
#
#  Wind direction at the Poles:
#           At the North Pole, face into the wind and report the value
#           of the west longitude meridian along which the wind is
#           coming at you; at the South Pole do likewise but report
#           the east longitude meridian value.
#
#  37-44    Thined Grid : not implemented here
#
TABLEB <- list(
               21, "5.0 x 2.5", seq(   0, 180, 5), seq(  0, 90, 2.5),1333 ,
               22, "5.0 x 2.5", seq(-180,   0, 5), seq(  0, 90, 2.5),1333 ,
               23, "5.0 x 2.5", seq(   0, 180, 5), seq(-90,  0, 2.5),1333 ,
               24, "5.0 x 2.5", seq(-180,   0, 5), seq(-90,  0, 2.5),1333 ,
               25, "5.0 x 5.0", seq(   0, 355, 5), seq(  0, 90, 5  ),1297 ,
               26, "5.0 x 5.0", seq(   0, 355, 5), seq(-90,  0, 5  ),1297 ,
               61, "2.0 x 2.0", seq(   0, 180, 2), seq(  0, 90, 2  ),4096 ,
               62, "2.0 x 2.0", seq(-180,   0, 2), seq(  0, 90, 2  ),4096 ,
               63, "2.0 x 2.0", seq(   0, 180, 2), seq(-90,  0, 2  ),4096 ,
               64, "2.0 x 2.0", seq(-180,   0, 2), seq(-90,  0, 2  ),4096 )
dim(TABLEB) <- c(5,10)
TABLEB <- t(TABLEB)

######################## Table 6 ###############################################################
#
#  Data Representation Type
#
TABLE6 <- TABLE2[,1:2]
for( i in 1:256 )
  TABLE6[i,2] <- "reserved"

TABLE6[ 1,2] <- "Latitude/Longitude Grid also called Equidistant Cylindrical or Plate Carree projection grid"
TABLE6[ 2,2] <- "Mercator Projection Grid"
TABLE6[ 3,2] <- "Gnomonic Projection Grid"
TABLE6[ 4,2] <- "Lambert Conformal, secant or tangent, conical or bipolar (normal or oblique) Projection Grid"
TABLE6[ 5,2] <- "Gaussian Latitude/Longitude Grid"
TABLE6[ 6,2] <- "Polar Stereographic Projection Grid"
TABLE6[14,2] <- "Oblique Lambert conformal, secant or tangent, conical or bipolar, projection"
TABLE6[51,2] <- "Spherical Harmonic Coefficients"
TABLE6[91,2] <- "Space view perspective or orthographic grid"
投稿日時: 2005-12-1 17:55
登録日: 2004-7-29
居住地: 地球
投稿: 303
BitShift Operations
There seems to be no bit-operating functions in R. Some of those functions can be expressed by short functions.
lshift <- function(a, n){
  return( a * 2^n )
}
rshift <- function(a, n){
  return( a %/% 2^n )
}

投稿日時: 2006-1-25 13:31
登録日: 2004-7-29
居住地: 地球
投稿: 303
Re: Reading GRIB format data natively by R
There are some softwares for manipulating grib format. The most well-known software is "wgrib". But it cannot convert a grib file to a self-descriptive data file, such as netCDF.

I've found some conversion tool, which can make netCDF file from grib file. Of course, there are no interfaces to R in the following programs. But these might be useful.

1. NCL
NCL itself is not a stand-alone program. But it is a kind of library. 
This software seems to be available freely, but it is required to register 
one's informations to NCAR. And I've not tried to use it. I think its a
 python based library, and it will be helpful.


2. CDO
 CDO is a commad line based tool for linux or UNIX clone. 
And it can be freely available.


3. Xconv/convsh
 Xconv is a X based manipulating tool for grib, netCDF
 and some other format. convsh is a command line version of Xconv.
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 


WWW を検索 meteorology.jp を検索

Powered by XOOPS 2.0 © 2001-2006 The XOOPS Project, Maitained by A. Mori
FI Theme :: XOOPS 2 Theme by ImageSquare :: Costomized by matchan and A.Mori