Пример #1
0
        private void comboBoxDataSource_SelectedIndexChanged(object sender, EventArgs e)
        {
            //cyf 20110613 add
            //this.comboBoxFeaClass.Items.Clear();
            //end
            SysGisTable sysTable = new SysGisTable(_tmpWorkspace);
            Exception   eError;
            //根据用户选择的数据源,得到数据源的工作空间
            string DataSourceName = this.comboBoxDataSource.Text;
            string conninfostr    = sysTable.GetFieldValue("DATABASEMD", "CONNECTIONINFO", "DATABASENAME='" + DataSourceName + "'", out eError).ToString();
            int    type           = int.Parse(sysTable.GetFieldValue("DATABASEMD", "DATAFORMATID", "DATABASENAME='" + DataSourceName + "'", out eError).ToString());
            string strDBPara      = sysTable.GetFieldValue("DATABASEMD", "DBPARA", "DATABASENAME='" + DataSourceName + "'", out eError).ToString();
            int    index6         = conninfostr.LastIndexOf("|");
            //string strdataset = conninfostr.Substring(index6 + 1);

            IWorkspace pWorkspace = ModuleMap.GetWorkSpacefromConninfo(conninfostr, type);

            if (pWorkspace == null)
            {
                return;
            }
            _ListDataset.Clear();
            _ListTypeOfDataset.Clear();
            string strDatasets = conninfostr.Substring(index6 + 1);

            string[]          strTemp       = strDatasets.Split(new char[] { ',' });
            IFeatureWorkspace pFeaWorkSpace = pWorkspace as IFeatureWorkspace;

            if (pFeaWorkSpace != null)
            {
                for (int k = 0; k < strTemp.Length; k++)
                {
                    IDataset pTmpdataset = null;
                    if (strDBPara.Contains("栅格数据集"))
                    {
                        IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)pFeaWorkSpace;
                        IRasterDataset     pRDataset       = rasterWorkspace.OpenRasterDataset(strTemp[k]);
                        pTmpdataset = pRDataset as IDataset;
                        if (pTmpdataset != null)
                        {
                            _ListTypeOfDataset.Add("RD");
                        }
                    }
                    else if (strDBPara.Contains("栅格编目"))
                    {
                        IRasterWorkspaceEx rasterWorkspace = (IRasterWorkspaceEx)pFeaWorkSpace;
                        IRasterCatalog     pRCatalog       = rasterWorkspace.OpenRasterCatalog(strTemp[k]);
                        pTmpdataset = pRCatalog as IDataset;
                        if (pTmpdataset != null)
                        {
                            _ListTypeOfDataset.Add("RC");
                        }
                    }
                    else
                    {
                        pTmpdataset = pFeaWorkSpace.OpenFeatureDataset(strTemp[k]) as IDataset;
                        if (pTmpdataset != null)
                        {
                            _ListTypeOfDataset.Add("FC");
                        }
                    }
                    if (pTmpdataset != null)
                    {
                        _ListDataset.Add(pTmpdataset);
                    }
                }
            }
            _dataWorkspace = pWorkspace;

            if (pWorkspace == null)
            {
                return;
            }
        }