选择性翻译自ENVI帮助,加以自我理解。

1.传递文件给ENVI_Raster 方法去在ENVI中打开数据
Raster=e.opneraster(File) or Raster=e.openraster(resource)
通过这两种方法可以打开envi支持的文件

2.raster的下列属性

ENVIRASTER <250912>
 AUXILIARY_SPATIALREF = !NULL
 AUXILIARY_URI = <Array[2]>
 DATA_TYPE = ‘uint’
 INTERLEAVE = ‘bsq’
 METADATA = <ObjHeapVar251621(ENVIRASTERMETADATA)>
 NBANDS = 4
 NCOLUMNS = 1024
 NROWS = 1024
 PYRAMID_EXISTS = 1
 READ_ONLY = 1
 SPATIALREF = <ObjHeapVar251622(ENVISTANDARDRASTERSPATIALREF)>
 TIME = <ObjHeapVar251623(ENVITIME)>
 URI = ‘C:\Program Files\Harris\envixx\data\qb_boulder_msi’


可以通过raster.data_type这样的方式进行查看和调用。需要注意的是,这些属性现在还不能更改只能查看。

3.你可以通过使用关键字来设置一些增加的属性给这个raster对象当你打开他们的时候。例如DATA_IGNORE_VALUE
raster=e.openraster(file,data_ignore_value=0)

4.可以通过GetData来返回一个栅格数据,例:
raster=e.openraster(file)
b1=raster.Getdata(bands=[0],sub_rect=[100,449,550,899])
单独得到了B1波段并进行了裁剪
还有一个关键字就是interleave
如果不设置该关键字,则返回的栅格和原来的栅格会是一种存储顺序。
可以设置为:bil,bip,bsq

5.可通过ENVISubsetRaster 过程去得到光谱子集或者空间子集(裁剪)
例:
Subsetraster=ENVISubsetRaster(Raster,BANDS=[0,1,2])

可利用SUB_RECT关键字去设定空间子集的裁剪范围

6.存进硬盘:例:
Raster=e.openraster(file)
subsetRaster=envisubsetraster(raster,bands=0) 这里是用了虚拟栅格进行了裁剪
subsetRaster.export,o_fn,‘tiff’ 设定输出路径和格式

7.pixel state 记录了每个波段每个像元的状况信息。关键字PIXEL_STATE在GETDATA过程中可以得到这些信息。用Cursor Value工具(就是envi右上角的那个小红色浮标一样的东西)是不能看到pixel state这个像元信息的。它是一种图像的信息,且只能够在编程过程中可见。
它是一个数组,和栅格图像有着相同的维度(我理解就是波段数目一样以及图像的大小一样)。数组里的每一个值都是一个位掩码,去存储每个像元值的独立信息。
1: No Data (Data Ignore Value, NaN, Inf for floating point rasters)
2: Mask
4: Outside of ROI
单独来的话是这三个数代表了这三个含义
但是他们可以组合起来使用:

0 = Good Pixel
 1 = No Data
 2 = Mask
 3 = No Data + Mask
 4 = Outside of ROI
 5 = No Data + Outside of ROI
 6 = Mask + Outside of ROI
 7 = No Data + Mask + Outside of ROI


这个像元信息比较重要:在统计的时候,掩膜掉的值是不能够参与统计的,这就要求我们利用pixel_State去鉴别是不是掩膜掉了,然后从需要的部分进行统计。

新的ENVI的envitask和虚拟栅格,让envi的二次开发难度严重降低。和搭积木没啥两样。但是汉语文章太少,所以我硬着头皮一边翻译帮助一边学习,争取成为envi二次开发的大佬。