public IFunctionRasterDataset returnFunctionRasterDatasetNetCDF(string netCdfPath, string var, string x, string y, string band)
 {
     IWorkspace wks = geoUtil.OpenRasterWorkspace(netCdfPath);
     string rsDset = System.IO.Path.GetFileNameWithoutExtension(netCdfPath);
     INetCDFWorkspace rsWks = (INetCDFWorkspace)wks;
     IMDWorkspace mdWks = (IMDWorkspace)wks;
     NetCDFRasterDatasetName rsDsetName = new NetCDFRasterDatasetNameClass();
     IMDRasterDatasetView rsDsetV = (IMDRasterDatasetView)rsDsetName;
     rsDsetV.Variable = var;
     rsDsetV.XDimension = x;
     rsDsetV.YDimension = y;
     rsDsetV.BandDimension = band;
     return createIdentityRaster((IRasterDataset)mdWks.CreateView(rsDset, (IMDDatasetView)rsDsetV));
 }
        /// <summary>
        /// Opens a raster dataset given a string path
        /// </summary>
        /// <param name="rasterPath">full path to a raster dataset</param>
        /// <returns>IRasterDataset</returns>
        public IRasterDataset openRasterDataset(string rasterPath,out string bnd)
        {
            IRasterDataset rstDset = null;
            bnd = "all";
            try
            {
                IWorkspace wks = null;
                string rstDir = "";
                string extTest = System.IO.Path.GetExtension(rasterPath).ToLower();
                if (extTest == ".nc" || extTest == ".afr")
                {
                    wks = geoUtil.OpenRasterWorkspace(rasterPath);
                    rstDir = System.IO.Path.GetDirectoryName(rasterPath);
                }
                else
                {
                    wks = openRasterDatasetRec(rasterPath);
                    rstDir = wks.PathName;
                }

                string rstName = rasterPath.Replace(rstDir, "").TrimStart(new char[] { '\\' });
                string[] rstNameSplit = rstName.Split(new char[] { '\\' });
                string dataSet = "";
                string rsDset = "";

                switch (rstNameSplit.Length)
                {
                    case 1:
                        rsDset = rstNameSplit[0];
                        break;
                    case 2:
                        rsDset = rstNameSplit[0];
                        bnd = rstNameSplit[1];
                        break;
                    default:
                        dataSet = rstNameSplit[0];
                        rsDset = rstNameSplit[1];
                        bnd = rstNameSplit[2];
                        string[] bndsp = bnd.Split(new char[] { '_' });
                        bnd = bndsp[bndsp.Length - 1];
                        break;
                }
                //Console.WriteLine("Raster Dir = " + rstDir);
                //Console.WriteLine("Raster Name = " + rstName);
                //Console.WriteLine("Raster DataSet = " + dataSet);
                //Console.WriteLine("RsDset = " + rsDset);
                //Console.WriteLine("Bnd = " + bnd);
                if (wks.Type == esriWorkspaceType.esriLocalDatabaseWorkspace || wks.Type == esriWorkspaceType.esriRemoteDatabaseWorkspace)
                {
                    IRasterWorkspaceEx rsWks = (IRasterWorkspaceEx)wks;
                    rstDset = rsWks.OpenRasterDataset(rsDset);
                }
                else
                {
                    //Console.WriteLine(wks.PathName);
                    //Console.WriteLine(wks.WorkspaceFactory.get_WorkspaceDescription(true));
                    //string ext = System.IO.Path.GetExtension(wks.PathName).ToLower();
                    if (extTest == ".nc")
                    {
                        INetCDFWorkspace rsWks = (INetCDFWorkspace)wks;
                        IMDWorkspace mdWks = (IMDWorkspace)wks;
                        NetCDFRasterDatasetName rsDsetName = new NetCDFRasterDatasetNameClass();
                        IMDRasterDatasetView rsDsetV = (IMDRasterDatasetView)rsDsetName;
                        string xDim, yDim, bandDim, vNm;
                        getDeminsions(rsWks, out xDim, out yDim, out bandDim, out vNm);
                        //Console.WriteLine("BandDim = " + bandDim.ToString());
                        //Console.WriteLine("xDim = " + xDim.ToString());
                        //Console.WriteLine("yDim = " + yDim.ToString());
                        rsDsetV.Variable = vNm;
                        rsDsetV.XDimension = xDim;
                        rsDsetV.YDimension = yDim;
                        rsDsetV.BandDimension = bandDim;
                        rstDset = (IRasterDataset)mdWks.CreateView(rsDset, (IMDDatasetView)rsDsetV);
                    }
                    else if (extTest == ".afr")
                    {
                        IFunctionRasterDatasetName fDsName = new FunctionRasterDatasetNameClass();
                        fDsName.FullName = rasterPath;
                        IName name = (IName)fDsName;
                        IFunctionRasterDataset ds = (IFunctionRasterDataset)name.Open();
                        rstDset = (IRasterDataset)ds;
                    }
                    else
                    {
                        IRasterWorkspace rsWks = (IRasterWorkspace)wks;
                        rstDset = rsWks.OpenRasterDataset(rsDset);
                    }
                }
                return rstDset;
            }
            catch
            {
                return null;
            }
        }