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 开发手册

如果本文对你有所帮助,欢迎对我们团队进行打赏捐助,让我们在传播3S的路上可以走得更远。
赞赏支持
微信捐助麻辣GIS 支付宝捐助麻辣GIS

麻辣GIS-Sailor
作者:
GIS爱好者,学GIS,更爱玩GIS。

如您有疑问,可在文末留言,或到QQ群中提问。

本站QQ群(一):291616564 麻辣GIS

本站QQ群(二):166408035 麻辣GIS(二)

本站QQ群(三):627853279 麻辣GIS(三)

微信公众号:malagis,扫描右边二维码直接关注。

发表评论