ENVI-IDL的MATH_DOIT和CF_DOIT函数(对FID和POS参数的讨论)
Posted zgl-gis
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ENVI-IDL的MATH_DOIT和CF_DOIT函数(对FID和POS参数的讨论)相关的知识,希望对你有一定的参考价值。
MATH_DOIT相当于ENVI的band math,可以完成各种波段运算。参数比较简单,EXP为运算公式的字符串,其他参数均为常见参数。
CF_DOIT可以将已有的文件保存为ENVI格式文件,相当于ENVI菜单下FILE-->SAVE AS-->ENVI STANDARD命令。没有特别生僻的参数。
但这两个函数的FID和POS参数与平时的运用有所不同,有必要讨论一下,举一反三。
FID:
MATH_DOIT函数的FID实际上是一个fid的数组,在运算band位于不同文件时,用于指向该band所在的文件。当所有运算波段处于同一文件下时,亦可以写作FID=FID,即只有本文件的FILE ID。
CF_DOIT函数的FID意义同上,表示需要处理的所有FILE ID,FID的排列顺序为最后生成新文件内各文件的排列顺序。
POS:
MATH_DOIT函数的POS数组应当与EXP公式中的BAND数目和顺序相对应,例如EXP=B1+B2+B3,则POS=[0,1,2].FID=[FID1,FID2,FID3],如果是同一文件的波段,则FID=[FID,FID,FID]或FID=FID.
CF_DOIT的POS参数有所不同,需要特别注意。由于CF_DOIT在保存文件时不仅能选择文件的数目和顺序,而且还能选择保存的波段数目和波段顺序,所以POS实际上是一个二维数组,POS=[NS,NL]。其中NS表示各个文件的合成波段数目和顺序,NL表示文件的数目。例如:
POS=[[0,1],[1,2],[0,2]],意思是一共合成3个文件,按照从上到下的顺序,第一个文件合成0和1波段,第二个文件合成1和2波段,第三个文件合成0和2波段。
总结起来,这两个涉及到文件和波段数目和顺序的函数在使用时要注意FILE ID的排列和波段顺序、数目的排列,不然会得到莫名其妙的结果(空图像)。
以上是关于ENVI-IDL的MATH_DOIT和CF_DOIT函数(对FID和POS参数的讨论)的主要内容,如果未能解决你的问题,请参考以下文章
malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理