source: trunk/SRC/ToBeReviewed/LECTURE/GRIB/read_grib_gds.pro @ 325

Last change on this file since 325 was 325, checked in by pinsard, 17 years ago

modification of some headers (+some corrections) to prepare usage of the new idldoc

  • Property svn:keywords set to Id
File size: 2.3 KB
Line 
1;+
2; @file_comments
3;
4;
5; @categories
6;
7;
8; @param NUM
9;
10;
11; @param RECSTART
12;
13;
14; @returns
15;
16;
17; @restrictions
18;
19;
20; @examples
21;
22;
23; @history
24;
25;
26; @version
27; $Id$
28;-
29FUNCTION read_grib_gds, num, recstart
30;
31;
32  compile_opt idl2, strictarrsubs
33;
34  offset = recstart+8
35  a = assoc(num, bytarr(1, /nozero), offset-1)
36  sizepds = bit2int([binary(a[1]), binary(a[2]), binary(a[3])])
37;
38  offset = recstart+8+sizepds
39  a = assoc(num, bytarr(1, /nozero), offset-1)
40;
41  sizegds = bit2int([binary(a[1]), binary(a[2]), binary(a[3])])
42;
43  nv = (a[4])[0]
44  pv = (a[5])[0]
45;
46  gridtype = (a[6])[0]
47;
48  CASE 1 OF
49; Latitude/Longitude Grid
50; Gaussian Latitude/Longitude Grid
51    gridtype EQ 0 OR gridtype EQ 4:BEGIN
52      ni = bit2int([binary(a[7]), binary(a[8])])
53      nj = bit2int([binary(a[9]), binary(a[10])])
54;
55      la1 = bit2int([binary(a[11]), binary(a[12]), binary(a[13])], /checkneg)/1000.
56      lo1 = bit2int([binary(a[14]), binary(a[15]), binary(a[16])], /checkneg)/1000.
57;
58      resflags = binary(a[17])
59;
60      la2 = bit2int([binary(a[18]), binary(a[19]), binary(a[20])], /checkneg)/1000.
61      lo2 = bit2int([binary(a[21]), binary(a[22]), binary(a[23])], /checkneg)/1000.
62;
63      di = bit2int([binary(a[24]), binary(a[25])])/1000.
64      IF di EQ 65.5350 THEN di = -1
65;
66      IF gridtype EQ 0 THEN BEGIN
67        dj = bit2int([binary(a[26]), binary(a[27])])/1000.
68        IF dj EQ 65.5350 THEN dj = -1
69      ENDIF ELSE BEGIN
70        n = bit2int([binary(a[26]), binary(a[27])])
71      ENDELSE
72;
73      scanflags = binary(a[28])
74;
75      res = {size:sizegds, gridtype:gridtype, ni:ni, nj:nj, la1:la1, la2:la2, lo1:lo1, lo2:lo2, di:di}
76      IF gridtype EQ 0 THEN res = create_struct(res, 'dj', dj) $
77      ELSE res = create_struct(res, 'n', n)
78      RETURN, res
79    END
80; Mercator Projection Grid
81    gridtype EQ 1:
82; Gnomonic Projection Grid
83    gridtype EQ 2:
84; Lambert Conformal, secant or tangent, conical or bipolar (normal or
85; oblique) Projection Grid 
86    gridtype EQ 3:
87; Polar Stereographic Projection Grid
88    gridtype EQ 5:
89; Oblique Lambert conformal, secant or tangent, conical or bipolar,
90; projection
91    gridtype EQ 13:
92; Spherical Harmonic Coefficients
93    gridtype EQ 50:
94; Space view perspective or orthographic grid
95    gridtype EQ 90:
96; reserved - see Manual on Codes
97    ELSE:
98  ENDCASE
99;
100  RETURN, -1
101END
Note: See TracBrowser for help on using the repository browser.