raster 是在重投影、重采样后内存中存在的短暂的数据表达。对raster的修改并不能够影响现有的数据源。虽然是存储在内存中,但是我们可以通过方法来永久保存这个raster对象。
如我们可以使用:ISaveAs 接口 或者 IRasterBandCollection 接口 来进行保存 raster对象;
创建raster对象的方法:
1,从现有的RasterLayer 中派生出raster对象IRasterLayer::Raster;
2,从rasterdataset对象中创建raster对象;
IRasterDataset::CreateDefaultRaster 方法;--本方法是创建默认的raster,最多具有3个rasterdataset
中的波段band。
IRasterDataset2::CreateRaster 方法;--本方法是创建空raster对象的方法,所创建的raster属性都是空值0。
IRasterDataset2::CreateFullRaster方法;--本方法创建的raster对象,会包含所有的波段band。
当创建完空的raster对象后,就需要对raster对象设置长、宽 extent 等属性,使用IRasterProps(设置)接口;
使用获取Raster对象的raster属性信息 使用IRasterDefaultProps(只读)接口来查看;
使用IRasterAnalysisProps接口来设置raster分析时的属性;
名词解释:
PixelBlock :字面上理解为“像素块”。顾名思义PixelBlock 是多个像素点组成的块,它的大小可以是整个raster, 当然也可以是raster中的某一个区域(要随定义块的大小而定行数、列数而确定);利用这个PixelBlock 我们可以读取PixelBlock上的所有像素点值(通过SafeArray来获取)。我们也可以理解使用PixelBlock可以从原有的raster或rasterband中截取一个区域,组成新的raster或者rasterband。
Planes : 可以把它理解为是波段。如一个raster有3个波段,那么Planes的数量就是3;
SafeArray: 返回某一波段中pixelBlock的所有像素数组;
GetVal: 而GetVal是可以返回特点波段上,特定行、列上的数值;