AE IRasterCursor 改变栅格图层像素值

刚刚说的是获取像素值。如果要进一步改变像素值的话,需要用到IRasterEdit接口的Write方法。Write方法的参数有两个,一个是在栅格图像中的左上角位置(行列值不是坐标值),另一个就是获取像素值时提到的PixelBlock.
执行完Write方法后要对实现IRasterEdit接口的对象进行释放。


 1 public void ChangePixelValue(double xMax, double xMin, double yMax, double yMin,double[,] PixelChanged)
2 {
3     IRaster pRaster = thisRasterLayer.Raster;
4     IRaster2 pRaster2 = pRaster as IRaster2;       
5       
6     //地图坐标转换为图中行列值
7     rowMax = pRaster2.ToPixelRow(yMin);
8     rowMin = pRaster2.ToPixelRow(yMax);
9     columnMin = pRaster2.ToPixelColumn(xMin);
10     columnMax = pRaster2.ToPixelColumn(xMax);
11       
12     int Height = rowMax - rowMin + 1;
13     int Width = columnMax - columnMin + 1;
14       
15     //按照需要的大小建立一个空的PixelBlock3
16     IPnt blocksize = new PntClass();
17     blocksize.SetCoords(Width, Height);
18       
19     IPixelBlock3 pPixelBlock3 = pRaster.CreatePixelBlock(blocksize) as IPixelBlock3;
20       
21     System.Array pixels = (System.Array)pPixelBlock3.get_PixelData(0);
22       
23     //为新建的PixelBlock赋值
24     try
25     {
26         for (int i = 0; i < Height; i++)
27         {
28             for (int j = 0; j < Width; j++)
29             {
30                 pixels.SetValue(Convert.ToByte(PixelChanged[i,j]), j, i);
31             }
32         }
33     }
34     catch (Exception ex)
35     {
36         MessageBox.Show(ex.Message);
37     }
38       
39     //把像素值赋予新建的PixelBlock3
40     pPixelBlock3.set_PixelData(0, pixels);
41       
42     //PixelBlock3应在的位置
43     blocksize.SetCoords(columnMin, rowMin);
44       
45     //改变的像素值写入图层
46     IRasterEdit pRasterEdit = pRaster as IRasterEdit;
47     pRasterEdit.Write(blocksize, (IPixelBlock)pPixelBlock3);
48     pRasterEdit.Refresh();
49       
50     System.Runtime.InteropServices.Marshal.ReleaseComObject(pRasterEdit);    
51 }

修改过的图层需要保存,不然重新加载时像素值还是没有修改过。


1 //要保存的图层;
2 IRasterLayer pRasterLayer = axMapControl1.get_Layer(0) as IRasterLayer;  
3 IRaster pRaster = pRasterLayer.Raster;
4 IRaster2 pRaster2 = pRaster as IRaster2;
5     
6 ISaveAs pSaveAs = pRaster2 as ISaveAs;
7 pSaveAs.SaveAs(@"F:\Work\DEM高程矩阵\DEM高程矩阵\bin\Debug\渲染图层2.tif", null, "TIFF");

文章地址:http://hi.baidu.com/fzoxeoomwvabkqe/item/6f92b02b30d59859469962e7

AE IRasterCursor 改变栅格图层像素值,布布扣,bubuko.com

时间: 2024-12-29 10:24:42

AE IRasterCursor 改变栅格图层像素值的相关文章

AE IRasterCursor 获取栅格图层像素值

在编写使用栅格图层的代码时,常常要获取栅格图层的像素值(PixelValue).如果想获取某一点的像素值,可以使用IRaster2中的getPixelValue方法.但如果想要获得的是图层中的某一块甚至整个图层,那么用getPixelValue方法就太过缓慢了. 如果利用IRasterCursor.IPixelBlock3接口,从内存入手,速度就会加快很多.说一下我对他们的理解.首先应用IRaster2中的CreateCursorEx方法实现一个IRasterCursor接口.根据传入的参数,系

(八)WebGIS中栅格图层的设计

1.    前言 我们在上一章里了解到WebGIS中栅格图层的本质——地图图片.而从之前的第二章到第五章,我们详细的介绍了地图图片的获取原理和方法.所以在设计栅格图层前,我们已经知道了栅格图层中数据是如何获得的,剩下的便是怎样将这个过程用一种符合面向对象的设计原则来进行实现. 2.栅格数据获得的流程 这里我再次将栅格数据获得的流程描述一遍: 首先,得到屏幕范围内的地图四角坐标,根据此四角坐标算出屏幕范围内地图最靠近的地图级别,以及此时瓦片的行号范围以及列号范围,然后按照行号和列号拼接出瓦片请求,

(七)WebGIS中的栅格图层和矢量图层的显示原理

1.何为栅格数据,何为矢量数据? 在GIS中,对于数据格式的分类,我们一般会将其分为栅格数据和矢量数据两种类型.栅格数据是将空间看做离散的像元,由二维数组或者其他数据组织方式来进行表达.矢量数据恰恰相反,它将空间看成是连续的,用要素(点.线.面)来进行表达. 我们把栅格数据和矢量数据的特点归纳如下: (1)栅格数据是离散的,矢量数据是连续的.所以栅格数据多用二维数组(行.列)的方式组织.而矢量数据可以理解为一种向量,它用平面坐标(X.Y)的有序几何来组织. (2)栅格数据的最小单位是像素,矢量数

ArcGIS for Android地图上实际距离与对应的屏幕像素值计算

/** * 将实际地理距离转换为屏幕像素值 * * @param distance * 实际距离,单位为米 * @param currScale * 当前地图尺寸 * @param context * @return */ public static double metreToScreenPixel(double distance, double currScale, Context context) { float dpi = context.getResources().getDispla

DICOM图像像素值(灰度值)转换为CT值

CT值的单位是Hounsfield,简称为Hu,范围是-1024-3071.用于衡量人体组织对X射线的吸收率,设定水的吸收率为0Hu. 在DICOM图像读取的过程中,我们会发现图像的像素值有可能不是这个范围,通常是0-4096,这是我们常见到的像素值或者灰度值,这就需要我们在图像像素值(灰度值)转换为CT值. 首先,需要读取两个DICOM Tag信息,(0028|1052):rescale intercept和(0028|1053):rescale slope. 然后通过公式: Hu = pix

ArcGis Engine 矢量图层和栅格图层的加载

//此处为矢量图层的加载方法,由于图层本身是已经制作好了的MXD类工程文件,所以直接采用MXD的加载方式 if (axMapControl1.CheckMxFile(shpFile))//判断是否为MXD文件 { IArray pArry; pArry = axMapControl1.ReadMxMaps(shpFile, Type.Missing); IMap pMap; for (int i = 0; i < pArry.Count; i++) { pMap = pArry.get_Elem

组件之间的通信(子组件-改变父组件的值)

在vue中,组件之间的通信,是不建议子组件改变父组件的值,因为一个父组件有可能会有很多子组件,改来改去会很难管理(别人都这样说,我信) 试试: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script src='../vue.js'> </script> </head> <bod

c#图像处理入门(-bitmap类和图像像素值获取方法)

c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下: 1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色. 2. PixelFormat属性:返回图像的像素格式. 3. Palette属性:获取和设置图像所使用的颜色调色板. 4. Height Width属性:返回图像的高度和

jQuery改变label/input的值,改变class,改变img的src

jQuery改变label/input的值,改变class,改变img的src jQuery改变label的值: $('#aID').text("New Value"); jQuery改变input的值: $('#aID').val("New Value"); jQuery改变class属性: $('#aID').attr('class', "newClass");//设置class $('#aID').addClass('newClass');