AE IRasterCursor 改变栅格图层像素值
2014-04-30 09:20
337 查看
刚刚说的是获取像素值。如果要进一步改变像素值的话,需要用到IRasterEdit接口的Write方法。Write方法的参数有两个,一个是在栅格图像中的左上角位置(行列值不是坐标值),另一个就是获取像素值时提到的PixelBlock. 执行完Write方法后要对实现IRasterEdit接口的对象进行释放。
修改过的图层需要保存,不然重新加载时像素值还是没有修改过。
文章地址:http://hi.baidu.com/fzoxeoomwvabkqe/item/6f92b02b30d59859469962e7
public void ChangePixelValue(double xMax, double xMin, double yMax, double yMin,double[,] PixelChanged) { IRaster pRaster = thisRasterLayer.Raster; IRaster2 pRaster2 = pRaster as IRaster2; //地图坐标转换为图中行列值 rowMax = pRaster2.ToPixelRow(yMin); rowMin = pRaster2.ToPixelRow(yMax); columnMin = pRaster2.ToPixelColumn(xMin); columnMax = pRaster2.ToPixelColumn(xMax); int Height = rowMax - rowMin + 1; int Width = columnMax - columnMin + 1; //按照需要的大小建立一个空的PixelBlock3 IPnt blocksize = new PntClass(); blocksize.SetCoords(Width, Height); IPixelBlock3 pPixelBlock3 = pRaster.CreatePixelBlock(blocksize) as IPixelBlock3; System.Array pixels = (System.Array)pPixelBlock3.get_PixelData(0); //为新建的PixelBlock赋值 try { for (int i = 0; i < Height; i++) { for (int j = 0; j < Width; j++) { pixels.SetValue(Convert.ToByte(PixelChanged[i,j]), j, i); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } //把像素值赋予新建的PixelBlock3 pPixelBlock3.set_PixelData(0, pixels); //PixelBlock3应在的位置 blocksize.SetCoords(columnMin, rowMin); //改变的像素值写入图层 IRasterEdit pRasterEdit = pRaster as IRasterEdit; pRasterEdit.Write(blocksize, (IPixelBlock)pPixelBlock3); pRasterEdit.Refresh(); System.Runtime.InteropServices.Marshal.ReleaseComObject(pRasterEdit); }
修改过的图层需要保存,不然重新加载时像素值还是没有修改过。
//要保存的图层; IRasterLayer pRasterLayer = axMapControl1.get_Layer(0) as IRasterLayer; IRaster pRaster = pRasterLayer.Raster; IRaster2 pRaster2 = pRaster as IRaster2; ISaveAs pSaveAs = pRaster2 as ISaveAs; pSaveAs.SaveAs(@"F:\Work\DEM高程矩阵\DEM高程矩阵\bin\Debug\渲染图层2.tif", null, "TIFF");
文章地址:http://hi.baidu.com/fzoxeoomwvabkqe/item/6f92b02b30d59859469962e7
相关文章推荐
- AE IRasterCursor 改变栅格图层像素值
- AE IRasterCursor 获取栅格图层像素值
- AE构建获取栅格图层属性表(ITable)
- 显示栅格图层和矢量图层的属性表(AE开发)
- 显示栅格图层和矢量图层的属性表(AE开发)
- 改变图层的透明度(AE+C#)
- AE开发中栅格图层实现分级渲染
- AE栅格分类渲染问题解决
- AE_复制当前图层
- AE中图层刷新
- C# +AE加载shp、栅格、地图文档数据
- AE内存图层
- 安卓智能地图开发与实施二十:栅格图层展示 - ArcGIS Runtime SDK for Android(Version 100.1.0)
- easyui datagrid 浏览器像素及改变表、列宽问题
- AE+C# 给图层添加字段
- 检测鼠标指针的改变(使用GetCursorInfo API函数)
- 学习OpenCV(四) 改变图像的对比度和亮度——像素变换
- 关于c# 调用调用api改变custom cursor的方法。
- C#+AE 展开/收缩图层的图例
- [转载]AE控制图层中要素可见状态的几种方法