C#+arcengine修改栅格数据的像元值
2015-02-03 19:33
891 查看
c此文为修改栅格数据的像元值,本人未深入研究,具体可参照arcgis开发帮助文档或者http://blog.sina.com.cn/s/blog_84f7fbbb0101d49w.html,感谢博主
/// <summary>
/// 修改栅格数据像素值
/// </summary>
/// <param name="clipRasterPath">raster路径</param>
public void ChangePixelValue(string clipRasterPath)
{
//得到裁剪后的raster
IRaster raster=GetRaster(clipRasterPath);
IRaster2 raster2 =( IRaster2)raster;
// 指定像素块大小
IPnt pntBlock = new PntClass();
pntBlock.X = 1280;
pntBlock.Y = 1280;
//创建一个光标以给定像素块大小
IRasterCursor rasterCursor = raster2.CreateCursorEx(pntBlock);
//控制像素块级别的编辑操作
IRasterEdit rasterEdit = raster2 as IRasterEdit;
if (rasterEdit.CanEdit())
{
//得到一段光栅带
IRasterBandCollection bandCollection =( IRasterBandCollection)raster;
System.Array pixels;
IPnt pnt = null;
object value;
int bandCount = bandCollection.Count;
//创建像素块
IPixelBlock3 pixelBlock3 = null;
int blockWidth = 0;
int blockHeight = 0;
do
{
pixelBlock3 = rasterCursor.PixelBlock as IPixelBlock3;
blockWidth = pixelBlock3.Width;
blockHeight = pixelBlock3.Height;
for (int k = 0; k < bandCount; k++)
{
//指定平面的像素的数组
pixels = (System.Array)pixelBlock3.get_PixelData(k);
for (int i = 0; i < blockWidth; i++)
{
for (int j = 0; j < blockHeight; j++)
{
value = pixels.GetValue(i, j);
if (Convert.ToInt32(value) == 0)
{
pixels.SetValue(Convert.ToByte(50), i, j);
}
}
}
pixelBlock3.set_PixelData(k, pixels);
}
pnt = rasterCursor.TopLeft;
rasterEdit.Write(pnt, (IPixelBlock)pixelBlock3);
}
while (rasterCursor.Next());
System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterEdit);
}
}
/// <summary>
/// 修改栅格数据像素值
/// </summary>
/// <param name="clipRasterPath">raster路径</param>
public void ChangePixelValue(string clipRasterPath)
{
//得到裁剪后的raster
IRaster raster=GetRaster(clipRasterPath);
IRaster2 raster2 =( IRaster2)raster;
// 指定像素块大小
IPnt pntBlock = new PntClass();
pntBlock.X = 1280;
pntBlock.Y = 1280;
//创建一个光标以给定像素块大小
IRasterCursor rasterCursor = raster2.CreateCursorEx(pntBlock);
//控制像素块级别的编辑操作
IRasterEdit rasterEdit = raster2 as IRasterEdit;
if (rasterEdit.CanEdit())
{
//得到一段光栅带
IRasterBandCollection bandCollection =( IRasterBandCollection)raster;
System.Array pixels;
IPnt pnt = null;
object value;
int bandCount = bandCollection.Count;
//创建像素块
IPixelBlock3 pixelBlock3 = null;
int blockWidth = 0;
int blockHeight = 0;
do
{
pixelBlock3 = rasterCursor.PixelBlock as IPixelBlock3;
blockWidth = pixelBlock3.Width;
blockHeight = pixelBlock3.Height;
for (int k = 0; k < bandCount; k++)
{
//指定平面的像素的数组
pixels = (System.Array)pixelBlock3.get_PixelData(k);
for (int i = 0; i < blockWidth; i++)
{
for (int j = 0; j < blockHeight; j++)
{
value = pixels.GetValue(i, j);
if (Convert.ToInt32(value) == 0)
{
pixels.SetValue(Convert.ToByte(50), i, j);
}
}
}
pixelBlock3.set_PixelData(k, pixels);
}
pnt = rasterCursor.TopLeft;
rasterEdit.Write(pnt, (IPixelBlock)pixelBlock3);
}
while (rasterCursor.Next());
System.Runtime.InteropServices.Marshal.ReleaseComObject(rasterEdit);
}
}
相关文章推荐
- C#+arcengine实现栅格计算器的减功能(可以用来修改栅格数据的高程)
- C#+Arcengine实现GP工具中的extract by mask(提取掩膜),可以实现提取shp范围的栅格数据,可用来获得shp范围的高程
- C#+ArcEngine加载影像Raster栅格数据,并与ArcGIS一样判断是否创建金字塔。
- C#+arcengine获得栅格数据的像素值(高程)
- C#+Arcengine实现GP工具中Data Management Tool》raster》raster processing中的clip功能(矢量数据对栅格数据的裁剪)
- C#+arcengine获得栅格数据
- C#+arcengine获得栅格数据的属性表
- C#+ArcEngine:加载打开Shp矢量数据和栅格数据(VS2010窗体+代码)
- 影像数据的裁切和保存-Arcengine,C#
- c# xml添加 删除 修改数据
- c#下线程访问修改主窗体的界面数据
- C#中datagridview获取当前行并修改数据
- C# WinForm 双击DataGridView修改数据
- (转)arcengine栅格数据使用总结
- c#中怎样在窗体间相互传送数据,且能在修改窗体A的数据时,窗体B能够根据窗体A的数据同时作出反应修改其相应数据
- C#对DataGridView中的数据进行添加、修改、删除操作c#操作datatable
- 基于ArcEngine+C#开发的空间数据管理平台架构设计及功能说明
- c# 在datagridview修改添加数据
- C#中关于在一个数据库同时修改2个数据的语法使用!
- C#对DataGridView中的数据进行添加、修改、删除操作