多波段栅格数据在计算指数时,需要提取各个波段。要注意的是,多波段数据图层的栅格属性只有三个波段,因此提取时需要把整个图层转为IRasterDataset,再通过IrasterBandCollection提取。
以下以landsat tm影像为例进行提取,其他数据提取时要注意波段对应的数量。r1为多波段数据的图层。
IDataLayer dataLayer = r1 as IDataLayer;
IName name = dataLayer.DataSourceName;
IRasterDataset rasterDataset = name.Open() as IRasterDataset;
IRasterLayer greenrl = new RasterLayerClass();
IRasterLayer redrl = new RasterLayerClass();
IRasterLayer nirrl = new RasterLayerClass();
IRasterLayer swirrl = new RasterLayerClass();
IRasterLayer swirr2 = new RasterLayerClass();
greenrl.Name = "green";
redrl.Name = "red";
nirrl.Name = "nir";
swirrl.Name = "swir1";
swirr2.Name = "swir2";
greenrl.CreateFromDataset((IRasterDataset)((IRasterBandCollection)rasterDataset).Item(1));
redrl.CreateFromDataset((IRasterDataset)((IRasterBandCollection)rasterDataset).Item(2));
nirrl.CreateFromDataset((IRasterDataset)((IRasterBandCollection)rasterDataset).Item(3));
swirrl.CreateFromDataset((IRasterDataset)((IRasterBandCollection)rasterDataset).Item(4));
swirr2.CreateFromDataset((IRasterDataset)((IRasterBandCollection)rasterDataset).Item(5));