IRaster、IRasterlayer、IRasterdataset之间的转换

92 篇文章 5 订阅

 

layer = axMapControl.get_Layer(0);//需要的栅格图层

IRasterLayer rasterlayer = layer as IRasterLayer;

IRaster raster = rasterlayer.Raster;

IRasterBandCollection rasterbandcollection = raster as IRasterBandCollection;

IRasterBand rasterband = rasterbandcollection.Item(0);

IRasterDataset rasterdataset = rasterband as IRasterDataset;

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
通过以下代码可以实现基于ArcEngine的栅格数据转换成栅格数据集: ``` // 获取栅格工作空间对象 IRasterWorkspace rasterWorkspace = engineWorkspace.OpenRasterWorkspace(rasterWorkspacePath); // 获取待转换的栅格数据对象 IRaster raster = new RasterClass(); raster.CreateFromFile(inputFilePath); // 构造栅格数据集参数对象 IRasterDatasetEdit2 rasterDataset = rasterWorkspace.CreateRasterDataset(rasterDatasetName, "GRID", extent, cellSize, bandCount, pixelType, null); rasterDataset.SetNoDataValue(0, noDataValue); // 设置无效像元值 // 获取栅格数据集编辑对象 IRasterEdit rasterEdit = (IRasterEdit)rasterDataset.Create(); // 将栅格数据写入到栅格数据集中 IPixelBlock pixelBlock = rasterEdit.CreatePixelBlock(new Envelope() { XMin = 0, YMin = 0, XMax = width, YMax = height }); IRasterProps rasterProps = (IRasterProps)raster; IRasterBandCollection rasterBands = (IRasterBandCollection)raster; for (int i = 0; i < bandCount; i++) { // 获取栅格数据的像元值,并设置到栅格数据集的像元块中 IPnt blockSize = new PntClass() { X = width, Y = height }; rasterBands.Item(i).Read(pixelBlock, null, null); rasterEdit.Write(0, 0, blockSize.X, blockSize.Y, pixelBlock.get_SafeArray(0) as System.Array, null); // 设置栅格数据集的像元块属性 IPixelBlock3 pixelBlock3 = (IPixelBlock3)pixelBlock; rasterEdit.WriteBlock(i, 0, 0, width, height, pixelBlock3.get_PixelDataByRef(0)); rasterEdit.Flush(); } // 完成栅格数据集编辑操作 rasterEdit.Refresh(); rasterEdit.CalculateStatistics(); // 释放资源 System.Runtime.InteropServices.Marshal.ReleaseComObject(pixelBlock); System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterEdit); System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterBands); System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterProps); System.Runtime.InteropServices.Marshal.ReleaseComObject(raster); ``` 以上代码中,需要定义的变量有:`rasterWorkspacePath`(栅格工作空间路径)、`inputFilePath`(待转换的栅格数据路径)、`rasterDatasetName`(栅格数据集名称)、`extent`(栅格数据集范围)、`cellSize`(栅格数据集像元大小)、`bandCount`(栅格数据集波段数)、`pixelType`(栅格数据集像元类型)、`noDataValue`(栅格数据集无效像元值)、`width`(栅格数据集宽度)和`height`(栅格数据集高度)。 根据实际需求进行相应的参数设定即可。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值