/src/gdal/frmts/grib/degrib/g2clib/cmplxpack.c
Line | Count | Source (jump to first uncovered line) |
1 | | #include "grib2.h" |
2 | | |
3 | | void cmplxpack(g2float *fld,g2int ndpts, g2int idrsnum,g2int *idrstmpl, |
4 | | unsigned char *cpack, g2int *lcpack) |
5 | | //$$$ SUBPROGRAM DOCUMENTATION BLOCK |
6 | | // . . . . |
7 | | // SUBPROGRAM: cmplxpack |
8 | | // PRGMMR: Gilbert ORG: W/NP11 DATE: 2004-08-27 |
9 | | // |
10 | | // ABSTRACT: This subroutine packs up a data field using a complex |
11 | | // packing algorithm as defined in the GRIB2 documentation. It |
12 | | // supports GRIB2 complex packing templates with or without |
13 | | // spatial differences (i.e. DRTs 5.2 and 5.3). |
14 | | // It also fills in GRIB2 Data Representation Template 5.2 or 5.3 |
15 | | // with the appropriate values. |
16 | | // |
17 | | // PROGRAM HISTORY LOG: |
18 | | // 2004-08-27 Gilbert |
19 | | // |
20 | | // USAGE: cmplxpack(g2float *fld,g2int ndpts, g2int idrsnum,g2int *idrstmpl, |
21 | | // unsigned char *cpack, g2int *lcpack) |
22 | | // INPUT ARGUMENT LIST: |
23 | | // fld[] - Contains the data values to pack |
24 | | // ndpts - The number of data values in array fld[] |
25 | | // idrsnum - Data Representation Template number 5.N |
26 | | // Must equal 2 or 3. |
27 | | // idrstmpl - Contains the array of values for Data Representation |
28 | | // Template 5.2 or 5.3 |
29 | | // [0] = Reference value - ignored on input |
30 | | // [1] = Binary Scale Factor |
31 | | // [2] = Decimal Scale Factor |
32 | | // . |
33 | | // . |
34 | | // [6] = Missing value management |
35 | | // [7] = Primary missing value |
36 | | // [8] = Secondary missing value |
37 | | // . |
38 | | // . |
39 | | // [16] = Order of Spatial Differencing ( 1 or 2 ) |
40 | | // . |
41 | | // . |
42 | | // |
43 | | // OUTPUT ARGUMENT LIST: |
44 | | // idrstmpl - Contains the array of values for Data Representation |
45 | | // Template 5.3 |
46 | | // [0] = Reference value - set by compack routine. |
47 | | // [1] = Binary Scale Factor - unchanged from input |
48 | | // [2] = Decimal Scale Factor - unchanged from input |
49 | | // . |
50 | | // . |
51 | | // cpack - The packed data field (character*1 array) |
52 | | // lcpack - length of packed field cpack[]. |
53 | | // |
54 | | // REMARKS: None |
55 | | // |
56 | | // ATTRIBUTES: |
57 | | // LANGUAGE: C |
58 | | // MACHINE: IBM SP |
59 | | // |
60 | | //$$$ |
61 | 3.34k | { |
62 | | |
63 | | |
64 | 3.34k | if ( idrstmpl[6] == 0 ) { // No internal missing values |
65 | 0 | compack(fld,ndpts,idrsnum,idrstmpl,cpack,lcpack); |
66 | 0 | } |
67 | 3.34k | else if ( idrstmpl[6] == 1 || idrstmpl[6] == 2) { |
68 | 3.34k | misspack(fld,ndpts,idrsnum,idrstmpl,cpack,lcpack); |
69 | 3.34k | } |
70 | 0 | else { |
71 | 0 | printf("cmplxpack: Don:t recognize Missing value option."); |
72 | 0 | *lcpack=-1; |
73 | 0 | } |
74 | | |
75 | 3.34k | } |