ArcEngine Raster
目录
导读
Raster:栅格数据。是栅格数据在重投影,重采样后内存中存在的短暂的数据表达。对raster的修改并不能够影响现有的数据源。虽然是存储在内存中,但是我们可以通过方法来永久保存这个raster对象。
Raster与RasterDataset的区别
RasterDataset是栅格数据集,一个栅格数据集由一个或者多个波段(RasterBand)的数据组成,一个波段就是一个数据矩阵。对于格网数据(DEM数据)和单波段的影像数据,表现为仅仅只有一个波段数据的栅格数据集,而对于多光谱影像数据则表现为具有多个波段的栅格数据集。
Raster的用法
一. Raster对象的创建
1.1 从现有的RasterLayer 中派生出raster对象
IRasterLayer::Raster;
1.2 从rasterdataset对象中创建raster对象;
IRasterDataset::CreateDefaultRaster 方法;本方法是创建默认的raster,最多具有3个波段band。
IRasterDataset2::CreateRaster 方法;本方法是创建空raster对象的方法,raster属性都是空值0。
IRasterDataset2::CreateFullRaster方法;本方法创建的raster对象,会包含所有的波段band。
二. 添加栅格数据
1.1 根据文件名添加栅格数据
实现思路:
① 获取栅格文件路径
② 新建一个栅格图层并给该图层添加栅格文件数据
③ 把栅格图层添加到MapContol中
private void 添加栅格数据_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog openFile = new OpenFileDialog();
string fileName;
openFile.Title = "添加栅格数据";
openFile.Filter = "IMG图像(*.img)|*.img|TIFF图像(*.tif)|*.tif|所有文件(*.*)|*.*";
openFile.ShowDialog();
fileName = openFile.FileName;
IRasterLayer rasterLayer = new RasterLayerClass();
rasterLayer.CreateFromFilePath(fileName);
axMapControl1.AddLayer(rasterLayer, 0);
}
catch
{
MessageBox.Show("添加栅格数据错误!");
}
}
1.2 从数据集中添加
实现思路:
① 新建并打开一个栅格数据工作空间
② 打开该工作空间下的“jilin”栅格数据集
③ 新建一个栅格图层并给该图层添加栅格数据集
④ 把栅格图层添加到MapContol中
private void 从数据集中添加Raster_Click(object sender, EventArgs e)
{
IWorkspaceFactory rasterWorkspaceFactory = new RasterWorkspaceFactoryClass();
IRasterWorkspace rasterWorkspace = (IRasterWorkspace)rasterWorkspaceFactory.OpenFromFile(@"E:/GisData", 0);
IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset("jilin");
IRasterLayer rasterLayer = new RasterLayerClass();
rasterLayer.CreateFromDataset(rasterDataset);
axMapControl1.AddLayer(rasterLayer, 0);
}
转载自:https://blog.csdn.net/zhumingquanqq/article/details/73901439