我今天运行了一下栅格累加和累乘的代码,发现只有前两个栅格相加了,这个结果是不对的,我重新改了一下,发现是没有将绑定band加入到循环当中。
// 从第二个栅格数据集开始进行相加
for (int i = 1; i < rasterDatasets.Count; i++)
{
// 绑定栅格数据
pMapAlgebraOp.BindRaster(baseDataset1, "Ras01");//把这一行加入到循环里就好了
IRasterDataset currentDataset = rasterDatasets[i];
pMapAlgebraOp.BindRaster((IGeoDataset)currentDataset, "Ras02");
// 设置地图代数表达式
string sOut = "[Ras01] " + "+ " + "[Ras02] ";
// 创建栅格运算对象
result = pMapAlgebraOp.Execute(sOut);
// 如果栅格相加操作失败,则返回null
if (result == null)
{
return null;
}
// 将结果更新为新的基础栅格数据集,以便进行下一轮相加
baseDataset1 = result;
}