`
devgis
  • 浏览: 138327 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ArcGIS Engine栅格数据使用总结

 
阅读更多

本篇文章来源于http://www.cnblogs.com/linghe/

摘要:ArcGIS Engine栅格数据使用总结,一个栅格数据集由一个或者多个波段(RasterBand)的数据组成,一个波段就是一个数据矩阵。对于格网数据(DEM数据)和单波段的影像数据,表现为仅仅只有一个波段数据的栅格数据集,而对于多光谱影像数据则表现为具有多个波段的栅格数据集。栅格编目(RasterCatalog)用于显示某个研究区域内各种相邻的栅格数据,这些相邻的栅格数据没有经过拼接处理合成一副大的影像图...

两个星期以来一直与栅格数据打交道,对AO的栅格部分应该有了一定的理解,下面是自己的一点体会,希望高手指教:-)

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);

2. 用IRasterDataset接口打开一个栅格数据集

IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactory();

IWorkspace workspace;

workspace = workspaceFactory.OpenFromFile(inPath, 0); //inPath栅格数据存储路径

if (workspace == null)

{

Console.WriteLine("Could not open the workspace.");

return;

}

IRasterWorkspace rastWork = (IRasterWorkspace)workspace;

IRasterDataset rastDataset;

rastDataset= rastWork.OpenRasterDataset(inName);//inName栅格文件名

if (rastDataset == null)

{

Console.WriteLine("Could not open the raster dataset.");

return;

}

5、如何读取栅格数据的属性和遍历栅格数据

栅格数据的属性包括栅格大小,行数,列数,投影信息,栅格范围等等,见下面代码

(假设当前加载的栅格文件栅格值存储方式为:UShort类型)

IRasterProps rasterProps = (IRasterProps)clipRaster;

int dHeight = rasterProps.Height;//当前栅格数据集的行数

int dWidth = rasterProps.Width; //当前栅格数据集的列数

double dX = rasterProps.MeanCellSize().X; //栅格的宽度

double dY = rasterProps.MeanCellSize().Y; //栅格的高度

IEnvelope extent=rasterProps.Extent; //当前栅格数据集的范围

rstPixelType pixelType=rasterProps.PixelType; //当前栅格像素类型

IPnt pntSize = new PntClass();

pntSize.SetCoords(dX, dY);

IPixelBlock pixelBlock = clipRaster.CreatePixelBlock(pntSize);

IPnt pnt = new PntClass();

for (int i = 0; i < dHeight; i++)

for (int j = 0; j < dWidth; j++)

{

pnt.SetCoords(i, j);

clipRaster.Read(pnt, pixelBlock);

if (pixelBlock != null)

{

object obj = pixelBlock.GetVal(0, 0, 0);

MessageBox.Show( Convert.ToUInt32(obj).ToString());

}

}

6、如何提取指定的范围的栅格数据

提取指定范围内的栅格数据通常用两种方法IRasterLayerExport(esriCarto), IExtractionOp, IExtractionOp2 (esriSpatialAnalyst),IRasterLayerExport接口提供的栅格数据提取功能有限,只能以矩形范围作为提取范围,而IExtractionOp接口提供了多边形,圆,属性,矩形等几种形式作为提取栅格数据.

1).IRasterLayerExport接口

IRasterLayerExport rLayerExport = new RasterLayerExportClass();

rLayerExport.RasterLayer = rasterLayer;// rasterLayer指当前加载的栅格图层

rLayerExport.Extent = clipExtent;//clipExtent指提取栅格数据的范围

if (proSpatialRef != null)

rLayerExport.SpatialReference = proSpatialRef;// proSpatialRef当前栅格数据的投影信息

IWorkspaceFactory pWF = new RasterWorkspaceFactoryClass();

try

{

IWorkspace pRasterWorkspace = pWF.OpenFromFile(_folder, 0);// _folder指栅格文件保存路径

IRasterDataset outGeoDataset = rLayerExport.Export(pRasterWorkspace, code, strRasterType);

//调用ISaveAs接口将导出的数据集保存

……………………..

}

Catch(Exception ex)

{

Throw new Argumention(ex.Message);

}

2.IExtractionOp接口(调用此接口前,应该先检查空间许可)

IExtractionOp extraction = new RasterExtractionOpClass();

try

{

IGeoDataset geoDataset = extraction.Rectangle((IGeoDataset)clipRaster, clipExtent, true);

IRaster raster = geoDataset as IRaster;

if (raster != null)

{

IWorkspaceFactory WF = new RasterWorkspaceFactoryClass();

IWorkspace rasterWorkspace = WF.OpenFromFile(_folder, 0);

ISaveAs saveAs = (ISaveAs)raster;

saveAs.SaveAs(“Result.tif”, rasterWorkspace, "TIFF");

}

}

catch (Exception ex)

{

MessageBox..Show(Ex.message);

}

7.栅格数据重采样

栅格数据的重采样主要基于三种方法:最邻近采样(NEAREST),双线性

ILINEAR)和三次卷积采样(CUBIC)。

(1).最邻近采样:它用输入栅格数据中最临近栅格值作为输出值。因此,在重采

样后的输出栅格中的每个栅格值, 都是输入栅格数据中真实存在而未加任何改变的值。这种方法简单易用,计算量小,重采样的速度最快。

(2).双线性采样:此重采样法取待采样点(x,y)点周围四个邻点,在y方向(或X方向)内插两次,再在x方向(或y方向)内插一次,得到(x,y)点的栅格值。

(3).三次卷积采样:这是进一步提高内插精度的一种方法。它的基本思想是增加邻点来获

得最佳插值函数。取待计算点周围相邻的16个点,与双线性采样类似,可先在某一方向上内插,如先在x方向上,每四个值依次内插四次,再根据四次的计算结果在y方上内插,最终得到内插结果

代码示例:采用双线性采样

IRasterGeometryProc rasterGeometryProc = new RasterGeometryProcClass();

rasterGeometryProc.Resample(rstResamplingTypes.RSP_CubicConvolution, newCellSize, clipRaster);

分享到:
评论

相关推荐

    arcengine栅格数据使用总结

    arcengine栅格数据使用总结是arcengine中栅格数据的使用指南,该指南涵盖了栅格数据的存储类型、栅格数据集和栅格编目的区别、IRasterWorkspaceEx与IRasterWorkspace、IRsterWorkspace2的区别、加载栅格数据、读取...

    ArcGIS Engine空间分析Sample

    在样例中,开发者可以通过查看代码来学习如何调用ArcGIS Engine的API进行这些操作,包括数据读取、空间分析函数的使用以及结果的展示。这不仅有助于理解克里金插值的原理,也能掌握ArcGIS Engine在实际项目中的应用...

    arcgis 配准栅格图形

    ArcGIS 配准栅格图形可以将栅格图像转换为矢量数据,使其在 ArcGIS 中可被使用和分析。 5. ArcGIS 配准栅格图形的应用: ArcGIS 配准栅格图形广泛应用于遥感、GIS、地理信息系统、城市规划、环境监测等领域。

    C# ArcEngine 栅格计算器(仿ArcGIS栅格计算器制作)

    区别一:被操作栅格数据集需要手动添加,不能直接从AxMapcontrol中读取tif数据集。 区别二:环境变量设置只保留了输出栅格大小,范围设置需要的话可以仿照栅格大小设置进行添加,eg: gp.SetEnvironmentValue("extent...

    ArcGIS Engine中的数据操作

    最后,我们讨论“ArcGISEngine投影转换与坐标转换研究”。在GIS中,投影是将地球表面的三维空间坐标转换为二维平面的过程,而坐标转换则涉及不同坐标系统的转换。ArcGIS Engine提供了丰富的API支持这些操作。开发者...

    ArcGIS Engine开发:加载MDB中的数据(C#)

    在 ArcGIS Engine 开发中,我们可以使用 AccessWorkspaceFactory 工厂类来加载 MDB 文件中的数据。 下面是加载 MDB 文件中的代码: string filePath="c:ttt..mdb"; AccessWorkspaceFactory fac=new ...

    arcgis Engine开发从入门到精通 第八章_栅格数据

    arcgis Engine开发从入门到精通 第八章_栅格数据

    ArcGIS Engine开发课程设计源码下载

    在这个“ArcGIS Engine开发课程设计源码下载”中,我们很可能会找到一系列的示例代码和项目,帮助学习者深入理解如何使用ArcGIS Engine进行软件开发。 1. **ArcGIS Engine基础** ArcGIS Engine提供了多种组件和...

    C# + ARCGis Engine基础教程

    ARCGIS Engine提供了大量的API和控件,用于处理地图数据、图层管理、地理处理、空间分析等功能。学习ARCGIS Engine,你需要理解以下几个关键概念: 1. 地图(Map):地图是ARCGIS Engine应用的基础,包含了一个或多...

    ArcGIS Engine10.0的开发

    开发者可以通过ArcGIS Engine创建数据导入导出工具,实现数据的交换和共享。 此外,ArcGIS Engine提供了事件驱动的编程模式,使得用户与应用的交互更加灵活。例如,MapControl的Click事件可以用于实现点击地图时...

    arcgisengine5种数据源加载

    在这个场景下,"arcgisengine5种数据源加载"指的是使用ArcGIS Engine来加载不同的数据源,以便在应用中进行地图展示和分析。以下是对这五种数据源及其加载方法的详细解释: 1. **Shapefile数据源**: Shapefile是...

    ArcGIS Engine地图符号化.zip

    本资料“ArcGIS Engine地图符号化.zip”包含了一系列的实例代码和测试数据,旨在帮助开发者深入理解和掌握这一技术。 首先,我们需要理解地图符号化的概念。在GIS领域,地图符号化是指将地理数据转换为可视化元素的...

    ArcGIS Engine 10 开发手册 官方内部资料

    这份文档详尽地介绍了如何利用ArcGIS Engine创建地图应用、管理地理数据以及实现各种GIS功能。 一、ArcGIS Engine概述 ArcGIS Engine是Esri公司的核心组件之一,它允许开发者构建具有专业GIS功能的应用程序。这个...

    ArcGIS Engine 10 开发更新

    文档目录显示了ArcGIS Engine 10的详细结构,如ArcGIS的介绍、使用控件创建第一个桌面应用程序、空间数据库、几何对象和空间参考、矢量数据空间分析、符号化、栅格数据分析、编辑、地图输出、ArcGIS Engine实战、...

    arcgis engine实现叠加分析

    在GIS(地理信息系统)领域,叠加分析是一种常用的数据处理技术,用于将两个或多个...这个过程涉及到数据预处理、地理处理服务的使用、结果的解析和展示等多个方面,充分体现了ArcGIS Engine在GIS开发中的强大功能。

    ArcGIS 10 影像分及在ArcGIS Engine中的处理

    在ArcGIS Engine中处理完影像数据后,结果通常是以栅格数据集的形式呈现。用户可以通过ArcGIS Engine的组件来查看处理后的结果,或者将其导出为文件供其他应用程序使用。 #### 四、总结 综上所述,ArcGIS 10 提供...

    ArcGIS Engine/VS开发程序 空间分析程序系统

    在本项目中,我们关注的是一个使用ArcGIS Engine与Visual Studio 2012(VS2012)开发的空间分析程序系统。ArcGIS Engine是Esri公司提供的一款强大的地理信息系统(GIS)开发组件,它允许开发人员创建具有专业地理...

    使用ArcGIS Engine 开发自定义

    3. **核心组件**:ArcGIS Engine包含多个核心组件,如MapControl用于显示地图,TOCControl(目录控制)管理图层,FeatureLayer显示矢量数据,RasterLayer处理栅格数据。这些组件可以组合使用,构建出复杂的应用界面...

    C#+ArcEngine:加载打开Shp矢量和栅格数据

    - **打开栅格数据**:使用相应的`WorkspaceFactory`(如`ESRI.ArcGIS.Geodatabase.RasterDatasetWorkspaceFactory`)创建工作空间,然后通过`OpenRasterDataset()`方法打开栅格数据集。 - **创建栅格层**:利用`...

Global site tag (gtag.js) - Google Analytics