Arcengine,C#,影像数据的裁切和保存
来源:互联网 发布:淘宝买家收货后钱在哪 编辑:程序博客网 时间:2024/05/24 04:32
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.SystemUI;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.DataSourcesRaster;
using ESRI.ArcGIS.SpatialAnalyst;
using ESRI.ArcGIS.GeoAnalyst;
public class ArcGISRaster
{
//ArcGIS影像操作
/// <summary>
/// 影像切割by yl 2008.06.16 landgis@126.com,参考http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=28659&extra=&page=1修改
/// </summary>
/// <param name="pRasterLayer">//要裁切的影像图层</param>
/// <param name="FileName">文件名为.img</param>
public static void RasterClip(IRasterLayer pRasterLayer, IPolygon clipGeo, string FileName)
{
IRaster pRaster = pRasterLayer.Raster;
IRasterProps pProps = pRaster as IRasterProps;
object cellSizeProvider = pProps.MeanCellSize().X;
IGeoDataset pInputDataset = pRaster as IGeoDataset;
IExtractionOp pExtractionOp = new RasterExtractionOpClass();
IRasterAnalysisEnvironment pRasterAnaEnvir = pExtractionOp as IRasterAnalysisEnvironment;
pRasterAnaEnvir.SetCellSize(esriRasterEnvSettingEnum.esriRasterEnvValue, ref cellSizeProvider);
object extentProvider = clipGeo.Envelope;
object snapRasterData = Type.Missing;
pRasterAnaEnvir.SetExtent(esriRasterEnvSettingEnum.esriRasterEnvValue, ref extentProvider, ref snapRasterData);
IGeoDataset pOutputDataset = pExtractionOp.Polygon(pInputDataset, clipGeo as IPolygon, true);
IRaster clipRaster; //裁切后得到的IRaster
if (pOutputDataset is IRasterLayer)
{
IRasterLayer rasterLayer = pOutputDataset as IRasterLayer;
clipRaster = rasterLayer.Raster;
}
else if (pOutputDataset is IRasterDataset)
{
IRasterDataset rasterDataset = pOutputDataset as IRasterDataset;
clipRaster = rasterDataset.CreateDefaultRaster();
}
else if (pOutputDataset is IRaster)
{
clipRaster = pOutputDataset as IRaster;
}
else
{
return;
}
//保存裁切后得到的clipRaster
//如果直接保存为img影像文件
IWorkspaceFactory pWKSF = new RasterWorkspaceFactoryClass();
IWorkspace pWorkspace = pWKSF.OpenFromFile(System.IO.Path.GetDirectoryName(FileName), 0);
ISaveAs pSaveAs = clipRaster as ISaveAs;
pSaveAs.SaveAs(System.IO.Path.GetFileName(FileName), pWorkspace, "IMAGINE Image");
}
}
调用: //by yl 2008.06.16 landgis@126.com
private void mainMap_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
IGeometry clipGeo = this.mainMap.TrackPolygon(); //
ILayer layer = this.mainMap.get_Layer(0); //要裁切的影像图层
IRasterLayer pRasterLayer = layer as IRasterLayer;
ArcGISPub.ArcGISRaster.RasterClip(pRasterLayer,clipGeo as IPolygon,@"c:/temp/yl.img");
}
参考http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=28659&extra=&page=1修改
- Arcengine,C#,影像数据的裁切和保存
- C#+arcengine修改栅格数据的像元值
- ArcEngine下SceneControl叠加影像数据(构建三维地形)
- ArcEngine保存mxd的方法
- ArcEngine影像图配准
- C#+arcengine获得栅格数据
- opencv(c++)遥感影像加载与保存
- C#+arcengine获得栅格数据的属性表
- C#+arcengine获得栅格数据的像素值(高程)
- arcengine镶嵌数据集的基本操作(C#)
- ArcEngine加载和保存3dd文件
- Kinect骨骼数据与彩色影像和深度影像的对齐
- ArcEngine对影像拉伸显示
- ArcEngine 清除影像黑边
- ArcEngine保存为mxd的方法
- ArcEngine保存为mxd的方法
- ArcEngine数据操作之地图文档数据保存
- ArcEngine数据操作之地图文档数据保存
- 简单说一下测试人员在开发中的作用
- 全面理解javascript的caller,callee,call,apply概念
- 客户端实现判断上传文件的大小
- Spring IDE
- Google定义隐藏页面
- Arcengine,C#,影像数据的裁切和保存
- 【注意】我的BLOG空间转移
- HashMyFiles v1.31
- Xaml代码问题
- SEO已经生活化
- 最权威的Google排名算法解密
- 数据库设计中的14个实用技巧
- 想成为最牛程序员吗?以下几点有助你实现这个目标。
- as400-RPG