- 积分
- 57
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2016-4-7
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如题,在画NCEP数据700hpa/850hpa水汽通量散度的时候想抹去小于地形高度的部分。
ncl中有mask函数,grades也听说过。因为MI已经写好代码了所以想用MI试试能不能做到。
我自己想的是最简单的那种,用位势高度减去地形高度,小于0的部分填色成白色。但是在实现的时候发现用contourm可以描绘出轮廓,但是用contourfm填色却不行。可能是我图层设置的问题..?
是不是只能用循环把要遮盖地区的数据写成缺省?或者用grades进行maskout数据?
我对python了解不多,希望各位老师和同学们多多指点!非常感谢!!
以下是代码,感谢王老师的水汽通量散度的程序.
- #NCEP 6H 水汽通量散度
- print 'Open data files...'
- f_Air = addfile('E:/HELLO WORLD/DATA/NCEP/Water Vapor Flux/700hPa 9.3-5 air.nc')
- f_Uwnd = addfile('E:/HELLO WORLD/DATA/NCEP/Water Vapor Flux/700hPa 9.3-5 uwind.nc')
- f_Vwnd = addfile('E:/HELLO WORLD/DATA/NCEP/Water Vapor Flux/700hPa 9.3-5 vwind.nc')
- f_Rhum = addfile('E:/HELLO WORLD/DATA/NCEP/Water Vapor Flux/700hPa 9.3-5 rh.nc')
- f_hgt = addfile('E:/HELLO WORLD/DATA/NCEP/Water Vapor Flux/700hPa 9.3-5 hgt.nc') #700hpa位势高度
- f_z = addfile('E:/HELLO WORLD/DATA/NCEP/hgt/NECP.hgt.sfc.nc') #地面位势高度
- print 'Read data array...'
- tidx = 8
- t = f_Air.gettime(tidx)
- Air = f_Air['air'][tidx,:,:,:]
- Uwnd = f_Uwnd['uwnd'][tidx,:,:,:]
- Vwnd = f_Vwnd['vwnd'][tidx,:,:,:]
- Rhum = f_Rhum['rhum'][tidx,:,:,:]
- hgt = f_hgt['hgt'][tidx,:,:,:]
- z = f_z['hgt'][:,:,:]
- # Calculate
- print 'Calculate...'
- speed = sqrt(Uwnd*Uwnd+Vwnd*Vwnd) #风场
- prs = 700 #level
- g = 9.8
- es = 6.112*exp(17.67*(Air-273.16)/(Air-29.65)) #饱和水汽压
- qs = 0.62197*es/(prs-0.378*es)*1000 #饱和比湿
- q = qs*Rhum/100 #比湿
- qhdivg = hdivg(q*Uwnd/g,q*Vwnd/g)*100000 #units = 10-5*g/(s•cm2•hPa)
- blank = z-hgt
- #Plot
- print 'Plot...'
- proj = projinfo(proj='lcc', lon_0=105, lat_1=25, lat_2=37)
- axesm(projinfo=proj, axison=True, gridlabel=True, frameon=True)
- mlayer = shaperead('E:/HELLO WORLD/MeteoInfo/map/country.shp')
- lsichuan = shaperead('E:/HELLO WORLD/MeteoInfo/map/sichuan.shp')
- geoshow(mlayer, edgecolor='black',size=2)
- geoshow(lsichuan,edgecolor='black',size=2)
- levs1 = [-3,-2.5,-2, -1.5, -1, -0.5,0, 0.5,1,1.5,2,2.5,3]
- levs2 = [0,10000]
- layer1 = contourfm(qhdivg,levs1, cmap='BlueRed') #水汽通量散度
- layer2 = quiverm(Uwnd, Vwnd, speed,size=20,color='black') #风场
- layer3 = contourm(blank,levs2,colors='white')#地形遮盖
- title('Water Vapor Flux Divergency (' + t.strftime('%Y-%m-%d_%H:%M:%S') + ')',fontsize=20)
- colorbar(layer1)
- axism([81, 132, 9, 47])
- #savefig('E:/HELLO WORLD/results/090500 700hPa WVP Divergency.png')
复制代码 这是出来的图,用layer3 = contoufm(blank,levs2,colors='white')的话就直接不显示了....不明白为什么啊,是因为不能用两个contoufm函数么?
问的问题可能非常小白,谢谢大家看帖。
|
|