//added by chulili 20110719 根据数据集加载历史数据 public void AddHistoryDataByFD(string[] strTemp, string strType) { Mapcontrol.ClearLayers(); Toccontrol.Update(); Application.DoEvents(); //加载历史数据 Exception err = null; SysCommon.Gis.SysGisDataSet sourceSysGisDataSet = new SysCommon.Gis.SysGisDataSet(); switch (strType) { case "SDE": sourceSysGisDataSet.SetWorkspace(strTemp[0], strTemp[1], strTemp[2], strTemp[3], strTemp[4], strTemp[5], out err); break; case "PDB": sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.PDB, out err); break; case "GDB": sourceSysGisDataSet.SetWorkspace(strTemp[2], SysCommon.enumWSType.GDB, out err); break; } if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("连接数据库失败", "原因:" + err.Message); return; } //cyf 20110706 add DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node(); ProjectNode = m_ProTree.SelectedNode; while (ProjectNode.Parent != null) { ProjectNode = ProjectNode.Parent; } //cyf 20110625 add: DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点 //获取数据库节点 DBNode = m_ProTree.SelectedNode; while (DBNode.Parent != null && DBNode.DataKeyString != "DB") { DBNode = DBNode.Parent; } if (DBNode.DataKeyString != "DB") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据库节点失败!"); return; } DevComponents.AdvTree.Node DtSetNode = new DevComponents.AdvTree.Node(); //数据集树节点 if (DBNode.Text == "现势库" || DBNode.Text == "历史库") //.DataKeyString == "现势库" { //获取数据集节点 DtSetNode = m_ProTree.SelectedNode; while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "FD") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } //end //added by chulili 20110719 XmlElement elementTemp = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace); IFeatureDataset featureDataset = null; //数据集 IGroupLayer pGroupLayer = new GroupLayerClass(); if (m_ProTree.SelectedNode.DataKeyString == "FD") { featureDataset = sysGisDataset.GetFeatureDataset(m_ProTree.SelectedNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查该数据集是否存在!"); return; } pGroupLayer.Name = m_ProTree.SelectedNode.Text + "_" + ProjectNode.Text; } else if (m_ProTree.SelectedNode.DataKeyString == "FC") { featureDataset = sysGisDataset.GetFeatureDataset(DtSetNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!"); return; } pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text; } List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset); //end added by chulili //List<string> lstNames = sourceSysGisDataSet.GetFeatureClassNames(); XmlElement feaclsElem = null; try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { } foreach (IDataset dataset in lstDataset) { IFeatureClass pFeatureClass = dataset as IFeatureClass; if (pFeatureClass == null) { continue; } IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = dataset.Name; if (m_ProTree.SelectedNode.DataKeyString == "FC") { //加载指定的图层 if (m_ProTree.SelectedNode.Text != pFeatureLayer.Name) { continue; } } else if (m_ProTree.SelectedNode.DataKeyString == "FD") { if (feaclsElem != null) { if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name)) { //若不具备数据权限,则不进行加载 continue; } } } pGroupLayer.Add(pFeatureLayer as ILayer); } Mapcontrol.Map.AddLayer(pGroupLayer); SysCommon.Gis.ModGisPub.LayersCompose(Mapcontrol); InitialSliderItem(Mapcontrol); }