【IDL】编写自定义Task需要注意的问题
2017-08-16 01:22
393 查看
测试代码如下,一个很简单的例子
1.注意参数名称
IDL参数传递的比较奇葩,在自定义Task里是将左边接受到的值传给右边,相当于多了一层缓冲,所以有些参数是可选的,如INPUT_NUMBER参数。有些程序喜欢将参数写成a = a ,b=b,c=c这种左右都一样的,其实两边含义大有区别,左边的代表的为参数名,右边为被赋值的变量,所以为了程序的可读性最好名字不要起一样的
2.关于OUTPUT_RASTER参数
OUTPUT_RASTER参数是与OUTPUT_URI参数相辅相成的,前者是栅格对象,后者是输出文件路径,如果在参数列表中有多个ENVIURI类型的参数,那么OUTPUT_RASTER参数就会出错
3.调用自定义Task
调用自定义Task,动态UI构建界面,DataColl.Add,Task.OUTPUT_RASTER调用我们刚刚写的.OUTPUT_RASTER参数,当然这里也可以改写,让自定义Task有多个URI,假设前面的自定义Task中没有.OUTPUT_RASTER参数,代码如下:
实际效果是一样的,但理解起来不太容易。
PRO testTask,INPUT_RASTER = Raster,INPUT_NUMBER = Number,$ OUTPUT_RASTER = outRaster,OUTPUT_URI = outputURI ;=========程序==== COMPILE_IDL ,IDL2 e =envi(/CURRENT) IF ~KETWORD_SET(INPUT_NUMBER) THEN Number = 2 data_raster = e.opendata(Raster) outdata = data_raster * Number outRaser = ENVIRASTER(outdata,URI=outputURI) outRaster.SAVE END
1.注意参数名称
IDL参数传递的比较奇葩,在自定义Task里是将左边接受到的值传给右边,相当于多了一层缓冲,所以有些参数是可选的,如INPUT_NUMBER参数。有些程序喜欢将参数写成a = a ,b=b,c=c这种左右都一样的,其实两边含义大有区别,左边的代表的为参数名,右边为被赋值的变量,所以为了程序的可读性最好名字不要起一样的
2.关于OUTPUT_RASTER参数
OUTPUT_RASTER参数是与OUTPUT_URI参数相辅相成的,前者是栅格对象,后者是输出文件路径,如果在参数列表中有多个ENVIURI类型的参数,那么OUTPUT_RASTER参数就会出错
3.调用自定义Task
PRO runtestTask_UI COMPILE_OPT IDL2 e=ENVI(/CURRENT) ;执行自定义Task Task=ENVITASK('testTask') ;动态UI填写参数 dynamicUI =e.UI.SelectTaskParameters(Task) IF dynamicUI NE 'OK' THEN RETURN ;执行 Task.execute ;Data Manager中打开分类数据 DataColl = e.DATA DataColl.Add,Task.OUTPUT_RASTER ;载入图层 view = e.GetView() layer = view.CreateLayer(calssRaster) view.Zoom, /FULL_EXTENT END
调用自定义Task,动态UI构建界面,DataColl.Add,Task.OUTPUT_RASTER调用我们刚刚写的.OUTPUT_RASTER参数,当然这里也可以改写,让自定义Task有多个URI,假设前面的自定义Task中没有.OUTPUT_RASTER参数,代码如下:
outRaster = e.openRaster(Task.OUTPUT_URI) DataColl = e.DATA DataColl.Add,outRaster
实际效果是一样的,但理解起来不太容易。
相关文章推荐
- 用编译原理编写计算器程序中需要注意的问题
- 初入nodejs需要注意的问题---自定义模块
- 自定义View需要注意的问题
- 自定义Panel中添加依赖属性需要注意的问题
- 编写基于outlook显示的html邮件需要注意的问题
- ScrollView子View为自定义View时需要注意的几点问题
- 编写量化策略需要注意的几个细节问题
- 自定义Panel中添加依赖属性需要注意的问题
- 编写Ruby代码注释时需要注意的一些问题
- sql查询语句性能问题及编写时需要注意的地方
- 在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题
- 【转】自定义排序函数实现时需要注意的问题
- 编写3dmax插件需要注意的几个问题
- ScrollView子View为自定义View时需要注意的几点问题
- 自定义类型作为HashMap或HashTable的key需要注意哪些问题
- 编写多线程java程序时需要注意哪些问题?(来自于effective java se)
- 在IDEA中编写mybatis,需要注意的问题
- Editplus编写java程序需要注意的问题。
- 自定义ruby异常时需要注意的一个问题
- c#程序调用c++编写dll需要注意问题