代码
public static ILayer RasterToLayer(string sFullName)
{
ILayer pLayer = null;
try
{
var sFolder = Path.GetDirectoryName(sFullName);
var sName = Path.GetFileName(sFullName);
var pRasterWorkspace = new RasterWorkspaceFactory().OpenFromFile(sFolder, 0) as IRasterWorkspace;
var pRasterDataset = pRasterWorkspace.OpenRasterDataset(sName);
if ((pRasterDataset is IRasterPyramid3 pRasterPyramid) && (!pRasterPyramid.Present))
{
pRasterPyramid.Create(); //自动创建金字塔(耗时较长)
}
var pRaster = pRasterDataset.CreateDefaultRaster();
((IRasterProps)(pRaster as IRasterBandCollection).Item(0)).NoDataValue = 0; //设置黑色无影像部分为白色背景
var pRasterLayer = new RasterLayer();
pRasterLayer.CreateFromRaster(pRaster);
pLayer = pRasterLayer as ILayer; //转换为ILayer
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return pLayer;
}
补充
创建金字塔可以加快数据加载速度。如未创建,本功能将在首次调用时自动创建,但速度较慢。可考虑将其封装成脚本调用。