ArcGIS Engine 10 开发手册(8-5)和栅格空间分析的相关接口(一)
栅格数据结构简单、直观,非常利于计算机操作和处理,是 GIS 常用的空间基础数据格式。 基于栅格 数据的空间分析是 GIS 空间分析的基础,也是 ArcGIS 的空间分析的重要组成部分.在 ArcGIS Engine 中对 栅格数据的空间分析提供了众多的接口,现在我们对常用的进行简单介绍。
IRasterProps
该接口用来描述通用的栅格数据的属性,如行数,列数等.如下面的代码用来获取栅格数据的高和宽
void GetRasterProps(IRaster pRaster)
{
IRasterProps pRasterPros = pRaster as IRasterProps; int pH = pRasterPros.Height;//3973
int pW = pRasterPros.Width;//5629
}
IRasterCursor
IRasterCursor 接口控制着 一个 Raster 的像素块 (Pixblock),IRasterCurosr 接口跟前面介绍的IFeatureCursor 一样具有一个 Next 方法,用于获取下一个 Pixblock,在默认情况下 IRasterCurosr 将整个 Raster 划分为高为 128 的像素块,宽为整个 Raster 的宽, IRasterCurosr 每次读取比前一次低于 128 行的像素块 接口的属性和方法如下:
为了获取 IRasterCursor,我们要用 IRaster::CreateCursor 或者 IRaster2::CreateCursorEx 方法,而这两个 的区别是前者不需要参数,而是系统默认的,而后者是需要我们制定一个大小(IPnt,看清是 IPnt,不是 IPoint)
void GetRasterCursorDefault (IRaster pRaster)
{
IRasterCursor pRasterCursor = pRaster.CreateCursor ();
while (pRasterCursor.Next ())
{
IPixelBlock pPixBlock = pRasterCursor.PixelBlock;
int W = pPixBlock.Width;
//这个W也就是整个栅格数据记得宽度
int H = pPixBlock.Height;
}
}
void GetRasterCursorCustom (IRaster pRaster)
{
IRaster2 pRaster2 = pRaster as IRaster2;
IPnt pPnt = new PntClass ();
pPnt.X = 256;
pPnt.Y = 256;
//IRasterCursor pRasterCursor2 = pRaster2.CreateCursorEx(null);
//参数null的时候,获取PixBlock大小为1*1
while (pRasterCursor2.Next ())
{
IPixelBlock pPixBlock = pRasterCursor2.PixelBlock;
int W = pPixBlock.Width;
int H = pPixBlock.Height;
}
}
IPixelBlock
我们知道栅格数据的容量一般很大,怎么样调高效率呢,如果按照数组的方式一个一个像素的读取, 将整个栅格数据集都塞进二维数组也不是不可以,但是这样占的内存很多。ArcGIS 用数据库管理栅格数据 的时候是按照 block(默认是 128*128)将数据存在数据库中.而在 ArcGIS Engine 中,IPixelBlock 接口就提供了类似的功能。
IRasterLayerExport
IRasterLayerExport 接口提供的栅格数据提取功能有限,只能以矩形范围作为提取范围,如果需要更强 大的栅格数据提供功能,请考虑 IExtractionOp 接口,IExtractionOp 接口提供了多边形,圆,属性,矩形等几种形式作为提取栅格数据.
ArcGIS Engine 10 开发手册全集
ArcGIS Engine 10 开发手册全集: ArcGIS Engine 10 开发手册
相关阅读
声明
1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。
2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。