ENVI自带WIDGET自由组合使用方法

ENVI提供了一些自带WIDGET供用户调用,在二次开发中可以节省大量时间。可以通过ENVI帮助查看WIDGET组件使用方法和功能说明,如图1所示,为ENVI自带组件列表。

ENVI自带组件在单个使用时非常方便,可以利用auto_wid_mng获取组件的输入信息。但是如果我们需要在自己编写的界面中使用ENVI自带组件,或同时使用两个甚至多个自带组件时利用auto_wid_mng就不能方便获取每个组件的输入信息了。

1 ENVI自带组件列表

下面通过一个示例介绍如何自由组合使用ENVI自带组件。以widget_mapwidget_outfm为例,创建如图2所示的界面,并点击OK按钮时获取每个组件的输入信息。 

2 同时使用2ENVI自带组件

代码如下:

PRO BASE_EVENT, ev

 

  WIDGET_CONTROL, ev.TOP, get_uvalue = pState

 

  outf = pState.OUTF

  mapw = pState.MAPW

 

  ;响应事件

  CASE WIDGET_INFO(ev.ID, /uname) OF

 

   'ok': BEGIN     

     ;获取信息

     WIDGET_CONTROL, mapw, get_value = mapw_value

     PRINT, '获取的投影坐标信息******************************************'

     HELP, mapw_value

     

     WIDGET_CONTROL, outf, get_value = outf_value

     PRINT, '获取的输出路径信息******************************************'

     HELP, outf_value

   END

   

   ELSE:

  ENDCASE

END

 

 

PRO TEST_ENVI_WIDGET

  ;

  COMPILE_OPT idl2

  ENVI, /restore_base_save_files

  ENVI_BATCH_INIT

 

  ;创建顶级Base

  base = WIDGET_BASE(title = 'ENVI Widget', /column) 

  ;创建投影坐标系选择组件

  mapw = WIDGET_MAP(base, /frame) 

  ;创建输出文件选择组件

  outf = WIDGET_OUTFM(base, uvalue='outf', /frame) 

  ;创建按钮

  ok = WIDGET_BUTTON(base, value = 'OK', uname = 'ok')

 

  WIDGET_CONTROL, base, /realize

 

  ;mapwoutf两个组件ID存储在baseuvalue

  pState = {outf:outf, mapw:mapw}

  WIDGET_CONTROL, base, set_uvalue = pState

 

  XMANAGER, 'base', base, /no_block

 

END

 

使用演示:参数设置好之后(如图3所示),点击OK按钮,得到如下结果,利用这些信息便可以进行下一步处理了。

获取的投影坐标信息******************************************

** Structure <188d5c00>, 3 tags, length=224, data length=202, refs=1:

  MAP_X          DOUBLE          111.00000

  MAP_Y          DOUBLE          45.000000

  PROJ           STRUCT   -> ENVI_PROJ_STRUCT Array[1]

获取的输出路径信息******************************************

** Structure <18744090>, 3 tags, length=24, data length=22, refs=1:

  NAME           STRING   'D:\Temp\test_envi_widget.dat'

  IN_MEMORY      LONG                0

COMPRESSION    INT                 0

 

3 参数设置结果

posted @   ENVI-IDL技术殿堂  阅读(201)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示