/// <summary> /// Save the edition as a specified file. /// </summary> /// <param name="fileName">New file path of raster layer to be saved.</param> /// <param name="activeLayer">Raster layer to be saved.</param> /// <param name="edits">Pixel collection that contains edited pixels.</param> public static void SaveEditsAs(string fileName, IRasterLayer activeLayer, PixelCollection edits) { if (activeLayer == null || edits.Count == 0) { return; } //Random rnd = new Random(); //string tempFile = rnd.Next().ToString(); ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.EngineOrDesktop); // Get the original file // IRasterLayer rasterLayer = activeLayer; IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); //IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(rasterLayer.FilePath), 0); //IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(System.IO.Path.GetFileName(rasterLayer.FilePath)); // Open the new file save location IWorkspace mWorkspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(fileName), 0); // Save the original file to a new file ISaveAs saveAs = (ISaveAs)activeLayer.Raster; IRasterDataset2 mRasterDataset = (IRasterDataset2)saveAs.SaveAs(System.IO.Path.GetFileName(fileName), mWorkspace, Raster.GetFormat(System.IO.Path.GetExtension(fileName))); IRaster mRaster = mRasterDataset.CreateFullRaster(); // Save edits to file Raster.WriteEdits(mRaster, edits); System.Runtime.InteropServices.Marshal.ReleaseComObject(mRaster); }
/// <summary> /// Save edits to the original file. /// </summary> /// <param name="activeLayer">Raster layer to be saved.</param> /// <param name="edits">Pixel collection that contains edited pixels.</param> public static void SaveEdits(IRasterLayer activeLayer, PixelCollection edits) { if (activeLayer == null || edits.Count == 0) { return; } ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.EngineOrDesktop); // Get the original file //IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); //IRasterWorkspace rasterWorkspace = (IRasterWorkspace)workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(activeLayer.FilePath), 0); //IRasterDataset2 mRasterDataset = (IRasterDataset2)rasterWorkspace.OpenRasterDataset(System.IO.Path.GetFileName(activeLayer.FilePath)); //IRaster mRaster = mRasterDataset.CreateFullRaster(); Raster.WriteEdits(activeLayer.Raster, edits); //System.Runtime.InteropServices.Marshal.ReleaseComObject(mRaster); ArcMap.Document.ActiveView.Refresh(); }