Mosaic raster datasets to a geodatabase raster dataset
CreateRasterMosaic.cs
// Copyright 2012 ESRI
// 
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
// 
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
// 
// See the use restrictions.
// 

using System;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.DataManagementTools;
using ESRI.ArcGIS.Geoprocessor;
using Microsoft.Win32;

namespace CreateRasterDatasets
{
    class CreateRasterDataset_gp
    {
        //Set variables, you can substitute the paths with your data location
        //Remove temp.gdb in TEMP directory if it exists
        //The output is written to TEMP directory in temp.gdb file geodatabase

        static string outputFolder = @"C:\Temp";
        static string outFGDB ="temp.gdb";
        static string FGDBPath = outputFolder + "\\" + outFGDB;
        static string rasterFolder = @"C:\data";
        static string dsName = "mosaic";

        static void Main(string[] args)
        {
            //If creating a raster dataset in ArcSDE, it will need Standard or Advanced License
            ESRI.ArcGIS.esriSystem.AoInitialize aoInit = null;
            try
            {
                ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
                aoInit = new AoInitializeClass();
                esriLicenseStatus licStatus = aoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
                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
            {
                //Creates an empty raster dataset
                //Make sure parameters of the empty raster dataset match our data (number of bands, bit depth, etc.)
                CreateRasterDS();

                //Loads rasters in the input folder to the new raster dataset
                LoadDirToRasterDataset(FGDBPath + "\\" + dsName, rasterFolder);
            }
            catch (Exception exc)
            {
                // If it fails at this point, shutdown the test and ignore any subsequent errors.
                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()
            aoInit.Shutdown();
        }

        //Creates raster dataset using GP CreateRasterDataset class
        static void CreateRasterDS() 
        {
            try
            {
                //Initialize GeoProcessor
                Geoprocessor geoProcessor = new Geoprocessor();

                //Create file geodatabase 
                CreateFileGDB createFileGDB = new CreateFileGDB();
                createFileGDB.out_folder_path = outputFolder;
                createFileGDB.out_name = outFGDB;

                geoProcessor.Execute(createFileGDB, null);

                //Create a Raster Dataset 
                CreateRasterDataset createRasterDataset = new CreateRasterDataset();

                //Set parameters
                //Set output location and name
                createRasterDataset.out_name = dsName;
                createRasterDataset.out_path = FGDBPath;

                //Set number of band to 3
                createRasterDataset.number_of_bands = 3;

                //Set pixel type to unsigned 8 bit integer
                createRasterDataset.pixel_type = "8_BIT_UNSIGNED";

                //Build pyramid layers with GDB calculated number of levels
                createRasterDataset.pyramids = "PYRAMIDS -1 BILINEAR";

                //Set GDB dataset properties
                //Set JPEG compression of quality 50
                createRasterDataset.compression = "JPEG 50";

                //Set pyramid origin point so it takes advantage of partial pyramid building when mosaicking
                //Need to make sure that any raster that will be mosaicked is to the southeast of this point
                //If the rasters are in GCS, the following origin point is good.
                //createRasterDataset.pyramid_origin = "-180 90";

                //Execute the tool to create a raster dataset
                geoProcessor.Execute(createRasterDataset, null);
                ReturnMessages(geoProcessor);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
            }
        }

        //GP message handling
        private static void ReturnMessages(Geoprocessor gp)
        {
            if (gp.MessageCount > 0)
            {
                for (int Count = 0; Count <= gp.MessageCount - 1; Count++)
                {
                    System.Console.WriteLine(gp.GetMessage(Count));
                }
            }
        }

        static void LoadDirToRasterDataset(string outRasterDataset, string inputDir)
        {
            try
            {
                //Initialize GeoProcessor
                Geoprocessor geoProcessor = new Geoprocessor();

                //Mosaic the works
                WorkspaceToRasterDataset wsToRasDs = new WorkspaceToRasterDataset();

                //Set input folder
                wsToRasDs.in_workspace = inputDir;

                //Set target GDB raster dataset
                wsToRasDs.in_raster_dataset = outRasterDataset;

                //Include rasters in the subdirectories
                wsToRasDs.include_subdirectories = "INCLUDE_SUBDIRECTORIES";

                //Set mosaic mode
                wsToRasDs.mosaic_type = "LAST";

                //Set colormap mode
                wsToRasDs.colormap = "MATCH";

                //Set background value
                wsToRasDs.background_value = 0;

                //Execute the tool to load rasters in the directory to raster dataset
                geoProcessor.Execute(wsToRasDs, null);
                ReturnMessages(geoProcessor);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
            }
        }

    }
}