zoukankan      html  css  js  c++  java
  • C#+AE 用MapControl加载栅格格式文件

    需要引入DataSourceRaster命名空间。

    具体步骤如下:

    ①:利用工作控件工厂抽象类定义接口变量,利用工作空间工厂的子类RatserWorkspaceFactory对应的组件类RasterWorkspaceFactoryClass实例化该接口变量。

    ②:定义并实例化工作空间变量,定义并实例化栅格工作空间变量;

    ③:定义栅格数据集,并利用所选栅格数据文件进行实例化,判断该文件是否具有金字塔,若没有,则创建金字塔,以提高大数据量图像的显示效率;

    ④:定义栅格数据,栅格数据层和数据层,并向MapControl控件中添加数据层数据。

    具体代码如下:

    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);
    
  • 相关阅读:
    vue入门:(方法、侦听器、计算属性)
    vue入门:(模板语法与指令)
    前端资源
    CSS3总结七:变换(transform)
    CSS总结六:动画(一)ransition:过渡、animation:动画、贝塞尔曲线、step值的应用
    设计模式(一):简单工厂
    正则命令积累
    命令模式 & 策略模式 & 模板方法
    抽象工厂:简单游戏角色
    简单工厂模式—>工厂模式
  • 原文地址:https://www.cnblogs.com/arxive/p/5902873.html
Copyright © 2011-2022 走看看