idl 原函数分析

PRO Course_13


  ;定义文件路径


  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,0,14)                  ;文件名字符串处理


    sat=STRMID(filename,0,5)+' '                    ;截取0-5个字节为sat
    
    year=STRMID(filename,6,4)+' '                   ;截取6-10个字节为年


    month=STRMID(filename,10,2)+' '                 ;截取6-10个字节为月


    day=STRMID(filename,12,2)+' '                   ;截取6-10个字节为日


    diplayname=sat+year+month+day                   ;显示的字符串(名字)等于这些字符串组合一起,他在IMAGE函数会调用这个字符串用作标题




    ;读入数组&抽样


    FleArr = BYTARR(1440,720,3)                     ;创建1440列720行3个字节的随机数组
    ;


    READU , LUN , FleArr                            ;读LUN标识符的文件到IDL变量库


    help,FleArr;[160:320,340:480,0]                 ;
    DisSpd=FleArr(*,*,0)*0.2                        ;除了数组的字节数 所有随机的x,y数组坐标变成原来的0.2倍


    WdSpd = congrid(FleArr[160:320,340:480,0],80,70)  ;congrid函数萎缩或膨胀量的任意数组的大小,80,70可能表示x,y轴的膨胀度


    WdDir = congrid(FleArr[160:320,340:480,1],80,70)
    ;help,wdspd,wddir


    ;过滤数据


    GT250IdxDir = where(WdDir GT 250);                 ;找到大于250的索引


    WdSpd[GT250IdxDir] = 0;                             ;大于250对应的索引的值(风速)=0




    GT250IdxDir = where(DisSpd GT 250*0.2);             ;找到大于250的0.2倍的索引


    DisSpd[GT250IdxDir] = 0;                            ;大于250的0.2倍对应的索引的值(风速)=0


    DisSpd[GT250IdxDir] = max(DisSpd)+0.1;              ;让上述这个值 = 其中随机且经过筛选的最大风速的那个点 + 0.1




    ;计算U和V,X和y


    WdSpd = WdSpd*0.2                                  ;风速变为0.2倍


    WdDir = WdDir*1.5                                  ;方向变成1.5倍




    WdSpd[0,*]=0                                      ;x=0,y=任意  这个点的坐标的值全部置为0    ???




    U = WdSpd*sin(WdDir/180*(!pi))                     ;数学变换


    V = WdSpd*cos(WdDir/180*(!pi))


    x = DINDGEN(80)*2                                  ;创建一个双精度浮点数组(80个,值为0,1,2,3,...,80),x,y值扩大两倍。


    y = DINDGEN(70)*2




    ;绘图


    SpdImg = IMAGE(congrid(DisSpd[160:320,340:480,0],160,140),RGB_TABLE=39,TITLE=diplayname,grid_units=1,POSITION=[0.3,0.3,0.9,0.9]) ;DisSpd是一个数组(中间参数取点),rgb_table是rgb颜色,title是标题显示的字符串,grid—unit是渐变的程度系数,position是位置(可能是渐变的起始位置??)


    ;加载vector


    vec = VECTOR(COLOR='BLACK',U,V,x,y,/overplot,LENGTH_SCALE=0.00001,HEAD_ANGLE=26,HEAD_SIZE=0.3,THICK=0.2)


    grdx= axis(TICKDIR=1,'X',LOCATION=[0,0],AXIS_RANGE=[40,80],COORD_TRANSFORM=[40,0.25],MINOR=0,MAJOR=9)    ;轴的功能添加到现有的IDL图形轴(x轴)。


    grdy= axis(TICKDIR=1,'Y',LOCATION=[0,0],AXIS_RANGE=[-5,30],COORD_TRANSFORM=[-5,0.25],MINOR=0,MAJOR=8)
   
    ;COLORBAR


    c = COLORBAR(target=SpdImg,RGB_TABLE=39,TITLE='Wind Speed (m/s)',POSITION=[0.15,0.1,0.85,0.15])   ;最下方的颜色条




   ;关闭文件释放设备号


    CLOSE , LUN


    FREE_LUN , LUN




  ENDFOR


END



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值