麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

IDL直接图形法绘制图例的两种方法

在使用直接法绘制矢量图的时候,需要绘制相关图例。关于直接图形法绘制矢量图,我写了两篇文章,你可以看这里:IDL遥感应用入门(9):改进利用QuikScat数据绘制风速矢量图这是对教程5的更新升级,利用本文的方法可以绘制出图例,这是改进之后的方法,这里将两种方法列举出来,供大家学习对比只用。

方法一

这种方法的思想是,绘制完矢量图之后,重新绘制图例。示例代码如下:
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)
  ;图例数组
  uscale=fltarr(180,90)
  uscale(50,70)=10
  vscale=fltarr(180,90)
  window,data,xsize=1440,ysize=720
  name=strarr(7)
  name[data]=string(20060700+data+1)
  map_set,0,180,0,title=name(data),/continents,/grid,/label
  velovect,u,v,x,y,missing=250*0.2,/overplot
  velovect,uscale,vscale,x,y,color='FF0000'xl,/overplot
从示例代码中可以看出,这里绘制了两次velovect。

方法二

方法一中给了我们一个新的思考,方法一采用的绘制两次vector的方法实现了图例的绘制,那能不能把两次合并成一次呢?当然可以,可以发现方法一是把(50,70)这个点作为图例,同理,我们可以把原来的uv数组对应的(50,70)直接赋值即可。示例代码如下:
;构建vector函数所需参数
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)

;构建图例
u(50,70)=30
v(50,70)=0

;出图显示
window,data,xsize=1440,ysize=720
name=strarr(7)
name[data]=string(20060700+data+1)
map_set,0,180,0,title=name(data),/continents,/grid,/label
velovect,u,v,x,y,missing=250*0.2,/overplot


其实方法一和方法二都是IDL遥感应用入门(9):改进利用QuikScat数据绘制风速矢量图一文中的代码,下面是全部代码,代码同样来自@杨铭伦大神。

pro yangminglun5
filename=file_search('D:\3','*.gz')
device,decomposed=1
!p.color=0
!p.background='FFFFFF'xl
for data=0,0 do begin
  a=bytarr(1440,720,3)
  openr,lun,filename[data],/compress,/get_lun
  readu,lun,a
  free_lun,lun
  ws=congrid(a(*,*,0),180,90)*0.2
  ;print,ws
  dir=congrid(a(*,*,1),180,90)*1.5/180*!pi
  u=ws*sin(dir)
  v=ws*cos(dir)
  x=findgen(1440)*0.25
  y=findgen(720)*0.25-90
  x=congrid(x,180)
  y=congrid(y,90)
  ;图例数组
  uscale=fltarr(180,90)
  uscale(50,70)=30
  vscale=fltarr(180,90)
  window,data,xsize=1440,ysize=720
  name=strarr(7)
  name[data]=string(20060700+data+1)
  map_set,0,180,0,title=name(data),/continents,/grid,/label
  velovect,u,v,x,y,missing=250*0.2,/overplot
  velovect,uscale,vscale,x,y,color='FF0000'xl,/overplot
  xyouts,103,49,'10m/s',color='FF0000'xl
 endfor
end
感兴趣的可以用这个代码替换教程9的代码,可以对这两种方法做一个对比。
麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。
微博关注
手机阅读
赞赏支持
手机阅读
微信捐助麻辣GIS
微信打赏
支付宝捐助麻辣GIS
支付宝打赏

声明

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

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

3.如果本文对您有所帮助,请您对我们团队进行 打赏捐助让我们在传播3S的路上可以走得更远,不胜感激。PS:如果你是学生党,请优先把经费用于购买学习资料 以及 与小哥哥/小姐姐约会上:-)

如您有疑问,可在文末留言,或到麻辣GIS QQ群中提问。

QQ群(一):291616564 加入QQ群

QQ群(二):166408035 加入QQ群

QQ群(三):627853279 加入QQ群

QQ群(四):436386604 加入QQ群

QQ群(五):606176554 加入QQ群

QQ群(六):946178380 加入QQ群

QQ群(七):861271808 加入QQ群

新疆互助群:910717627 加入QQ群

微信公众号:malagis,扫描右边二维码直接关注。

发表评论