需要引入DataSourceRaster命名空间。
具体步骤如下:
①:利用工作控件工厂抽象类定义接口变量,利用工作空间工厂的子类RatserWorkspaceFactory对应的组件类RasterWorkspaceFactoryClass实例化该接口变量。
②:定义并实例化工作空间变量,定义并实例化栅格工作空间变量;
③:定义栅格数据集,并利用所选栅格数据文件进行实例化,判断该文件是否具有金字塔,若没有,则创建金字塔,以提高大数据量图像的显示效率;
④:定义栅格数据,栅格数据层和数据层,并向MapControl控件中添加数据层数据。
具体代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
System.Windows.Forms.OpenFileDialog ofd =
new
OpenFileDialog();
ofd.Filter =
"*.bmp|*.bmp|*.jpg|*.jpg|*.tif|*.tif"
;
ofd.ShowDialog();
string
filePath = ofd.FileName;
//此两个路径和文件名作为参数:
string
pathName = System.IO.Path.GetDirectoryName(filePath);
string
fileName = System.IO.Path.GetFileName(filePath);
//定义工作空间工厂并实例化:
IWorkspaceFactory pWSF;
pWSF =
new
RasterWorkspaceFactoryClass();
IWorkspace pWS;
pWS = pWSF.OpenFromFile(pathName,0);
IRasterWorkspace pRWS;
pRWS = pWS
as
IRasterWorkspace;
IRasterDataset pRasterDataset;
pRasterDataset = pRWS.OpenRasterDataset(fileName);
//影像金字塔的判断与创建
IRasterPyramid pRasPyrmid;
pRasPyrmid = pRasterDataset
as
IRasterPyramid;
if
(pRasPyrmid!=
null
)
{
if
(!(pRasPyrmid.Present))
{
pRasPyrmid.Create();
}
}
IRaster pRaster;
pRaster = pRasterDataset.CreateDefaultRaster();
IRasterLayer pRasterLayer;
pRasterLayer =
new
RasterLayerClass();
pRasterLayer.CreateFromRaster(pRaster);
ILayer pLayer = pRasterLayer
as
ILayer;
axMapControl1.AddLayer(pLayer,0);
|
没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5902873.html,如需转载请自行联系原作者