镶嵌数据集的基本操作

1.创建新的镶嵌数据集。

  /// <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)mosaicDataSet;
         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;
     }
 }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值