IDL遥感应用入门(6):利用QuikScat数据绘制风速矢量图(对象图形法)

在上一篇文章中,我介绍了关于IDL中使用直接图形法绘制矢量风场的方法,但是我实现的有些缺陷。

本文介绍一种简单的矢量绘图方法,采用IDL的对象图形法。

QuikScat数据说明

QuikScat提供3个方面数据信息:表面风速,表面风向和降雨信息。

其中数据在0到250属于有效信息,大于250的值均属于无效信息。

计算风速的时候需要乘以0.2,风向需要乘以1.5

更多详细信息可以查看这里

代码实现

;Author:Sailor
;2013-10-31
PRO Course_6

;定义文件路径
MyRootDir='D:\3\'

;遍历文件夹
filearr = file_search(MyRootDir,'*.gz',count=num);
FOR fileindex=0,num-num,1 DO BEGIN

  ;打开文件
  OPENR , LUN , filearr[fileindex] , /COMPRESS,/GET_LUN

  ;构造显示标题
  filename=FILE_BASENAME(filearr[fileindex]);
  filename=STRMID(filename,6,10)
  year=STRMID(filename,0,4)+' '
  month=STRMID(filename,4,2)+' '
  day=STRMID(filename,6,2)+' '
  diplayname=year+month+day

  ;读入数组&抽样
  FleArr = BYTARR(1440,720,3)
  READU , LUN , FleArr

  WdSpd = congrid(FleArr(*,*,0),90,45)
  WdDir = congrid(FleArr(*,*,1),90,45)

  ;过滤数据
  GT250IdxDir = where(WdDir GT 250);
  WdSpd[GT250IdxDir] = 0;

  ;计算U和V,X和y
  WdSpd = WdSpd*0.2
  WdDir = WdDir*1.5
  U = WdSpd*sin(WdDir/180*!pi)
  V = WdSpd*cos(WdDir/180*!pi)
  x = DINDGEN(90)*4
  y = DINDGEN(45)*4-90

  ;加载MAP
  m = MAP('Equirectangular', LIMIT=[-90,0,90,360],LABEL_POSITION=0, LABEL_ANGLE=0, COLOR='light gray', LABEL_COLOR='black',POSITION=[0.1,0.1,0.9,1])
  cont = MAPCONTINENTS(FILL_COLOR='light gray')
  ;加载vector
  vec = VECTOR(U,V,x,y,/OVERPLOT,AUTO_COLOR=1)
  l = Legend(SAMPLE_MAGNITUDE=10, UNITS='$m s^{-1}$', POSITION=m.MapForward(-45,61), /DATA, VERTICAL_ALIGNMENT='bottom')

  ;关闭文件释放设备号
  CLOSE , LUN
  FREE_LUN , LUN

ENDFOR
END

效果如图

说明

文中MyRootDir=’D:\3\’ 是定义的数据路径,这里共享下我用的实验数据 。猛击这里下载

---------------------2014-01-14更新--------------------

在教程10中对本方法做了改进,可以点击这里查看教程10

IDL遥感应用入门(5):利用QuikScat数据绘制风速矢量图 关于IDL对象图形法的VECTOR函数

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

发表评论