ArcEngine开发入门-4.ppt_第1页
ArcEngine开发入门-4.ppt_第2页
ArcEngine开发入门-4.ppt_第3页
ArcEngine开发入门-4.ppt_第4页
ArcEngine开发入门-4.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

栅格空间分析,AE栅格数据模型,RasterDataset,表示以某种特定格式存贮在磁盘文件、数据库或内存中的栅格数据集。可进行基本的copy、rename、delete等管理实现了IRasterDataset、IGeoDataset、IGeoDataset2等接口,RasterBand,表示栅格数据的一个波段通过RasterBand可访问颜色表、栅格直方图、统计量、RAT表等。,Raster,表示栅格数据的一种临时状态。对Raster的改变不会引起源数据的改变。可以用Raster表达各种栅格数据处理的输出结果。总是和一个或多个RasterBand相关联。可由RasterDataset创建得到CreateFullRaster:创建包含所有内容的RasterCreateDefaultRaster:只包含3个波段实现了IRasterProps接口访问栅格属性。实现了IGeoDataset、IRaster等接口(但没有实现IGeoDataset2、IRasterDataset接口),空间分析模型,AE的GeoAnalyst库用于进行栅格空间分析它由两大类对象构成:环境支持对象分析操作对象,空间分析步骤,获取License设置分析环境访问输入数据执行分析操作使用输出结果,获取License,publicvoidGetSpatialAnalystLicense()/GetSpatialAnalystextensionuniqueidentifier(UID).UIDpUID=newUIDClass();pUID.Value=esriCore.SAExtension.1;/AddSpatialAnalystextensiontothelicensemanager.objectv=null;IExtensionManagerAdminextensionManagerAdmin=newExtensionManagerClass();extensionManagerAdmin.AddExtension(pUID,refv);/Enablethelicense.IExtensionManagerextensionManager=(IExtensionManager)extensionManagerAdmin;IExtensionextension=extensionManager.FindExtension(pUID);IExtensionConfigextensionConfig=(IExtensionConfig)extension;if(!(extensionConfig.State=esriExtensionState.esriESUnavailable)extensionConfig.State=esriExtensionState.esriESEnabled;elseMessageBox.Show(NoSpatialAnalystLicenseavailable);,设置分析环境,通过RasterAnalysisClass来实现。4个主要环境属性CellSize:输出精度Extent:分析操作发生区域Mask:在Extent基础上确定分析操作针对的区域SpatialReference其他环境属性与具体操作有关,默认值,Cellsize输入数据集中的最大的CellSize值Extent输入数据集的Extent的交集Mask无OutSpatialReference使用第一个有SpatialReference的输入Raster的SpatialReference。建议所有栅格使用相同的SpatialReferenceOutWorkspace由系统环境变量%TEMP%指定,设置分析环境,publicIRasterAnalysisEnvironmentSetNewDefaultEnvironment(IEnvelopeenvelope_Extent,doublenCellSize,IGeoDatasetgeoDataset_Mask,IWorkspaceworkspace,ISpatialReferencespatialReference)IRasterAnalysisEnvironmenttempSetNewDefaultEnvironment=null;IRasterAnalysisEnvironmentrasterAnalysisEnvironment=newRasterAnalysisClass();if(envelope_Extent!=null)objectextentProvider=(object)envelope_Extent;objectsnapRasterData=Type.Missing;rasterAnalysisEnvironment.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue,refextentProvider,refsnapRasterData);objectcellSizeProvider=(object)nCellSize;rasterAnalysisEnvironment.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,refcellSizeProvider);rasterAnalysisEnvironment.Mask=geoDataset_Mask;rasterAnalysisEnvironment.OutWorkspace=workspace;rasterAnalysisEnvironment.OutSpatialReference=spatialReference;rasterAnalysisEnvironment.SetAsNewDefaultEnvironment();returnrasterAnalysisEnvironment;,访问输入数据,4种可接受的输入RasterDataset:由RasterBand构成RasterBandRasterRasterDescriptor:只对子集操作时使用另两种可接受的输入FeatureClassFeatureClassDescriptor这两种输入会根据环境参数自动转换为栅格。,创建RasterDataset,publicIRasterDatasetOpenRasterDataset(stringsPath,stringsFileName)IRasterDatasetrasterDataset=null;IWorkspaceFactoryworkspaceFactory=newRasterWorkspaceFactoryClass();IRasterWorkspacerasterWorkspace=null;if(workspaceFactory.IsWorkspace(sPath)rasterWorkspace=(IRasterWorkspace)(workspaceFactory.OpenFromFile(sPath,0);rasterDataset=rasterWorkspace.OpenRasterDataset(sFileName);returnrasterDataset;,创建RasterDescriptor,publicIRasterDescriptorCreateRasterDescriptor(stringsPath,stringsFileName,stringsWhereClause,stringsSubField,stringsInField)IRasterDescriptorrasterDescriptor=newRasterDescriptorClass();IQueryFilterqueryFilter=newQueryFilterClass();queryFilter.WhereClause=sWhereClause;queryFilter.SubFields=sSubField;IRasterDatasetrasterDataset=OpenRasterDataset(sPath,sFileName);IRasterraster=rasterDataset.CreateDefaultRaster();rasterDescriptor.Create(raster,queryFilter,sInField);returnrasterDescriptor;,执行分析操作,分析操作有很多,但用法类似。须先知道分析所用的接口,然后调用接口函数执行分析时可修改环境参数,voidSlope()IRasterDatasetrasterDataset_Elevation=OpenRasterDataset(D:SpatialTest,elevation);ISurfaceOpsurfaceOp=newRasterSurfaceOpClass();IGeoDatasetgeoDataset_Elevation=(IGeoDataset)rasterDataset_Elevation;System.ObjectzFactor=Type.Missing;IGeoDatasetgeoDataset_Slope=surfaceOp.Slope(geoDataset_Elevation,esriGeoAnalysisSlopeEnum.esriGeoAnalysisSlopeDegrees,refzFactor);,执行时修改环境参数,voidMakeConstantRaster()IRasterMakerOprasterMakerOp=newRasterMakerOpClass();IRasterAnalysisEnvironmentrasterAnalysisEnvironment=(IRasterAnalysisEnvironment)rasterMakerOp;IWorkspaceFactoryworkspaceFactory=newRasterWorkspaceFactoryClass();IWorkspaceworkspace=workspaceFactory.OpenFromFile(c:temp,0);rasterAnalysisEnvironment.OutWorkspace=workspace;objectobject_cellSize=(System.Object)30;rasterAnalysisEnvironment.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue,refobject_cellSize);IEnvelopeenvelope=newEnvelopeClass();envelope.XMin=0;envelope.YMin=0;envelope.XMax=3000;envelope.YMax=3000;objectextentProvider=(System.Object)envelope;objectobject_Missing=System.Type.Missing;rasterAnalysisEnvironment.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue,refextentProvider,refobject_Missing);IRasterraster=null;raster=(IRaster)(rasterMakerOp.MakeConstant(10,true);,显示输出结果,publicvoidAddRasterLayer(IRasterraster)IRasterLayerrasterLayer=newRasterLayerClass();rasterLayer.CreateFromRaster(raster);m_mapControl.AddLayer(rasterLayer,0);m_mapControl.ActiveView.Refresh();,保存结果,publicvoidMakePermanent(IRasterraster)IRasterBandCollectionrasterBandCollection=(IRasterBandCollection)raster;IRasterBandrasterBand=rasterBandCollection.Item(0);IRasterDatasetrasterDataset=rasterBand.RasterDataset;ITemporaryDatasettemporaryDataset=(ITemporaryDataset)rasterDataset;IWorkspaceFactoryworkspaceFactory=newRasterWorkspaceFactoryClass();IWorkspaceworkspace=workspaceFactory.OpenFromFile(c:temp,0);/FormatcanbeGRID,TIFF,orIMAGINEImage.temporaryDataset.MakePermanentAs(Result2.img,workspace,IMAGINEImage);,表面分析ISurfaceOp,Slope:坡度计算:Aspect:坡向计算Contour:生成等值线HillShade:山体阴影分析Visibility:通视分析Curvature:曲率分析,栅格变换ITransformationOp,Clip:裁剪Flip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论