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

Last change on this file since 495 was 495, checked in by pinsard, 10 years ago

fix thanks to coding rules; typo; dupe empty lines; trailing blanks

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