zoukankan      html  css  js  c++  java
  • 创建一个栅格图层

    //This example creates a raster dataset with a specified dimension, populates pixel values, and set a NoData value.
    public static IRasterDataset CreateRasterDataset(string Path, string FileName)
    {
        try
        {
            //Create raster workspace. This example also works with any other workspaces that support raster data such as a file geodatabase (FGDB) workspace.
            //Access the workspace and the SDE workspace.
            IRasterWorkspace2 rasterWs = OpenRasterWorkspace(Path);
            //Define the spatial reference of the raster dataset.
            ISpatialReference sr = new UnknownCoordinateSystemClass();
            //Define the origin for the raster dataset, which is the lower left corner of the raster.
            IPoint origin = new PointClass();
            origin.PutCoords(15.0, 15.0);
            //Define the dimension of the raster dataset.
            int width = 100; //This is the width of the raster dataset.
            int height = 100; //This is the height of the raster dataset.
            double xCell = 30; //This is the cell size in x direction.
            double yCell = 30; //This is the cell size in y direction.
            int NumBand = 1; // This is the number of bands the raster dataset contains.
            //Create a raster dataset in grid format.
            IRasterDataset rasterDataset = rasterWs.CreateRasterDataset(FileName, "GRID",
                origin, width, height, xCell, yCell, NumBand, rstPixelType.PT_UCHAR, sr,
                true);
            //Get the raster band.
            IRasterBandCollection rasterBands = (IRasterBandCollection)rasterDataset;
            IRasterBand rasterBand;
            IRasterProps rasterProps;
            rasterBand = rasterBands.Item(0);
            rasterProps = (IRasterProps)rasterBand;
            //Set NoData if necessary. For a multiband image, NoData value needs to be set for each band.
            rasterProps.NoDataValue = 255;
            //Create a raster from the dataset.
            IRaster raster = rasterDataset.CreateDefaultRaster();
    
            //Create a pixel block.
            IPnt blocksize = new PntClass();
            blocksize.SetCoords(width, height);
            IPixelBlock3 pixelblock = raster.CreatePixelBlock(blocksize)as IPixelBlock3;
    
            //Populate some pixel values to the pixel block.
            System.Array pixels;
            pixels = (System.Array)pixelblock.get_PixelData(0);
            for (int i = 0; i < width; i++)
                for (int j = 0; j < height; j++)
                    if (i == j)
                        pixels.SetValue(Convert.ToByte(255), i, j);
                    else
                        pixels.SetValue(Convert.ToByte((i * j) / 255), i, j);
    
            pixelblock.set_PixelData(0, (System.Array)pixels);
    
            //Define the location that the upper left corner of the pixel block is to write.
            IPnt upperLeft = new PntClass();
            upperLeft.SetCoords(0, 0);
    
            //Write the pixel block.
            IRasterEdit rasterEdit = (IRasterEdit)raster;
            rasterEdit.Write(upperLeft, (IPixelBlock)pixelblock);
    
            //Release rasterEdit explicitly.
            System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterEdit);
    
            return rasterDataset;
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.Message);
            return null;
        }
    }
    
    public static IRasterWorkspace2 OpenRasterWorkspace(string PathName)
    {
        //This function opens a raster workspace.
        try
        {
            IWorkspaceFactory workspaceFact = new RasterWorkspaceFactoryClass();
            return workspaceFact.OpenFromFile(PathName, 0)as IRasterWorkspace2;
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex.Message);
            return null;
        }
    }

  • 相关阅读:
    window在文件管理器中打开命令行窗口
    js的事件机制
    ext-css
    HTML防止input回车提交表单
    myeclipse调试代码的时候看不到变量的值和jdk源码重新编译
    MANIFEST.MF 文件内容完全详解
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'dll.msvcrt'
    JNA知识点
    cookie 和session 的区别
    6- js监听输入框值的即时变化onpropertychange、oninput
  • 原文地址:https://www.cnblogs.com/zuiyirenjian/p/1894397.html
Copyright © 2011-2022 走看看