麻辣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。

声明

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

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

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

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