arcengine栅格数据使用总结_第1页
arcengine栅格数据使用总结_第2页
arcengine栅格数据使用总结_第3页
arcengine栅格数据使用总结_第4页
arcengine栅格数据使用总结_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

arcengine栅格数据使用总结arcengine栅格数据使用总结/NUMPAGES22arcengine栅格数据使用总结arcengine栅格数据使用总结

IRasterLayerpRasterLayer=pLayerasIRasterLayer;

IWorkspaceFactory2pWorkspaceFactory2=newRasterWorkspaceFactoryClass();

IRasterWorkspacepRasterWorkspace;

pRasterWorkspace=(IRasterWorkspace)pWorkspaceFactory2.OpenFromFile(filePath,0);

IRasterDatasetpRasterDataset=pRasterWorkspace.OpenRasterDataset(fileName);

IGeoDatasetpRasterGeoDataset=pRasterDatasetasIGeoDataset;

IWorkspaceFactory2pWorkspaceFactoryShp=newShapefileWorkspaceFactoryClass();

//

IConversionOppConversionOp=newRasterConversionOpClass();

ISpatialReferencepSpatialReference=pRasterGeoDataset.SpatialReference;

IGeoDatasetpGeoDataset;

//

IDatasetpDataset1=pGeoDatasetasIDataset;

IFeatureClasspFeatureClass=pDataset1asIFeatureClass;

IFeatureLayerpFeatureLayer=newFeatureLayerClass();

pFeatureLayer.FeatureClass=pFeatureClass;

pAxMapControl.ClearLayers();

pAxMapControl.AddLayer(pFeatureLayer);

pAxMapControl.Refresh();Tag标签:

栅格数据ArcEngine

标签:栅格重分类分类:AE二次开发

publicstaticIRasterLayerSetViewShedRenderer(IRasterpInRaster,stringsField,stringsPath)

{

IRasterDescriptorpRD=newRasterDescriptorClass();

pRD.Create(pInRaster,newQueryFilterClass(),sField);

IReclassOppReclassOp=newRasterReclassOpClass();

IGeoDatasetpGeodataset=pInRasterasIGeoDataset;

IRasterAnalysisEnvironmentpEnv=pReclassOpasIRasterAnalysisEnvironment;

IWorkspaceFactorypWSF=newRasterWorkspaceFactoryClass();

IWorkspacepWS=pWSF.OpenFromFile(sPath,0);

pEnv.OutWorkspace=pWS;

objectobjSnap=null;

objectobjExtent=pGeodataset.Extent;

pEnv.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue,refobjExtent,refobjSnap);

pEnv.OutSpatialReference=pGeodataset.SpatialReference;

IRasterLayerpRLayer=newRasterLayerClass();

IRasterBandCollectionpRsBandCol=pGeodatasetasIRasterBandCollection;//定义波段集

IRasterBandpRasterBand=pRsBandCol.Item(0);

pRasterBand.ComputeStatsAndHist();

IRasterStatisticspRasterStatistic=pRasterBand.Statistics;//获取像元统计信息

doubledMaxValue=pRasterStatistic.Maximum;

doubledMinValue=pRasterStatistic.Minimum;

INumberRemappNumRemap=newNumberRemapClass();//定义INumberRemap设定阈值

pNumRemap.MapRange(dMinValue,0,0);//设置值区间,输出值

pNumRemap.MapRange(0,dMaxValue,1);

IRemappRemap=pNumRemapasIRemap;//转换成IRemap

IRasterpOutRaster=pReclassOp.ReclassByRemap(pGeodataset,pRemap,false)asIRaster;//调用ReclassByRemap方法

pRLayer.CreateFromRaster(pOutRaster);

returnpRLayer;

}

栅格图层和矢量图层的属性表浏览

if(pLyrisIFeatureLayer)

{

DataTablepTable=newDataTable();

IFeatureLayerpFealyr=pLyrasIFeatureLayepublicIRasterDatasetCreateFileRasterDataset(stringdirectoryName,stringfileName)

{

//Thisfunctioncreatesanewimgfileinthegivenworkspace

//andthenassignspixelvalues

try

{

IRasterDatasetrasterDataset=null;

IPointoriginPoint=newPointClass();

originPoint.PutCoords(0,0);

//Createthedataset

IRasterWorkspace2rasterWorkspace2=null;

rasterWorkspace2=CreateRasterWorkspace(directoryName);

rasterDataset=rasterWorkspace2.CreateRasterDataset(fileName,"IMAGINEImage",originPoint,200,100,1,1,1,rstPixelType.PT_UCHAR,newUnknownCoordinateSystemClass(),true);

IRawPixelsrawPixels=null;

IPixelBlock3pixelBlock3=null;

IPntpixelBlockOrigin=null;

IPntpixelBlockSize=null;

IRasterBandCollectionrasterBandCollection;

IRasterPropsrasterProps;

//QIforIRawPixelsandIRasterProps

rasterBandCollection=(IRasterBandCollection)rasterDataset;

rawPixels=(IRawPixels)rasterBandCollection.Item(0);

rasterProps=(IRasterProps)rawPixels;

//Createpixelblock

pixelBlockOrigin=newDblPntClass();

pixelBlockOrigin.SetCoords(0,0);

pixelBlockSize=newDblPntClass();

pixelBlockSize.SetCoords(rasterProps.Width,rasterProps.Height);

pixelBlock3=(IPixelBlock3)rawPixels.CreatePixelBlock(pixelBlockSize);

//Readpixelblock

rawPixels.Read(pixelBlockOrigin,(IPixelBlock)pixelBlock3);

//Getpixeldataarray

System.Object[,]pixelData;

pixelData=(System.Object[,])pixelBlock3.get_PixelDataByRef(0);

//Loopthroughallthepixelsand

#4楼

[楼主]2009-02-0915:38|

尤文之鹤

arcengine栅格数据使用总结

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

1、栅格数据的存储类型

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

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

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

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

3、IRasterWorkspaceEx与IRasterWorkspace,IRsterWorkspace2的区别

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

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

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

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

IRasterLayerrasterLayer=newRasterLayerClass();

rasterLayer.CreateFromFilePath(fileName);//fileName指存本地的栅格文件路径

axMapControl1.AddLayer(rasterLayer,0);

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

IWorkspaceFactoryworkspaceFactory=newRasterWorkspaceFactory();

IWorkspaceworkspace;

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

if(workspace==null)

{

Console.WriteLine("Couldnotopentheworkspace.");

return;

}

IRasterWorkspacerastWork=(IRasterWorkspace)workspace;

IRasterDatasetrastDataset;

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

if(rastDataset==null)

{

Console.WriteLine("Couldnotopentherasterdataset.");

return;

}

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

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

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

IRasterPropsrasterProps=(IRasterProps)clipRaster;

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

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

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

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

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

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

IPntpntSize=newPntClass();

pntSize.SetCoords(dX,dY);

IPixelBlockpixelBlock=clipRaster.CreatePixelBlock(pntSize);

IPntpnt=newPntClass();

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

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

{

pnt.SetCoords(i,j);

clipRaster.Read(pnt,pixelBlock);

if(pixelBlock!=null)

{

objectobj=pixelBlock.GetVal(0,0,0);

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

}

}

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

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

1).IRasterLayerExport接口

IRasterLayerExportrLayerExport=newRasterLayerExportClass();

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

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

if(proSpatialRef!=null)

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

IWorkspaceFactorypWF=newRasterWorkspaceFactoryClass();

try

{

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

IRasterDatasetoutGeoDataset=rLayerExport.Export(pRasterWorkspace,code,strRasterType);

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

……..

}

Catch(Exceptionex)

{

ThrownewArgumention(ex.Message);

}

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

IExtractionOpextraction=newRasterExtractionOpClass();

try

{

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

IRasterraster=geoDataset

温馨提示

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

评论

0/150

提交评论