private static IRaster GetBand(string fileName, Dataset dataset, Band band)
        {
            Raster result = null;

            switch (band.DataType)
            {
            case DataType.GDT_Byte:
                result = new GdalRaster <byte>(fileName, dataset, band);
                break;

            case DataType.GDT_CFloat32:
            case DataType.GDT_CFloat64:
            case DataType.GDT_CInt16:
            case DataType.GDT_CInt32:
                break;

            case DataType.GDT_Float32:
                result = new GdalRaster <float>(fileName, dataset, band);
                break;

            case DataType.GDT_Float64:
                result = new GdalRaster <double>(fileName, dataset, band);
                break;

            case DataType.GDT_Int16:
                result = new GdalRaster <short>(fileName, dataset, band);
                break;

            case DataType.GDT_UInt16:
            case DataType.GDT_Int32:
                result = new GdalRaster <int>(fileName, dataset, band);
                break;

            case DataType.GDT_TypeCount:
                break;

            case DataType.GDT_UInt32:
                result = new GdalRaster <long>(fileName, dataset, band);
                break;

            case DataType.GDT_Unknown:
                break;

            default:
                break;
            }

            if (result != null)
            {
                result.Open();
            }

            return(result);
        }