1 | #!/usr/bin/env python |
---|
2 | # -*- coding: utf-8 -*- |
---|
3 | import string |
---|
4 | import numpy as np |
---|
5 | import matplotlib.pyplot as plt |
---|
6 | from pylab import * |
---|
7 | from mpl_toolkits.basemap import Basemap |
---|
8 | from mpl_toolkits.basemap import shiftgrid, cm |
---|
9 | import netCDF4 |
---|
10 | import ffgrid2 |
---|
11 | |
---|
12 | |
---|
13 | |
---|
14 | |
---|
15 | |
---|
16 | ######################## |
---|
17 | # EVOLUTION TEMPORELLE # |
---|
18 | ######################## |
---|
19 | ## Autour d une zone de glace de mer (lon entre -70 et -90 ; lat entre -70 et -80) - mois: JUNE ## |
---|
20 | ## ch12 ## |
---|
21 | bbzone_CH12_JUN = nonzero((lon12_JUN >= -90.) & (lon12_JUN <= -70.) & (lat12_JUN >= -80.) & (lat12_JUN <= -70.)) |
---|
22 | tb12_JUN_moy = np.zeros([30],float) |
---|
23 | |
---|
24 | ## ch13 ## |
---|
25 | bbzone_CH13_JUN = nonzero((lon13_JUN >= -90.) & (lon13_JUN <= -70.) & (lat13_JUN >= -80.) & (lat13_JUN <= -70.)) |
---|
26 | tb13_JUN_moy = np.zeros([30],float) |
---|
27 | |
---|
28 | ## ch15 ## |
---|
29 | bbzone_CH15_JUN = nonzero((lon15_JUN >= -90.) & (lon15_JUN <= -70.) & (lat15_JUN >= -80.) & (lat15_JUN <= -70.)) |
---|
30 | tb15_JUN_moy = np.zeros([30],float) |
---|
31 | |
---|
32 | ## ch 16 ## |
---|
33 | bbzone_CH16_JUN = nonzero((lon16_JUN >= -90.) & (lon16_JUN <= -70.) & (lat16_JUN >= -80.) & (lat16_JUN <= -70.)) |
---|
34 | tb16_JUN_moy = np.zeros([30],float) |
---|
35 | |
---|
36 | for ijr in range (0,30): |
---|
37 | print 'jour=', ijr+1 |
---|
38 | ## ch12 ## |
---|
39 | ind_jr12 = np.where(jjr12_JUN[bbzone_CH12_JUN]==ijr+1)[0] |
---|
40 | a = tb12_JUN[bbzone_CH12_JUN][ind_jr12] |
---|
41 | tb12_JUN_moy[ijr] = mean(a[nonzero((a!=-500.)&(a!=0.))]) |
---|
42 | ## ch13 ## |
---|
43 | ind_jr13 = np.where(jjr13_JUN[bbzone_CH13_JUN]==ijr+1)[0] |
---|
44 | b = tb13_JUN[bbzone_CH13_JUN][ind_jr13] |
---|
45 | tb13_JUN_moy[ijr] = mean(b[nonzero((b != -500.) & (b != 0.))]) |
---|
46 | ## ch15 ## |
---|
47 | ind_jr15 = np.where(jjr15_JUN[bbzone_CH15_JUN]==ijr+1)[0] |
---|
48 | c = tb15_JUN[bbzone_CH15_JUN][ind_jr15] |
---|
49 | tb15_JUN_moy[ijr] = mean(c[nonzero((c != -500.) & (c != 0.))]) |
---|
50 | ## ch16 ## |
---|
51 | ind_jr16 = np.where(jjr16_JUN[bbzone_CH16_JUN]==ijr+1)[0] |
---|
52 | d = tb16_JUN[bbzone_CH16_JUN][ind_jr16] |
---|
53 | tb16_JUN_moy[ijr] = mean(d[nonzero((d != -500.) & (d != 0.))]) |
---|
54 | |
---|
55 | |
---|
56 | XCPGR = (tb12_JUN_moy - tb16_JUN_moy) / (tb12_JUN_moy + tb16_JUN_moy) |
---|
57 | |
---|
58 | ## ch12 - ch13 // ch15 - ch16 ## |
---|
59 | fig=plt.figure() |
---|
60 | plt.subplot(2,1,1) |
---|
61 | plt.plot(arange(0,30,1), tb12_JUN_moy, label = '19.35GHz-H', c = 'r') |
---|
62 | plt.plot(arange(0,30,1), tb13_JUN_moy, label = '19.35GHz-V', c = 'b') |
---|
63 | plt.plot(arange(0,30,1), tb15_JUN_moy, label = '37GHz-H', c = 'm') |
---|
64 | plt.plot(arange(0,30,1), tb16_JUN_moy, label = '37GHz-V', c = 'g') |
---|
65 | plt.xticks(arange(0,30,1), arange(1,31,1)) |
---|
66 | grid(True) |
---|
67 | ylabel('brightness temperature') |
---|
68 | legend(loc=7) |
---|
69 | plt.title('SSMIS - JUNE2010') |
---|
70 | plt.subplot(2,1,2) |
---|
71 | plt.plot(arange(0,30,1), XCPGR) |
---|
72 | plt.xticks(arange(0,30,1), arange(1,31,1)) |
---|
73 | grid(True) |
---|
74 | ylabel('Cross polarized gradient ratio') |
---|
75 | fig.show() |
---|
76 | |
---|
77 | |
---|
78 | ################ |
---|
79 | # CARTOGRAPHIE # |
---|
80 | ################ |
---|
81 | ## Etude sur l'Antarctique ## |
---|
82 | dx=5. |
---|
83 | dy=5. |
---|
84 | x0, x1 = -180, 180 |
---|
85 | y0, y1 = -90, -30 |
---|
86 | |
---|
87 | ## ch12 ## |
---|
88 | bbtb_ch12_JUN=nonzero((tb12_JUN!=-500.)&(tb12_JUN!=0.)) |
---|
89 | OUTZCH12_JUN = np.zeros([len(np.arange(y0, y1+1, dy)),len(np.arange(x0, x1+1, dx)),30], float) |
---|
90 | outzch12_JUN = np.zeros([len(np.arange(y0, y1+1, dy)),len(np.arange(x0, x1+1, dx))], float) |
---|
91 | lonch12_JUN=np.zeros([len(np.arange(x0, x1+1, dx))], float) |
---|
92 | latch12_JUN=np.zeros([len(np.arange(y0, y1+1, dy))], float) |
---|
93 | |
---|
94 | ## ch16 ## |
---|
95 | bbtb_ch16_JUN=nonzero((tb16_JUN!=-500.)&(tb16_JUN!=0.)) |
---|
96 | OUTZCH16_JUN = np.zeros([len(np.arange(y0, y1+1, dy)),len(np.arange(x0, x1+1, dx)),30], float) |
---|
97 | outzch16_JUN = np.zeros([len(np.arange(y0, y1+1, dy)),len(np.arange(x0, x1+1, dx))], float) |
---|
98 | lonch16_JUN=np.zeros([len(np.arange(x0, x1+1, dx))], float) |
---|
99 | latch16_JUN=np.zeros([len(np.arange(y0, y1+1, dy))], float) |
---|
100 | |
---|
101 | for ijr in range(0,30): |
---|
102 | print 'jour=', ijr+1 |
---|
103 | ## ch12 ## |
---|
104 | ind_jr12_JUN = np.where(jjr12_JUN[bbtb_ch12_JUN] == ijr+1)[0] |
---|
105 | xx = lon12_JUN[bbtb_ch12_JUN][ind_jr12_JUN] |
---|
106 | yy = lat12_JUN[bbtb_ch12_JUN][ind_jr12_JUN] |
---|
107 | zz = tb12_JUN[bbtb_ch12_JUN][ind_jr12_JUN] |
---|
108 | zz0 = min(zz) |
---|
109 | zz1 = max(zz) |
---|
110 | outz, outx, outy = ffgrid2.ffgrid(xx, yy, zz, dx, dy, x0,x1,y0,y1,zz0, zz1) |
---|
111 | outzch12_JUN=outz |
---|
112 | lonch12_JUN=outx |
---|
113 | latch12_JUN=outy |
---|
114 | OUTZCH12_JUN[:,:,ijr] = outzch12_JUN[:,:] |
---|
115 | ## ch16 ## |
---|
116 | ind_jr16_JUN = np.where(jjr16_JUN[bbtb_ch16_JUN] == ijr+1)[0] |
---|
117 | xx = lon16_JUN[bbtb_ch16_JUN][ind_jr16_JUN] |
---|
118 | yy = lat16_JUN[bbtb_ch16_JUN][ind_jr16_JUN] |
---|
119 | zz = tb16_JUN[bbtb_ch16_JUN][ind_jr16_JUN] |
---|
120 | zz0 = min(zz) |
---|
121 | zz1 = max(zz) |
---|
122 | outz, outx, outy = ffgrid2.ffgrid(xx, yy, zz, dx, dy, x0,x1,y0,y1,zz0, zz1) |
---|
123 | outzch16_JUN=outz |
---|
124 | lonch16_JUN=outx |
---|
125 | latch16_JUN=outy |
---|
126 | OUTZCH16_JUN[:,:,ijr] = outzch16_JUN[:,:] |
---|
127 | |
---|
128 | |
---|
129 | XCPGR = (OUTZCH12_JUN - OUTZCH16_JUN) / (OUTZCH12_JUN + OUTZCH16_JUN) |
---|
130 | |
---|
131 | for ijr in range (13,20): |
---|
132 | figure() |
---|
133 | plt.ion() |
---|
134 | m = Basemap(llcrnrlon=-180, urcrnrlon=180, llcrnrlat=-90, urcrnrlat=-30, projection='cyl', resolution='c', fix_aspect=True) |
---|
135 | m.drawcoastlines(linewidth = 1) |
---|
136 | m.drawparallels(np.arange(-90., 90., 20)) |
---|
137 | m.drawmeridians(np.arange(-180., 180., 20)) |
---|
138 | #m.fillcontinents() |
---|
139 | xii,yii = m(*np.meshgrid(lonch12_JUN, latch12_JUN)) |
---|
140 | clevs = arange(-0.3, 0.01, 0.01) |
---|
141 | cs = m.contourf(xii, yii, XCPGR[:,:,ijr], clevs, cmap=cm.s3pcpn_l_r) |
---|
142 | cbar = colorbar(cs) |
---|
143 | cbar.set_label('XCPGR SSMIS - JUNE') |
---|
144 | |
---|
145 | |
---|
146 | ########################## |
---|
147 | # DIAGRAMME DE HOVMOLLER # |
---|
148 | ########################## |
---|
149 | ## Etude sur une tranche de latitude (proche de la cote: entre lat0 = -80 et lat1 = -75 - mois: JUNE ## |
---|
150 | # shape(tbch17_anom_JUN) = [ilat, ilon, ijr] |
---|
151 | bbtranche12_JUN = nonzero((latch12_JUN >= -80.) & (latch12_JUN <= -75.)) |
---|
152 | grad_ratio = np.zeros([len(lonch12_JUN), 30], float) |
---|
153 | for ilon in range (0, len(lonch12_JUN)): |
---|
154 | for ijr in range (0,30): |
---|
155 | grad_ratio[ilon, ijr] = XCPGR[bbtranche12_JUN][:, ilon, ijr].mean() |
---|
156 | |
---|
157 | |
---|
158 | y_time, x_space = m(*np.meshgrid(arange(0,30,1), lonch12_JUN)) |
---|
159 | fig = plt.figure() |
---|
160 | plt.pcolor(x_space, y_time, grad_ratio, cmap=cm.s3pcpn_l_r, vmin = -0.3, vmax = 0.1) |
---|
161 | plt.axis([-180., 180., 0, 29]) |
---|
162 | cb = plt.colorbar() |
---|
163 | cb.set_label('Cross polarization gradient ratio - SSMIS CH12-CH16') |
---|
164 | plt.xticks(arange(-180.,220.,40)) |
---|
165 | plt.yticks(arange(0, 30, 1), arange(1,31,1)) |
---|
166 | plt.xlabel('longitude') |
---|
167 | plt.ylabel('JUNE 2010') |
---|
168 | |
---|