About the Mosaic raster datasets to a file raster format Sample
[C#]
CreateFileRasterMosaic.cs
using System; using Microsoft.Win32; using ESRI.ArcGIS.esriSystem; using ESRI.ArcGIS.DataSourcesRaster; using ESRI.ArcGIS.Geodatabase; using ESRI.ArcGIS.DataManagementTools; using ESRI.ArcGIS.Geoprocessor; using ESRI.ArcGIS.Geoprocessing; using ESRI.ArcGIS.DataSourcesGDB; namespace CreateFileRasterMosaic { //Sample creating a file raster mosaic from rasters in a folder and its subfolders //Steps: // 1. Create an unmanaged PGDB raster catalog // 2. Load rasters in the input folder and its subfolders to the new raster catalog // 3. Create a mosaic file raster dataset from the unmanaged raster catalog class CreateFileRasterMosaic { //Local variables for data path //The TEMP directory will be used to create temporary raster catalog and output raster dataset //Remove temp.mdb in TEMP directory if it exists //You can substitute the paths with your data location static string inputFolder = @"C:\data"; static string outputFolder = @"C:\Temp"; static string outputName = "mosaic.tif"; static string tempRasterCatalog = "temp_rc"; static string tempPGDB = "temp.mdb"; static string tempPGDBPath = outputFolder + "\\" + tempPGDB; static string tempRasterCatalogPath = tempPGDBPath + "\\" + tempRasterCatalog; static void Main(string[] args) { ESRI.ArcGIS.esriSystem.AoInitialize aoInit = null; try { ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop); aoInit = new AoInitializeClass(); esriLicenseStatus licStatus = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcView); Console.WriteLine("License Checkout successful."); } catch (Exception exc) { // If it fails at this point, shutdown the test and ignore any subsequent errors. Console.WriteLine(exc.Message); } try { //Create temporary unmanaged raster catalog and load all rasters CreateUnmanagedRasterCatalog(); //Open raster catalog IRasterWorkspaceEx rasterWorkspaceEx = (IRasterWorkspaceEx)OpenRasterPGDBWorkspace(tempPGDBPath); IRasterCatalog rasterCatalog = rasterWorkspaceEx.OpenRasterCatalog(tempRasterCatalog); //Mosaic rasters in the raster catalog Mosaic(rasterCatalog); } catch (Exception exc) { Console.WriteLine(exc.Message); } Console.Write("Please press any key to close the application."); Console.ReadKey(); //Do not make any call to ArcObjects after ShutDown() call aoInit.Shutdown(); } static void CreateUnmanagedRasterCatalog() { try { //Use geoprocessing to create the geodatabase, the raster catalog, and load our directory //to the raster catalog. Geoprocessor geoprocessor = new Geoprocessor(); //Create personal GDB in the TEMP directory CreatePersonalGDB createPersonalGDB = new CreatePersonalGDB(); createPersonalGDB.out_folder_path = outputFolder; createPersonalGDB.out_name = tempPGDB; geoprocessor.Execute(createPersonalGDB, null); //Create an unmanaged raster catalog in the newly created personal GDB CreateRasterCatalog createRasterCatalog = new CreateRasterCatalog(); createRasterCatalog.out_path = tempPGDBPath; createRasterCatalog.out_name = tempRasterCatalog; createRasterCatalog.raster_management_type = "unmanaged"; geoprocessor.Execute(createRasterCatalog, null); //Load data into the unmanaged raster catalog WorkspaceToRasterCatalog wsToRasterCatalog = new WorkspaceToRasterCatalog(); wsToRasterCatalog.in_raster_catalog = tempRasterCatalogPath; wsToRasterCatalog.in_workspace = inputFolder; wsToRasterCatalog.include_subdirectories = "INCLUDE_SUBDIRECTORIES"; geoprocessor.Execute(wsToRasterCatalog, null); } catch (Exception exc) { Console.WriteLine(exc.Message); } } static void Mosaic(IRasterCatalog rasterCatalog) { try { //Mosaics all rasters in the raster catalog to an output raster dataset IMosaicRaster mosaicRaster = new MosaicRasterClass(); mosaicRaster.RasterCatalog = rasterCatalog; //Set mosaicking options, you may not need to set these for your data mosaicRaster.MosaicColormapMode = rstMosaicColormapMode.MM_MATCH; mosaicRaster.MosaicOperatorType = rstMosaicOperatorType.MT_LAST; //Open output workspace IWorkspaceFactory workspaceFactory = new RasterWorkspaceFactoryClass(); IWorkspace workspace = workspaceFactory.OpenFromFile(outputFolder, 0); //Save out to a target raster dataset //It can be saved to TIFF, IMG, GRID, BMP, GIF, JPEG2000, JPEG, Geodatabase, ect. ISaveAs saveas = (ISaveAs)mosaicRaster; saveas.SaveAs(outputName, workspace, "TIFF"); } catch (Exception exc) { Console.WriteLine(exc.Message); } } static IWorkspace OpenRasterPGDBWorkspace(string connStr) { Type t = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory"); System.Object obj = Activator.CreateInstance(t); IWorkspaceFactory2 workspaceFactory = obj as IWorkspaceFactory2; return workspaceFactory.OpenFromFile(connStr, 0); } } }
[Visual Basic .NET]
CreateFileRasterMosaic.vb
Imports Microsoft.Win32 Imports ESRI.ArcGIS.esriSystem Imports ESRI.ArcGIS.DataSourcesRaster Imports ESRI.ArcGIS.Geodatabase Imports ESRI.ArcGIS.DataManagementTools Imports ESRI.ArcGIS.Geoprocessor Imports ESRI.ArcGIS.DataSourcesGDB 'Sample creating a file raster mosaic from rasters in a folder and its subfolders 'Steps: ' 1. Create an unmanaged PGDB raster catalog ' 2. Load rasters in the input folder and its subfolders to the new raster catalog ' 3. Create a mosaic file raster dataset from the unmanaged raster catalog Module CreateFileRasterMosaic 'Local variables for data path 'The TEMP directory will be used to create temporary raster catalog and output raster dataset 'Remove temp.mdb in TEMP directory if it exists 'You can substitute the paths with your data location Private inputFolder As String = "C:\data" Private outputFolder As String = "C:\Temp" Private outputName As String = "mosaic.tif" Private tempRasterCatalog As String = "temp_rc" Private tempPGDB As String = "temp.mdb" Private tempPGDBPath As String = outputFolder + "\" + tempPGDB Private tempRasterCatalogPath As String = tempPGDBPath + "\" + tempRasterCatalog Sub Main(ByVal args As String()) Dim aoInit As ESRI.ArcGIS.esriSystem.AoInitialize = Nothing Try ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop) aoInit = New AoInitializeClass() Dim licStatus As esriLicenseStatus = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcView) Console.WriteLine("License Checkout successful.") Catch exc As Exception ' If it fails at this point, shutdown the test and ignore any subsequent errors. Console.WriteLine(exc.Message) End Try Try 'Create temporary unmanaged raster catalog and load all rasters CreateUnmanagedRasterCatalog() 'Open raster catalog Dim rasterWorkspaceEx As IRasterWorkspaceEx = CType(OpenRasterPGDBWorkspace(tempPGDBPath), IRasterWorkspaceEx) Dim rasterCatalog As IRasterCatalog = rasterWorkspaceEx.OpenRasterCatalog(tempRasterCatalog) 'Mosaic rasters in the raster catalog Mosaic(rasterCatalog) Catch exc As Exception Console.WriteLine(exc.Message) End Try Console.WriteLine("Please press any key to close the application.") Console.ReadKey() 'Do not make any call to ArcObjects after ShutDown() call aoInit.Shutdown() End Sub Sub CreateUnmanagedRasterCatalog() Try 'Use geoprocessing to create the geodatabase, the raster catalog, and load our directory 'to the raster catalog. Dim geoprocessor As New Geoprocessor() 'Create personal GDB in the TEMP directory Dim createPersonalGDB As New CreatePersonalGDB() createPersonalGDB.out_folder_path = outputFolder createPersonalGDB.out_name = tempPGDB geoprocessor.Execute(createPersonalGDB, Nothing) 'Create an unmanaged raster catalog in the newly created personal GDB Dim createRasterCatalog As New CreateRasterCatalog() createRasterCatalog.out_path = tempPGDBPath createRasterCatalog.out_name = tempRasterCatalog createRasterCatalog.raster_management_type = "unmanaged" geoprocessor.Execute(createRasterCatalog, Nothing) 'Load data into the unmanaged raster catalog Dim wsToRasterCatalog As New WorkspaceToRasterCatalog() wsToRasterCatalog.in_raster_catalog = tempRasterCatalogPath wsToRasterCatalog.in_workspace = inputFolder wsToRasterCatalog.include_subdirectories = "INCLUDE_SUBDIRECTORIES" geoprocessor.Execute(wsToRasterCatalog, Nothing) Catch exc As Exception Console.WriteLine(exc.Message) End Try End Sub Sub Mosaic(ByVal rasterCatalog As IRasterCatalog) Try 'Mosaics all rasters in the raster catalog to an output raster dataset Dim mosaicRaster As IMosaicRaster = New MosaicRasterClass() mosaicRaster.RasterCatalog = rasterCatalog 'Set mosaicking options, you may not need to set these for your data mosaicRaster.MosaicColormapMode = rstMosaicColormapMode.MM_MATCH mosaicRaster.MosaicOperatorType = rstMosaicOperatorType.MT_LAST 'Open output workspace Dim workspaceFactory As IWorkspaceFactory = New RasterWorkspaceFactoryClass() Dim workspace As IWorkspace = workspaceFactory.OpenFromFile(outputFolder, 0) 'Save out to a target raster dataset 'It can be saved to TIFF, IMG, GRID, BMP, GIF, JPEG2000, JPEG, Geodatabase, ect. Dim saveas As ISaveAs = CType(mosaicRaster, ISaveAs) saveas.SaveAs(outputName, workspace, "TIFF") Catch exc As Exception Console.WriteLine(exc.Message) End Try End Sub Function OpenRasterPGDBWorkspace(ByVal connStr As String) As IWorkspace ' Dim workspaceFactory As IWorkspaceFactory2 = New AccessWorkspaceFactoryClass() Dim t As Type = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory") Dim obj As System.Object = Activator.CreateInstance(t) Dim workspaceFactory As IWorkspaceFactory2 = obj Return workspaceFactory.OpenFromFile(connStr, 0) End Function End Module