/// <summary> /// Save the extent change into a new raster file. /// </summary> /// <param name="rasterLayer">Raster layer</param> /// <param name="fileName">Path of the output file</param> /// <param name="xmin">Minimum X coordinate</param> /// <param name="ymin">Minimum Y coordinate</param> /// <param name="pixelSize">Pixel size</param> public static void SaveExtentAs(IRasterLayer rasterLayer, string fileName, double xmin, double ymin, double pixelSize) { IRasterProps rasterProps = (IRasterProps)rasterLayer.Raster; IEnvelope extent = new EnvelopeClass(); extent.PutCoords(xmin, ymin, xmin + rasterProps.Width * pixelSize, ymin + rasterProps.Height * pixelSize); extent.Project(rasterProps.Extent.SpatialReference); rasterProps.Extent = extent; ISaveAs saveAs = (ISaveAs)rasterLayer.Raster; IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); IWorkspace mWorkspace = workspaceFactory.OpenFromFile(System.IO.Path.GetDirectoryName(fileName), 0); saveAs.SaveAs(System.IO.Path.GetFileName(fileName), mWorkspace, RasterFile.GetFormat(System.IO.Path.GetExtension(fileName))); }
/// <summary> /// Save the edition as a specified file. /// </summary> /// <param name="fileName"></param> public static void SaveEditsAs(string fileName) { if (ActiveLayer == null) { return; } Random rnd = new Random(); string tempFile = rnd.Next().ToString(); ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.EngineOrDesktop); // Get the original file IRasterLayer rasterLayer = (IRasterLayer)Editor.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); // Copy file to the new location rasterDataset.Copy(tempFile, mWorkspace); // Save the original file to a new file ISaveAs saveAs = (ISaveAs)rasterDataset; IRasterDataset2 mRasterDataset = (IRasterDataset2)saveAs.SaveAs(System.IO.Path.GetFileName(fileName), mWorkspace, RasterFile.GetFormat(System.IO.Path.GetExtension(fileName))); IRaster mRaster = mRasterDataset.CreateFullRaster(); // Save edits to file Editor.WriteEdits(mRaster); System.Runtime.InteropServices.Marshal.ReleaseComObject(mRaster); }