arcengine镶嵌数据集的基本操作(C#)
2015-10-30 13:10
645 查看
1.创建新的镶嵌数据集。
2.获取已有镶嵌数据集
3.获取已有镶嵌数据表
4.删除某个镶嵌数据集
5.在镶嵌数据集中添加删格数据
6.导出镶嵌数据集
/// <summary> /// 创建镶嵌数据集 /// </summary> /// <param name="pFgdbWorkspace">工作空间</param> /// <param name="pMDame">名称</param> /// <param name="pSrs">空间参考</param> /// <returns>镶嵌数据集</returns> public static IMosaicDataset CreateMosaicDataset(IWorkspace pFgdbWorkspace, string pMDame, ISpatialReference pSrs) { try { IWorkspaceFactory pWorkspaceFactory = new FileGDBWorkspaceFactory(); ICreateMosaicDatasetParameters pCreationPars = new CreateMosaicDatasetParametersClass(); pCreationPars.BandCount = 3; pCreationPars.PixelType = rstPixelType.PT_UCHAR; IMosaicWorkspaceExtensionHelper pMosaicExentionHelper = new MosaicWorkspaceExtensionHelperClass(); IMosaicWorkspaceExtension pMosaicExtention = pMosaicExentionHelper.FindExtension(pFgdbWorkspace); return pMosaicExtention.CreateMosaicDataset(pMDame, pSrs, pCreationPars, "DOM"); } catch (Exception) { return null; } }
2.获取已有镶嵌数据集
/// <summary> /// 获取镶嵌数据集 /// </summary> /// <param name="MosaicName">数据集名称</param> /// <param name="workspace">数据集所在工作空间</param> /// <returns>镶嵌数据集</returns> public static IMosaicDataset GetMosaicDataset(string MosaicName, IWorkspace workspace) { IMosaicDataset pMosicDataset = null; IMosaicWorkspaceExtensionHelper pMosaicWsExHelper = new MosaicWorkspaceExtensionHelperClass(); IMosaicWorkspaceExtension pMosaicWsExt = pMosaicWsExHelper.FindExtension(workspace); if (pMosaicWsExt != null) { try { pMosicDataset = pMosaicWsExt.OpenMosaicDataset(MosaicName); } catch (Exception ex) { return pMosicDataset; } } return pMosicDataset; }
3.获取已有镶嵌数据表
/// <summary> /// 获取镶嵌数据表 /// </summary> /// <param name="pMosaicDataset">镶嵌数据集</param> /// <returns>镶嵌数据表</returns> public static ITable GetMosaicDatasetTable(IMosaicDataset pMosaicDataset) { ITable pTable = null; IEnumName pEnumName = pMosaicDataset.Children; pEnumName.Reset(); ESRI.ArcGIS.esriSystem.IName pName; while ((pName = pEnumName.Next()) != null) { pTable = pName.Open() as ITable; int i = pTable.Fields.FieldCount; if (i >= 21) break; } return pTable; }
4.删除某个镶嵌数据集
/// <summary> /// 删除镶嵌数据集 /// </summary> /// <param name="rasterName">名称</param> /// <param name="workspace">工作空间</param> /// <returns>删除成功时返回true,否则返回false</returns> public static bool DeleteMosaic(string rasterName, IWorkspace workspace) { try { IMosaicWorkspaceExtensionHelper pMosaicWsExHelper = new MosaicWorkspaceExtensionHelperClass(); IMosaicWorkspaceExtension pMosaicWsExt = pMosaicWsExHelper.FindExtension(workspace); pMosaicWsExt.DeleteMosaicDataset(rasterName); return true; } catch (Exception ex) { return false; } }
5.在镶嵌数据集中添加删格数据
/// <summary> /// 导入栅格数据 /// </summary> /// <param name="filePath">导入文件路径</param> /// <param name="mosaicDataSet">镶嵌数据集</param> public static bool ImportRasterToMosaic(string filePath, IMosaicDataset mosaicDataSet) { try { IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); IRasterWorkspace rasterWorkspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(filePath), 0) as IRasterWorkspace; IMosaicDatasetOperation mOp = (IMosaicDatasetOperation)mosaicDat a3ca aSet; IAddRastersParameters addRs = new AddRastersParametersClass(); IRasterDatasetCrawler rsDsetCrawl = new RasterDatasetCrawlerClass(); rsDsetCrawl.RasterDataset = rasterWorkspace.OpenRasterDataset(System.IO.Path.GetFileName(filePath)); IRasterTypeFactory rsFact = new RasterTypeFactoryClass(); IRasterType rsType = rsFact.CreateRasterType("Raster dataset"); rsType.FullName = rsDsetCrawl.DatasetName; addRs.Crawler = (IDataSourceCrawler)rsDsetCrawl; addRs.RasterType = rsType; mOp.AddRasters(addRs, null); //计算cellSize 和边界 // Create a calculate cellsize ranges parameters object. ICalculateCellSizeRangesParameters computeArgs = new CalculateCellSizeRangesParametersClass(); // Use the mosaic dataset operation interface to calculate cellsize ranges. mOp.CalculateCellSizeRanges(computeArgs, null); // Create a build boundary parameters object. IBuildBoundaryParameters boundaryArgs = new BuildBoundaryParametersClass(); // Set flags that control boundary generation. boundaryArgs.AppendToExistingBoundary = true; // Use the mosaic dataset operation interface to build boundary. mOp.BuildBoundary(boundaryArgs, null); return true; } catch (Exception) { return false; } }
6.导出镶嵌数据集
/// <summary> /// 导出镶嵌数据集为删格数据 /// </summary> /// <param name="RasterName">数据名称</param> /// <param name="workspaceDB">工作空间</param> /// <param name="DownLoadLocation">保存路径</param> /// <returns>成功返回true,失败返回false</returns> public static bool DownLoadMosaic( string RasterName,IWorkspace workspaceDB,string DownLoadLocation) { try { IWorkspace wsGDB = null; IWorkspaceFactory workspaceFactory = new FileGDBWorkspaceFactoryClass(); //判断是GDB文件还是普通文件夹 string locationForm =DownLoadLocation.Substring(DownLoadLocation.Length - 4, 4).ToUpper(); if (locationForm == ".GDB") { wsGDB = workspaceFactory.OpenFromFile(@"" + DownLoadLocation, 0); } else { IRasterWorkspace rasterWorkspace = SetRasterWorkspace(DownLoadLocation); wsGDB = (IWorkspace)rasterWorkspace; } IMosaicWorkspaceExtensionHelper mosaicHelper = new MosaicWorkspaceExtensionHelperClass(); IMosaicWorkspaceExtension mosaicWs = mosaicHelper.FindExtension(workspaceDB); IMosaicDataset mosaic = mosaicWs.OpenMosaicDataset(RasterName); IFunctionRasterDataset functionDS = (IFunctionRasterDataset)mosaic; ISaveAs rasterSaveAs = (ISaveAs)functionDS; if (locationForm == ".GDB") { rasterSaveAs.SaveAs(RasterName, wsGDB, "GDB"); } else { rasterSaveAs.SaveAs(RasterName+".tif", wsGDB, "TIFF"); } return true; } catch { return false; } }
相关文章推荐
- c#调用COM组件
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- C#中this的用法集锦
- C#.NET获取拨号连接的宽带连接方法
- C#异步绑定数据实现方法
- C#实现AddRange为数组添加多个元素的方法
- C#中Equality和Identity浅析
- C#生成饼形图及添加文字说明实例代码
- C#判等对象是否相等的方法汇总
- C#简单的向量用法实例教程
- C#实现基于链表的内存记事本实例
- C#托管堆对象实例包含内容分析