版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物流运输数据库课程设计
- 2025年度定制化家具销售合同范本2篇
- 机器视觉课课程设计书
- 2025年度建筑设备安全施工与安装服务协议
- 二零二五年度商业综合体给排水专业分包合同2篇
- 2025年度知识产权质押委托保证反担保服务合同3篇
- 贪吃蛇课程设计c语言
- 英语语法课程设计依据
- 2025年中学校长开学典礼讲话(2篇)
- 网上投票系统课程设计
- 脑恶性肿瘤的护理查房
- 2022公务员录用体检操作手册(试行)
- 骨盆骨折PPT完整版
- 事业单位登记管理讲座课件
- 柴油加氢设备-加氢循环氢压缩机
- 中小学德育工作指南考核试题及答案
- 雪夜的老人阅读答案6篇
- 2022数学课程标准解读及实践:八下平行四边形大单元设计
- 昌乐二中271课堂教学模式
- 深基坑变形监测方案
- 卫生专业技术资格任职聘用证明表
评论
0/150
提交评论