麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

IDL遥感应用入门(5):利用QuikScat数据绘制风速矢量图

在之前的文章里,我介绍了利用QuikScat数据来绘制平均风速图,但是这些数据都是标量数据,只有风速的大小,并没有风速的矢量方向。这次将利用IDL绘制矢量的风场图。

QuikScat数据说明

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

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

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

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

代码实现

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

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

;设置背景
DEVICE,DECOMPOSED=1
!P.BACKGROUND='FFFFFF'xl
!P.COLOR='000000'xl

;遍历文件夹
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),180,90)
  WdDir = congrid(FleArr( *, * ,1),180,90)

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

  ;计算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(180) * 2
  y = DINDGEN(90) * 2-90
  print,U(90,45)
  ;绘图
  window , fileindex ,xsize=1000,ysize=750
  MAP_SET , 0 , 180  , /CYLINDRICAL , /CONTINENTS , E_CONTINENTS={FILL:1} , E_GRID={LABEL:2} , TITLE=diplayname
  VELOVECT, U, V , x , y , MISSING=250*0.2 , /OVERPLOT,color=233

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

ENDFOR
END

效果图

说明

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

另外本文使用的是直接法绘图,并且没有实现图例和和说明信息,欢迎做到朋友能够指点一下。

----------------------------------2014-01-13更新------------------------------------

最新更新:关于图例的问题已经解决可以点击下面的网址查看最新方法:http://malagis.com/idl-remote-sensing-improved-quikscat-wind-vector.html

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)