CODE FORM
SECTION 0 INDICATOR SECTION
PRODUCT IDENTIFICATION SECTION
GRID DESCRIPTION SECTION
BIT-MAP SECTION
BINARY DATA SECTION
END SECTION
SECTION 1
SECTION 2
SECTION 3
SECTION 4
SECTION 5
SEC 0 SEC 1 SEC 2 SEC 3 SEC 4 SEC 5
8 octets 29-40 octets 32-52 octets 7-nn octets 12-nn octets 4 octets
FM 92-XI GRIB EDITION 1
BINARY DATAGRIB 7777
GRIB 77770000110101010011111000 ...........,,,.......... 10101010101010101011
¨ Approved for operational use in 1989
¨ The representation of data by means of series of bits is independent of any particular machine representation.
¨ Can be used to store data also
¨ It is not suitable for visual data recognition
¨ It consist of continuos bit-stream made of a sequence of octets (1 octet = 8 bits)
INTRODUCTION
OCTET = 00000001BIT 1 BIT 8
¨ Each of the sections of a BUFR message is made up of a series of octets. The term octet means 8 bits.
¨ An individual section always consists of an even number of octets, with extrabits added on and set to zero when necessary.
¨ Within each section, octets are numbered 1, 2, 3, etc., starting at the beginning of each section.
¨ Bit positions within octets are referred to as bit 1 to bit 8, where bit 1 is the most significant, leftmost, or high order bit. An octet with only bit 8 set would have the integer value 1.
OCTET = 00000001BIT 1 BIT 8
INDICATOR SECTION
Seção 0 OCTETO CONTEUDO HEX DECIMAL 01-04 GRIB 47 52 49 42 GRIB 05-07 Tamanho total da mensagem 00 28 EE 10.478 08 Edição do GRIB 01 1
END SECTION
Seção 5 OCTETO CONTEUDO HEX DECIMAL
01-04 7777 37 37 37 37 7777
1 | 2 | 3 | 4 |00110111 00110111 00100111 00110111 --> BINARY 3 7 3 7 3 7 3 7 --> HEXADECIMAL 7 7 7 7 --> ASCII
1 | 2 | 3 | 4 |01000111 01010010 01001001 01000010 --> BINARY 4 7 5 2 4 9 4 2 --> HEXADECIMAL G R I B --> ASCII
PRODUCT DEFINITION SECTION - PDS
Seção 1 OCTETO CONTEUDO HEX DECIMAL 01-03 Tamanho da Seção 00 00 1C 28 04 Versão das tabelas 01 1 05 Centro de Origem 55 85 06 Identificação do processo D3 211 07 Definição da grade FF 255 08 Flag (tabela de código no. 1) 80 128 09 Indicador do parâmetro (Tabela 2) 0B 11 10 Indicador do tipo do nível (Tabela 3) 64 100 11-12 Altura, Pressão, etc. (Tabela 3) 00 FA 250 13 Ano Século 0F 15 14 Mês 01 1 15 Dia 04 4 16 Hora 0C 12 17 Minuto 00 00
PRODUCT DEFINITION SECTION - PDS
Seção 1 OCTETO CONTEUDO HEX DECIMAL 18 Indicador da faixa de unidade de tempo (Tabela 4) 01 1 19 P1 - Período de tempo (número de unidades de tempo)
0=análise 48 72
20 P2 - Período de tempo (número de unidades de tempo) ou intervalo de tempo 00 0
21 Indicador da faixa de tempo (Tabela 5) 00 0 22-23 N - número incluído para o cálculo quando o octeto 21 -
Tabela 5 se refere a um processo estatístico 00 00 0
24 Número de faltantes no cálculo em caso de processo estatístico 00 0
25 Século de referência para a data 15 25 26 Sub-centro (Tabela comum C-1) 00 0 27-28 Unidades decimais do fator de escala (D) 00 00 0 29-40 Reservada: Não precisa estar presente 41-nn Reservada para uso do centro de origem
GRID DEFINITION SECTION - GDS
Seção 2 OCTETO CONTEUDO HEX DECIMAL 01-03 Tamanho da Seção 00 00 20 32 04 Número de parâmetros de coordenadas vertical 00 05 PV - Localização (octeto) da lista de parâmetros da
coordenada vertical FF 06 Tipo da representação dos dados (Tabela 6) 00 07-32 Definição da grade (de acordo com o tipo do dado do
octeto acima) 33-44 Extensão da definição da grade para visão espacial - 33-52 Extensão da definição da grade para visão espacial - PV Tamanho = NV * 4. Se presente, então PL = 4NV + PV
PLlista de número de pontos em cada fila (tamanho = NROWS * 2 octetos) onde NROWS é o total de filas definidas dentro da descrição da grade
BIT-MAP SECTION
Seção 3 OCTETO CONTEUDO HEX DECIMAL 01-03 Tamanho da Seção 04 Número de bits não utilizados no final da seção 3
05-06Tabela de referencia. Se o octeto contem zero, então segue o bit-map. Se o octeto contém um número, ele se refere a um bit-map predeterminado pelo centro
07Bit-map (bits contiguos com um bit de dado correspondendo a um dado, ordenado como definido pela difinição da grade)
BINARY DATA SECTION
Seção 4 OCTETO CONTEUDO HEX DECIMAL 01-03 Tamanho da Seção 00 28 A6 10.412 04 Flag (tabela 11), primeiros 4 bits. Número de bits não
utilizados no final da seção 4 (últimos 4 bits) 00 0 05-06 Fator de escala (E) 80 04 -4 07-10 Valor de referência (menor valor armazenado) 42 CA F1 20 202.942 11 Número de bits contido em cada valor armazenado 0A 10 12- Variável. Depende do valor do flag no octeto 4 3C 8E F3 ....
Y x 10D = R + X x 2E
R= (-1)S x 2(-24) x B x 16(A-
64)
In the byte 7-10 example: 01000010 11001010 11110001 00100000Which should be read as: 0 1000010 110010101111000100100000S (leading sign bit) = 0A (7-bit characteristic) = 66 B (24-bit binary fraction) = 13300000
R= (-1)S x 2(-24) x B x 16(A-
64)
In GRIB Edition 1 the "Reference value" in Byte 7-10 is "a single precision floating point number, consisting of a leading sign bit, a 7-bit characteristic and a 24-bit binary fraction" (see. Regulations 92.6.4)
R = (-1)(0) x 2(-24) x B x 16(66-64)
R = 1 x 2(-24) x 16(2) x BR = 2(-24) x 2(8) X BR = 2(-16) x BR = 2(-16) x 110010101111000100100000R = 2(-16) x 0,110010101111000100100000 x 2(24)
R = 0,110010101111000100100000 x 2(8)
R = 11001010.1111000100100000R = 202 + 0.94189453125R = 202.942
R= (-1)S x 2(-24) x B x 16(A-64)
With this and the information of 10 bits (Octet 11) for each packed value it is possible to get at least the first point. (regulation 92.6.3).
The next 10 bit from byte 12… are 0011110010. This is a positive integer (=242) and the decimal scale factor from section 1 (Byte 27-28) was 0.
Y = 100 x 202.942 + 0011110010 x 2(-4)
Y = 202.942 + 0.11110010 x 2(8) x 2(-4)
Y = 202.942 + 0.11110010 x 2(4)
Y = 202.942 + 1111.0010Y = 202.942 + 15+0.125Y = 202.942 + 15.125Y = 218.067
Y x 10D = R + X x 2E
rec 1:25:date 2015010412 TMP kpds5=11 kpds6=100 kpds7=250 levels=(0,250) grid=255 250 mb 72hr fcst: TMP=Temp. [K] timerange 0 P1 72 P2 0 TimeU 1 nx 126 ny 66 GDS grid 0 num_in_ave 0 missing 0 center 85 subcenter 0 process 211 Table 1 scan: WE:NS winds(N/S) latlon: lat 75.000000 to 10.000000 by 1.000000 nxny 8316 long -60.000000 to 65.000000 by 1.000000, (126 x 66) scan 0 mode 128 bdsgrid 1
PDS(1..28)= 1: 00 00 1c 01 55 d3 ff 80 0b 64 00 fa 0f 01 04 0c 00 01 48 00 21: 00 00 00 00 15 00 00 00
GDS(1..32)= 1: 00 00 20 00 ff 00 00 7e 00 42 01 24 f8 80 ea 60 80 00 27 10 21: 00 fd e8 03 e8 03 e8 00 00 00 00 00
min/max data 205.817 233.692 num bits 10 BDS_Ref 202.942 DecScale 0 BinScale -4
126 66218.067 217.879 217.817 217.692 217.442 217.129 216.692 216.442 216.129 215.504 214.942 215.004 215.317 215.004 214.129 213.317 212.817 212.504 212.192 211.817 211.567 211.379 211.192 ......
WGRIB
#============== MESSAGE 1 ( length=10478 ) ==============GRIB { editionNumber = 1; table2Version = 1; # French Weather Service - Toulouse (grib1/0.table) centre = 85; generatingProcessIdentifier = 211; # T Temperature K (grib1/2.0.1.table) indicatorOfParameter = 11; # Isobaric level pressure in hectoPascals (hPa) (grib1/3.table) indicatorOfTypeOfLevel = 100; level = 250;
Ni = 126; Nj = 66; latitudeOfFirstGridPointInDegrees = 75; longitudeOfFirstGridPointInDegrees = -60; earthIsOblate = 0; uvRelativeToGrid = 0; latitudeOfLastGridPointInDegrees = 10; longitudeOfLastGridPointInDegrees = 65; iScansNegatively = 0; jScansPositively = 0; jPointsAreConsecutive = 0; #-READ ONLY- alternativeRowScanning = 0; jDirectionIncrementInDegrees = 1; iDirectionIncrementInDegrees = 1; #-READ ONLY- numberOfDataPoints = 8316; #-READ ONLY- numberOfValues = 8316; missingValue = 9999; #-READ ONLY- binaryScaleFactor = -4; #-READ ONLY- referenceValue = 202.942; sphericalHarmonics = 0; complexPacking = 0; integerPointValues = 0; additionalFlagPresent = 0; packingType = grid_simple; bitsPerValue = 10; values(8316) = { 2.1806689453e+02, 2.1787939453e+02, 2.1781689453e+02, 2.1769189453e+02, 2.1744189453e+02, 2.1712939453e+02, 2.1669189453e+02, 2.1644189453e+02, 2.1612939453e+02, 2.1550439453e+02, 2.1494189453e+02, 2.1500439453e+02, 2.1531689453e+02, 2.1500439453e+02, 2.1412939453e+02, 2.1331689453e+02, 2.1281689453e+02, 2.1250439453e+02, 2.1219189453e+02, 2.1181689453e+02, 2.1156689453e+02, 2.1137939453e+02, 2.1119189453e+02, 2.1106689453e+02, 2.1094189453e+02, 2.1081689453e+02, 2.1081689453e+02, 2.1087939453e+02, 2.1094189453e+02, 2.1087939453e+02, 2.1087939453e+02, 2.1087939453e+02, 2.1087939453e+02, 2.1087939453e+02, 2.1081689453e+02, 2.1069189453e+02, 2.1056689453e+02, 2.1037939453e+02, 2.1044189453e+02, 2.1044189453e+02,
GRIB API