『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS Engine 10 开发手册(8-5)和栅格空间分析的相关接口(一)

ArcGIS Engine 10 开发手册(8-5)和栅格空间分析的相关接口(一)
栅格数据结构简单、直观,非常利于计算机操作和处理,是 GIS 常用的空间基础数据格式。 

    栅格数据结构简单、直观,非常利于计算机操作和处理,是 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 接口提供了多边形,圆,属性,矩形等几种形式作为提取栅格数据.

      京ICP备08100627号-22 京公网安备 11010802030428号