zoukankan      html  css  js  c++  java
  • IDL---ENVI

    ENVI;启动envi
    file=envi_pickfile();选择文件dialog,返回值就为file
    ENVI_OPEN_FIle,file,r_fid=fid;根据文件名打开file,并且返回fid
    envi_file_query,fid,NB=NB,NL=NL,NS=NS,dims=dims,data_type=dt,bnames=bnames;根据fid查询图像信息
    data=envi_get_data(fid=fid,dims=dims,pos=0)根据fid得到数据dims:维度
    window,1,xsize=798,ysize=909l;新建一个window窗体
    tv,data;显示数据
    tvscl,data;拉伸显示
    tvscl,data,/order;idl中左下角为原点,envi中是左上角
    envi,/restore_base_save_files ;不启动ENVI调用功能
    envi_batch_init:批处理初始化
    .e canny.pro;跳转到canny.pro文件
    
    完整工程文件----定义一个button,并添加事件
    PRO envi_canny_define_buttons,buttonInfo
    ;定义button
    ENVI_DEFINE_MENU_BUTTON,buttonInfo,$
      value='Canny',$;显示的值
      uValue='',$;用户值
      EVENT_PRO='envi_canny',$;必须与主函数名一致
      pef_value='Filter',$;区分大小写
      position=1;位置
    END
      
    pro envi_canny,event          ;定义主函数
    ;
    compile_opt idl2              ;编译环境
    ;选择数据
    envi_select,fid=fid,/BAND_ONLY,pos=pos  ;选择遥感数据文件
    ;检查数据
    print,fid,pos   ;打印
    if fid eq -1 then return                ;判断是否得到数据
    ;查询数据
    envi_file_query,fid,dims=dims,ns=ns,$
     nl=nl, nb=1, wl=wl
    ;获取数据
    data=ENVI_GET_DATA(fid=fid,dims=dims,pos=pos)
    ;canny
    result=canny(data)
    ;显示数据
    ;TVSCL,result   ;新建窗体并显示数据
    output=envi_pickfile(/output)   ;设置并得到输出路径
      if(output eq "")then begin    ;判断得到的输出路径是否为空
        ENVI_ENTER_DATA,result
       endif else begin   
        ;保存数据
       openw,lun,output,/GET_LUN    ;新建二进制文件
       writeu,lun,result                     ;将结果写入    
       FREE_LUN,lun                          ;释放
       ;写头文件
       ENVI_SETUP_HEAD, fname=output,     $
        interleave=0,data_type=1, $
        NS=NS,NB=1,NL=NL,$
         /write, /open, r_fid = r_fid
         end
      
     envi_display_bands, r_fid, 0;显示该文件(只有一个波段)
     
    END
    
    ;写完主程序之后要进行保存,$
    ;在控制台中
    ;save,filename="E:Program FilesExelisENVI51classicsave_addenvi_canny.sav", /routines
    
    image
    
    解决方案:
    在IDL的帮助中搜素resolve_all,通过语法
    RESOLVE_ALL [, CLASS=string] [, /CONTINUE_ON_ERROR] [, /QUIET] [, RESOLVE_EITHER=string] [, RESOLVE_FUNCTION=string] [, RESOLVE_PROCEDURE=string] [, SKIP_ROUTINES=string] [, UNRESOLVED=variable]
    在控制台中输入resolve_all,/CONTINUE_ON_ERROR,SKIP_ROUTINES="envi"回车,在save
    save,filename="E:Program FilesExelisENVI51classicsave_addenvi_canny.sav", /routines
  • 相关阅读:
    使用 EasyBCD 安装Ubuntu 14.04 Error 15: file not found错误的解决方法
    浅谈程序猿的职业规划,看你如何决定自己的未来吧。
    [转载]DOS循环:bat/批处理for命令详解 (史上虽详尽的总结和说明~~)
    bat 批处理 字符串 截取
    window上使用GIT的个人经验(入门级)
    Android 访问 wcf
    解决 MyEclipse 10 中 JSp页面 “return false” 报错问题
    微信公共平台(码农在努力)
    Spring Cloud 中使用 Zipkin 追踪服务
    Spring Cloud Config 分布式配置中心
  • 原文地址:https://www.cnblogs.com/shangguanjinwen/p/4262929.html
Copyright © 2011-2022 走看看