Arcgis Engine中获取栅格数据问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arcgis Engine中获取栅格数据问题相关的知识,希望对你有一定的参考价值。

本人新手,我写的方法中获取的栅格值貌似有问题,求大神解答

方法如下,麻烦看下哪写错了:
public IPoint getValuetoPoint(IPoint pPoint, IRasterLayer targetRasterLayer)

IPoint point = pPoint;

IEnvelope pEnvelope = targetRasterLayer.AreaOfInterest;

IRaster raster = targetRasterLayer.Raster;
IRasterProps rasterProps = raster as IRasterProps;

IPnt pntSize = new PntClass();
pntSize.SetCoords(rasterProps.MeanCellSize().X, rasterProps.MeanCellSize().Y);
IPixelBlock pixelBlock = raster.CreatePixelBlock(pntSize);

IPnt pnt = new PntClass();

double startX = pEnvelope.XMin, startY = pEnvelope.YMin;
double x = Math.Abs(point.X - startX) / rasterProps.MeanCellSize().X + 1;
double y = Math.Abs(point.Y - startY) / rasterProps.MeanCellSize().Y + 1;

pnt.SetCoords(x, y);
raster.Read(pnt, pixelBlock);
if (pixelBlock != null)

object obj = pixelBlock.GetVal(0, 0, 0);
point.M = Convert.ToInt32(obj);


return point;

参考技术A 1、栅格数据的存储类型

栅格数据一般可以存储为ESRI GRID(由一系列文件组成),TIFF格式(包括一个TIF文件和一个AUX文件),IMAGINE Image格式 在AE中一般调用ISaveAs接口来保存栅格数据

2、栅格数据集和栅格编目的区别

一个栅格数据集由一个或者多个波段(RasterBand)的数据组成,一个波段就是一个数据矩阵。对于格网数据(DEM数据)和单波段的影像数据,表现为仅仅只有一个波段数据的栅格数据集,而对于多光谱影像数据则表现为具有多个波段的栅格数据集

栅格编目(RasterCatalog)用于显示某个研究区域内各种相邻的栅格数据,这些相邻的栅格数据没有经过拼接处理合成一副大的影像图

3、IRasterWorkspaceEx与IRasterWorkspace ,IRsterWorkspace2的区别

1).IRasteWorkspaceEx接口主要是用来读取GeoDatabase中的栅格数据集和栅格编目

2) . IRasterWorkspace ,IRsterWorkspace2主要是用来读取以文件格式存储在本地的栅格数据

4、加载栅格数据(以存储在本地的栅格数据文件为例)

1.直接用IRasterLayer接口打开一个栅格文件并加载到地图控件

IRasterLayer rasterLayer = new RasterLayerClass();
rasterLayer.CreateFromFilePath(fileName); // fileName指存本地的栅格文件路径
axMapControl1.AddLayer(rasterLayer, 0);

ArcGIS Engine开发基础总结

  • 标准Engine功能

地图浏览    地图制作 数据查询 数据分析 及 所有的开发控件 —MapControl, PageLayout, Toolbar, TOC, ArcReader 对所有矢量和栅格数据源的读权限 对Shapefile和pGDB的写权限 读/写 MXD文件

  • ArcGIS Engine类库

  1. System           System类库是ArcGIS系统结构中最底层的类库。System类库包含了构成为ArcGIS的其他类库提供服务的组件。

  2. SystemUI       包含用户界面组件接口定义。如:Icommand、Itool和IToolControl接口。开发者使用这些接口来扩展UI组件。

  3. Geometry       处理存储在要素类中的要素形状。如:Point、MultiPoint、Polyline、Polygon等。 存储构成几何要素的子要素。如:Segement、Path、Ring等。 存储几何要素的空间参考对象。包括:投影坐标和地理坐标系统等。

  4. Display           用于控制地图显示。 包含用于显示GIS数据的对象。 包含符号、颜色等用来控制显示的对象。 包含交互操作时提供给用户显示回馈的对象,如MoveEnvelopeFeedback。

  5. Carto            包含操作2D地图的对象。 支持2D地图的创建和显示。 提供Map和PageLayout等基础对象。 提供MapDocument对象来操作地图文档

  • ArcGIS Engine开发控件

  1. 制图控件 MapControl、PageLayoutControl等

  2. 框架控件 TOCControl、ToolbarControl等

  3. 三维控件 GlobeControl、SceneControl等

  • MapControl对应于ArcMap Desktop 应用中的“数据” 。 MapControl控件中封装了Map对象,用于管理控件的外观、显示属性和地图属性、管理、添加数据图层,装载地图文档,显示、绘制跟踪图层。

  • 它实现的主要接口有IMapControlDefault、IMapControl2、 IMapControl3、 IMapControlEvents。

  • PageLayoutControl控件 PageLayoutControl控件主要用于页面布局与制图。对应于ArcMap Desktop 应用中的“页面布局”视图,该控件封装了PageLayout类。 PageLayoutControl控件不能添加地图图层或地理数据,必须通过MXD文件来加载需要处理的数据。

  • PageLayoutControl控件主要实现 IPageLayoutControlDefault、 IPageLayoutControl、 IPageLayoutControl2、 IPageLayoutControlevents等接口。

  •  TOCControl   用来管理图层的可见性和标签的编辑。 TOCControl需要一个“伙伴控件”一起工作, “伙伴控件”可以是一个MapControl、 PageLayoutControl、ReaderControl、 SceneControl或者GlobeControl。 “伙伴控件”能够在设计的时候通过TOCControl的属性页设置。或者在程序运行中通过SetBuddyControl方法来设置。 “伙伴控件”都实现了ITOCBuddy接口。 TOCControl利用“伙伴控件”来显示交互性的树结构目录,包括“伙伴控件”的地图、图层、符号等内容。

  • ToolbarControl
  • ToolbarControl需要与一个“伙伴控件”一起工作。“伙伴控件”可以是一个MapControl,PageLayoutControl,SceneControl或者是GlobeControl。 “伙伴控件”能够在设计的时候通过ToolbarControl的属性页设置。 ToolbarControl实现了ARCGIS中的所有功能,如果想使这些功能进一步扩展,难度很大

以上是关于Arcgis Engine中获取栅格数据问题的主要内容,如果未能解决你的问题,请参考以下文章

Arcgis Engine矢量裁剪栅格,调用Mask工具相关代码

ARCGIS图像识别(矢量化)-栅格转面实际应用

gis能切片栅格导出么

关于重采样后栅格数据行列数不一致的问题

arcgis中镶嵌至新栅格,栅格数据大比例尺显示不全

在ArcGIS中如何对栅格数据进行合并和剪切