1 | FUNCTION read_grib_gds, num, recstart |
---|
2 | ; |
---|
3 | offset = recstart+8 |
---|
4 | a = assoc(num, bytarr(1, /nozero), offset-1) |
---|
5 | sizepds = bit2int([binary(a[1]), binary(a[2]), binary(a[3])]) |
---|
6 | ; |
---|
7 | offset = recstart+8+sizepds |
---|
8 | a = assoc(num, bytarr(1, /nozero), offset-1) |
---|
9 | ; |
---|
10 | sizegds = bit2int([binary(a[1]), binary(a[2]), binary(a[3])]) |
---|
11 | ; |
---|
12 | nv = (a[4])[0] |
---|
13 | pv = (a[5])[0] |
---|
14 | ; |
---|
15 | gridtype = (a[6])[0] |
---|
16 | ; |
---|
17 | CASE 1 OF |
---|
18 | ; Latitude/Longitude Grid |
---|
19 | ; Gaussian Latitude/Longitude Grid |
---|
20 | gridtype EQ 0 OR gridtype EQ 4:BEGIN |
---|
21 | ni = bit2int([binary(a[7]), binary(a[8])]) |
---|
22 | nj = bit2int([binary(a[9]), binary(a[10])]) |
---|
23 | ; |
---|
24 | la1 = bit2int([binary(a[11]), binary(a[12]), binary(a[13])], /checkneg)/1000. |
---|
25 | lo1 = bit2int([binary(a[14]), binary(a[15]), binary(a[16])], /checkneg)/1000. |
---|
26 | ; |
---|
27 | resflags = binary(a[17]) |
---|
28 | ; |
---|
29 | la2 = bit2int([binary(a[18]), binary(a[19]), binary(a[20])], /checkneg)/1000. |
---|
30 | lo2 = bit2int([binary(a[21]), binary(a[22]), binary(a[23])], /checkneg)/1000. |
---|
31 | ; |
---|
32 | di = bit2int([binary(a[24]), binary(a[25])])/1000. |
---|
33 | IF di EQ 65.5350 THEN di = -1 |
---|
34 | ; |
---|
35 | IF gridtype EQ 0 THEN BEGIN |
---|
36 | dj = bit2int([binary(a[26]), binary(a[27])])/1000. |
---|
37 | IF dj EQ 65.5350 THEN dj = -1 |
---|
38 | ENDIF ELSE BEGIN |
---|
39 | n = bit2int([binary(a[26]), binary(a[27])]) |
---|
40 | ENDELSE |
---|
41 | ; |
---|
42 | scanflags = binary(a[28]) |
---|
43 | ; |
---|
44 | res = {size:sizegds, gridtype:gridtype, ni:ni, nj:nj, la1:la1, la2:la2, lo1:lo1, lo2:lo2, di:di} |
---|
45 | IF gridtype EQ 0 THEN res = create_struct(res, 'dj', dj) $ |
---|
46 | ELSE res = create_struct(res, 'n', n) |
---|
47 | RETURN, res |
---|
48 | END |
---|
49 | ; Mercator Projection Grid |
---|
50 | gridtype EQ 1: |
---|
51 | ; Gnomonic Projection Grid |
---|
52 | gridtype EQ 2: |
---|
53 | ; Lambert Conformal, secant or tangent, conical or bipolar (normal or |
---|
54 | ; oblique) Projection Grid |
---|
55 | gridtype EQ 3: |
---|
56 | ; Polar Stereographic Projection Grid |
---|
57 | gridtype EQ 5: |
---|
58 | ; Oblique Lambert conformal, secant or tangent, conical or bipolar, |
---|
59 | ; projection |
---|
60 | gridtype EQ 13: |
---|
61 | ; Spherical Harmonic Coefficients |
---|
62 | gridtype EQ 50: |
---|
63 | ; Space view perspective or orthographic grid |
---|
64 | gridtype EQ 90: |
---|
65 | ; reserved - see Manual on Codes |
---|
66 | ELSE: |
---|
67 | ENDCASE |
---|
68 | ; |
---|
69 | RETURN, -1 |
---|
70 | END |
---|