27.03.2013 Views

Guide to WMO Table Driven Code Forms

Guide to WMO Table Driven Code Forms

Guide to WMO Table Driven Code Forms

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

22 Group splitting method used (see <strong>Code</strong> <strong>Table</strong> 5.4)<br />

23 Missing value management used (see <strong>Code</strong> <strong>Table</strong> 5.5)<br />

24-27 Primary missing value substitute<br />

28-31 Secondary missing value substitute<br />

32-35 NG - Number of groups of data values in<strong>to</strong> which field is split<br />

36 Reference for group widths (see Note 12)<br />

37 Number of bits used for the group widths (after the reference value in octet 36<br />

has been removed)<br />

38-41 Reference for group lengths (see Note 13)<br />

42 Length increment for the group lengths (see Note 14)<br />

43-46 True length of last group<br />

47 Number of bits used for the scaled group lengths (after subtraction of the<br />

reference value given in octets 38-41 and division by the length increment<br />

given in octet 42)<br />

The corresponding Data Template is 7.2. Upon insertion of Template 7.2, the Data Section<br />

becomes:<br />

Octet No. Contents<br />

1-4 Length of section in octets (nn)<br />

5 Number of Section (“7”)<br />

6-xx NG group reference values (XI in the decoding formula), each of which is<br />

encoded using the number of bits specified in octet 20 of Data Representation<br />

Template 5.0. Bits set <strong>to</strong> zero shall be appended as necessary <strong>to</strong> ensure this<br />

sequence of numbers ends on an octet boundary.<br />

[xx+1]-yy NG group widths, each of which is encoded using the number of bits specified<br />

in octet 37 of Data Representation Template 5.2. Bits set <strong>to</strong> zero shall be<br />

appended as necessary <strong>to</strong> ensure this sequence of numbers ends on an octet<br />

boundary.<br />

[yy+1]-zz NG scaled group lengths, each of which is encoded using the number of bits<br />

specified in octet 47 of Data Representation Template 5.2. Bits set <strong>to</strong> zero<br />

shall be appended as necessary <strong>to</strong> ensure this sequence of numbers ends on<br />

an octet boundary. (see Note 14 of Data Representation Template 5.2)<br />

[zz+1]-nn Packed values (X2 in the decoding formula), where each value is a deviation<br />

from its respective group reference value.<br />

Before laying out where the various second order values, sub-parameters, counters, and what<br />

have you, go, it is appropriate <strong>to</strong> describe the complex packing scheme for grid point values in an<br />

algorithmic manner.<br />

In comparison with the description of the simple packing scheme for grid point values in the<br />

previous section, the encoding method for complex packing is the same up <strong>to</strong> part way through the<br />

fifth step, after the scaled values have been rounded <strong>to</strong> scaled integers but before the scaled<br />

integers are actually packed in<strong>to</strong> either pre-selected bit-length “words” or calculated bit-length<br />

“words”. The basic outline of complex packing is <strong>to</strong> scan through the array of scaled integers (one<br />

per grid point, or, possibly less than that if the Bit Map Section has been employed <strong>to</strong> discard<br />

some of the null value points) and seek out sub-sections exhibiting relatively low variability. One<br />

then finds the (local) minimum value in that sub-section and subtracts it from the (“first order”)<br />

integers in that sub-section, which leave a set of “second-order” integers. These numbers are<br />

than scanned <strong>to</strong> find the maximum value, which in turn is used <strong>to</strong> calculate the minimum number<br />

of bits necessary for a “word” <strong>to</strong> contain the sub-section set of second order numbers.<br />

The term “first order” in this context refers <strong>to</strong> the integer variables that result from subtracting the<br />

overall (*global) minimum from the original variables (in Step 3) and then doing all scaling and<br />

rounding; “second order” refers <strong>to</strong> the variables that result from subtracting the local minimum from<br />

the sub-set of first order variables. No further scaling is necessary or appropriate.<br />

40

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!