打开栅格目录中的一个数据 创建栅格数据集

打开栅格目录中的一个数据
 
              IRasterDataset GetRasterCatalogItem(IRasterCatalog pCatalog, int pObjectID)
        {
            //栅格目录继承了IFeatureClass
            IFeatureClass pFeatureClass = (IFeatureClass)pCatalog;
            IRasterCatalogItem pRasterCatalogItem =
(IRasterCatalogItem)pFeatureClass.GetFeature(pObjectID);
            return pRasterCatalogItem.RasterDataset;
        }

创建栅格数据集
 
              public IRasterDataset CreateRasterDataset(string pRasterFolderPath, string
pFileName,string pRasterType,ISpatialReference pSpr )
              {
                  
                      IRasterWorkspace2 pRasterWs = GetRasterWorkspace(pRasterFolderPath) as
IRasterWorkspace2;
                      
                      
                      IPoint pPoint = new PointClass();
                      pPoint.PutCoords(15.0, 15.0); //设置想,x,y坐标
                      
                      int pWidth = 300; 
                      int pHeight = 300; 
                      double xCell = 30; 
                      double yCell = 30; 
                      int NumBand = 1;
 
                      IRasterDataset pRasterDataset = pRasterWs.CreateRasterDataset(pFileName,
pRasterType, pPoint, pWidth, pHeight, xCell, yCell, NumBand, rstPixelType.PT_UCHAR, pSpr,true); 
        IRasterBandCollection pRasterBands =(IRasterBandCollection)pRasterDataset;

         IRasterBand pRasterBand = pRasterBands.Item(0);
        IRasterProps  pRasterProps = (IRasterProps)pRasterBand;
       
        pRasterProps.NoDataValue = 255;
        
        IRaster pRaster = pRasterDataset.CreateDefaultRaster();
     
        IPnt pPnt = new PntClass();
        pPnt.SetCoords(30, 30);
        IRaster2 pRaster2 = pRaster as IRaster2;
        IRasterEdit pRasterEdit = (IRasterEdit)pRaster2;
        IRasterCursor pRasterCursor = pRaster2.CreateCursorEx(pPnt);
        do
        {
            IPixelBlock3 pPixelblock = pRasterCursor.PixelBlock as IPixelBlock3;
            System.Array pixels = (System.Array)pPixelblock.get_PixelData(0);
            for (int i = 0; i < pPixelblock.Width; i++)
                for (int j = 0; j < pPixelblock.Height; j++)
                    if (i == j)
                        pixels.SetValue(Convert.ToByte(255), i, j);
                    else
                        pixels.SetValue(Convert.ToByte((i * j + 30) / 255), i, j);
            pPixelblock.set_PixelData(0, (System.Array)pixels);

      IPnt pUpperLeft = pRasterCursor.TopLeft;
      pRasterEdit.Write(pUpperLeft, (IPixelBlock)pPixelblock);
  } while (pRasterCursor.Next());
  System.Runtime.InteropServices.Marshal.ReleaseComObject(pRasterEdit);
  
  return pRasterDataset;

}

转载于:https://www.cnblogs.com/qiushuixizhao/p/3243334.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值