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

在之前教程6的文章中,我采用了对象图形法绘制了风速矢量图,但是不言而喻,绘制的图实在是丑,有点拿不出手的程度,这里我对原来的方法做了一个改进,是显示效果稍微提高了下。

改进之后效果图

是不是改进之后高大上了呢?

全部代码

;Author:Sailor
;2013-11-15

PRO Course_9

;定义文件路径
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(COLOR='BLACK',U,V,x,y,/OVERPLOT,LENGTH_SCALE=0.3,HEAD_ANGLE=26,HEAD_SIZE=0.4,THICK=0.3)
  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

改进的秘密

本文的效果之所以会好,是因为VECTOR参数的问题,可以看我这次设置vector的代码和之前教程6的做一个对比。

vec = VECTOR(COLOR='BLACK',U,V,x,y,/OVERPLOT,LENGTH_SCALE=0.3,HEAD_ANGLE=26,HEAD_SIZE=0.4,THICK=0.3)
这里LENGTH_SCALE设置了箭头的缩放比例,HEAD_ANGLE设置了箭头的角度,HEAD_SIZE设置了箭头的大小,THICK设置了箭头的粗细程度。

详细的说明可以看这里

一些说明

文中file_search(‘D:\3′,’*.gz’) 是定义的数据路径,这里共享下我用的实验数据 。猛击这里下载

关于IDL直接图形法的VELOVECT函数 IDL中箭头的秘密(关于设置箭头属性)

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

发表评论