//从数据库中读取图层设置 public static object GetLayerConfigFromBlob(string sql, IWorkspace pConfigWks) { Exception err = null; Fan.Common.Gis.IGisTable pGISTable = new Fan.Common.Gis.SysGisTable(pConfigWks); //获取Layer byte[] LayerByte = pGISTable.GetFieldValue("Render", "LayerConfig", sql, out err) as byte[]; //是否得到了序列化的blob,没得到,则返回NULL if (LayerByte == null) { return(null); } //从数据库中得到图层的类型 string strLayerType = pGISTable.GetFieldValue("Render", "LayerType", sql, out err).ToString(); ILayer pLayer = null; switch (strLayerType) { case "FDOGraphicsLayer": //注记层 pLayer = new FDOGraphicsLayerClass(); break; case "DimensionLayer": //标注层 pLayer = new DimensionLayerClass(); break; case "GdbRasterCatalogLayer": //影像层(RC) pLayer = new GdbRasterCatalogLayerClass(); break; case "RasterLayer": //影像数据集(RD) pLayer = new RasterLayerClass(); break; case "FeatureLayer": //普通地物层 pLayer = new FeatureLayerClass(); break; default: pLayer = new FeatureLayerClass(); break; } IMemoryBlobStreamVariant pMemoryBlobStreamVariant = new MemoryBlobStreamClass(); pMemoryBlobStreamVariant.ImportFromVariant((object)LayerByte); IStream pStream = pMemoryBlobStreamVariant as IStream; if (pLayer != null) { IPersistStream pPersistStream = pLayer as IPersistStream; pPersistStream.Load(pStream); pLayer = pPersistStream as ILayer; } return(pLayer); }
public bool GetLayerFormDataset(IDataset pDataset, Collection pLayersColl) { try { if (pDataset == null) { return(false); } if (pLayersColl == null) { return(false); } if (pDataset.Type == esriDatasetType.esriDTFeatureDataset) { IFeatureLayer item = null; IFeatureClassContainer container = pDataset as IFeatureClassContainer; if (container.ClassCount > 0) { int classIndex = 0; IFeatureClass class2 = null; for (classIndex = 0; classIndex <= (container.ClassCount - 1); classIndex++) { class2 = container.get_Class(classIndex); if (class2.FeatureType == esriFeatureType.esriFTAnnotation) { item = new FDOGraphicsLayerClass() as IFeatureLayer; } else if (class2.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { item = new CoverageAnnotationLayerClass() as IFeatureLayer; } else if (class2.FeatureType == esriFeatureType.esriFTDimension) { item = new DimensionLayerClass() as IFeatureLayer; } else { item = new FeatureLayerClass(); } item.FeatureClass = class2; item.Name = pDataset.Name + " " + class2.AliasName; pLayersColl.Add(item, item.Name, null, null); } } } else if (pDataset.Type == esriDatasetType.esriDTFeatureClass) { IFeatureLayer layer2 = null; IFeatureClass class3 = pDataset as IFeatureClass; if (class3.FeatureType == esriFeatureType.esriFTAnnotation) { layer2 = new FDOGraphicsLayerClass() as IFeatureLayer; } else if (class3.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { layer2 = new CoverageAnnotationLayerClass() as IFeatureLayer; } else if (class3.FeatureType == esriFeatureType.esriFTDimension) { layer2 = new DimensionLayerClass() as IFeatureLayer; } else { layer2 = new FeatureLayerClass(); } layer2.FeatureClass = class3; layer2.Name = class3.AliasName; pLayersColl.Add(layer2, layer2.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTPlanarGraph) { Interaction.MsgBox("暂时不支持 Planar Graph 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTGeometricNetwork) { Interaction.MsgBox("暂时不支持 Geometric Network 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTopology) { Interaction.MsgBox("暂时不支持 Topology 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTText) { Interaction.MsgBox("暂时不支持 Text Dataset 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTable) { Interaction.MsgBox("暂时不支持 Table Dataset 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRelationshipClass) { Interaction.MsgBox("暂时不支持 Relationship Class 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRasterDataset) { IRasterDataset rasterDataset = pDataset as IRasterDataset; IRasterLayer layer3 = new RasterLayerClass(); layer3.CreateFromDataset(rasterDataset); layer3.Name = pDataset.Name; pLayersColl.Add(layer3, layer3.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTRasterBand) { Interaction.MsgBox("暂时不支持 Raster Band 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTTin) { ITinLayer layer4 = new TinLayerClass { Dataset = pDataset as ITin, Name = pDataset.Name }; pLayersColl.Add(layer4, layer4.Name, null, null); } else if (pDataset.Type == esriDatasetType.esriDTCadDrawing) { Interaction.MsgBox("暂时不支持 Cad Drawing 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else if (pDataset.Type == esriDatasetType.esriDTRasterCatalog) { Interaction.MsgBox("暂时不支持 Raster Catalog 格式的数据。", MsgBoxStyle.Information, "数据格式不支持"); } else { Interaction.MsgBox("无法识别的数据格式。", MsgBoxStyle.Information, "数据格式错误"); } return(true); } catch (Exception exception) { this.mErrOpt.ErrorOperate(this.mSubSysName, "FunFactory.LayerFun", "GetLayerFormDataset", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", ""); return(false); } }
public override void OnClick() { //当前所有范围面,用来设置数据显示范围 IFeatureLayer pRangeFeatLay = null; IFeatureLayer pFeatureLayer = null; IFeatureClass pFeatureClass = null; Exception exError = null; //如果工作库数据group图层已经存在 就不让再加了 for (int i = 0; i < _AppHk.MapControl.LayerCount; i++) { ILayer mLayer = _AppHk.MapControl.get_Layer(i); if (mLayer is IGroupLayer) { if (mLayer.Name == "现势库数据") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据图层已经存在。"); return; } } } Plugin.Application.IAppFormRef pArrForm = _AppHk as Plugin.Application.IAppFormRef; pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.WaitCursor; //获取更新库体数据集 if (_AppHk.DBXmlDocument == null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; return; } XmlNode DBNode = _AppHk.DBXmlDocument.SelectSingleNode(".//项目工程"); if (DBNode == null) { return; } XmlElement DBElement = DBNode as XmlElement; XmlElement objNode = DBNode.SelectSingleNode(".//目标数据连接") as XmlElement; SysCommon.Gis.SysGisDataSet pObjSysGisDataSet = new SysCommon.Gis.SysGisDataSet(); pObjSysGisDataSet.SetWorkspace(objNode.GetAttribute("服务器"), objNode.GetAttribute("服务名"), objNode.GetAttribute("数据库"), objNode.GetAttribute("用户"), objNode.GetAttribute("密码"), objNode.GetAttribute("版本"), out exError); if (exError != null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "现势库数据连接失败,请确认"); return; } //获取数据显示范围 IGeometry pGeometry = null; pRangeFeatLay = ModDBOperator.GetMapFrameLayer("zone", _AppHk.MapControl, "示意图") as IFeatureLayer; if (pRangeFeatLay == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!"); return; } //判断当前是否有示提交的范围面 IFeatureCursor pFeatureCursor = pRangeFeatLay.Search(null, false); if (pFeatureCursor != null) { IFeature pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) { if (pGeometry == null) { pGeometry = pFeature.Shape; } else { pGeometry = (pGeometry as ITopologicalOperator).Union(pFeature.Shape); } pFeature = pFeatureCursor.NextFeature(); } } if (pGeometry == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获取数据显示范围!"); return; } //获取所有更新数据的FeatureClass IFeatureDataset pFeaDataset = pObjSysGisDataSet.GetFeatureDataset("c_njtdt", out exError);// 这个地方要素集的名称是写死的 暂时没有办法获得工作库的信息 需要修改 陈新伟 20091211 if (pFeaDataset == null) { pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "无法获得指定的现势库数据【C_NJTDT】。");//yjl20120503 return; } //符号化类 //SymbolLyr symLyr = new SymbolLyr(); //@@@ List <IDataset> listFC = pObjSysGisDataSet.GetFeatureClass(pFeaDataset); IGroupLayer pLayer = new GroupLayerClass(); pLayer.Name = "现势库数据"; foreach (IDataset pDataset in listFC) { pFeatureClass = pDataset as IFeatureClass; if (pFeatureClass == null) { continue; } pFeatureLayer = new FeatureLayerClass(); if (pFeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = pFeatureClass; pFeatureLayer.Name = pDataset.Name; pFeatureLayer.ScaleSymbols = false; //pFeatureLayer = ModDBOperator.GetSelectionLayer(pTempFeatureLayer, pGeometry); //if (pFeatureLayer == null) return; //符号化图层 //symLyr.SymbolFeatrueLayer(pFeatureLayer); //@@@ //收缩图例 if (pFeatureClass.FeatureType == esriFeatureType.esriFTSimple) { ModDBOperator.ExpandLegend(pFeatureLayer as ILayer, false); } pLayer.Add(pFeatureLayer as ILayer); } _AppHk.MapControl.Map.AddLayer(pLayer); pObjSysGisDataSet.CloseWorkspace(true); //对图层进行排序 SysCommon.Gis.ModGisPub.LayersCompose(pLayer); //将图幅结合表置于底层 //ModDBOperator.MoveMapFrameLayer(_AppHk.MapControl); _AppHk.TOCControl.Update(); _AppHk.MapControl.Map.ClipGeometry = pGeometry; _AppHk.MapControl.ActiveView.Refresh(); pArrForm.MainForm.Cursor = System.Windows.Forms.Cursors.Default; }
//cyf 2011065 modify public override void OnClick() { Exception err = null; /////获取工程项目名称 DevComponents.AdvTree.Node ProjectNode = new DevComponents.AdvTree.Node(); ProjectNode = m_Hook.ProjectTree.SelectedNode; while (ProjectNode.Parent != null) { ProjectNode = ProjectNode.Parent; } //cyf 20110625 add: DevComponents.AdvTree.Node DBNode = new DevComponents.AdvTree.Node(); //数据库树节点 //获取数据库节点 DBNode = m_Hook.ProjectTree.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(); //数据集树节点 #region 获取数据集节点 if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库" { //获取数据集节点 DtSetNode = m_Hook.ProjectTree.SelectedNode; while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "FD") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "FD") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } else if (DBNode.Text == "栅格数据库") { //cyf 20110626 add:获取栅格数据库图层节点 DtSetNode = m_Hook.ProjectTree.SelectedNode; if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC") { while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RC") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "RC") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD") { while (DtSetNode.Parent != null && DtSetNode.DataKeyString != "RD") { DtSetNode = DtSetNode.Parent; } if (DtSetNode.DataKeyString != "RD") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集节点失败!"); return; } } //end } #endregion XmlElement elementTemp = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; IWorkspace TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } //cyf 20110625 modify ILayer player = null; //ILayer player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + ProjectNode.Text); if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text); } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text); } //cyf 20110626 add:添加获取栅格数据图层 else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "RC" || m_Hook.ProjectTree.SelectedNode.DataKeyString == "RD") { //获取栅格数据图层 player = ModDBOperator.GetGroupLayer(m_Hook.MapControl, DtSetNode.Text + "_" + ProjectNode.Text); } //end if (player != null) { m_Hook.MapControl.Map.DeleteLayer(player); m_Hook.TOCControl.Update(); } //end IGroupLayer pGroupLayer = new GroupLayerClass(); //cyf 20110625 if (DBNode.Text == "现势库" || DBNode.Text == "历史库" || DBNode.Text == "临时库") //.DataKeyString == "现势库" { /////////若为历史库管理状态退出该状态,加载现势库 m_Hook.MapControl.Map.ClearLayers(); Plugin.Interface.ICommandRef HisBaseCommand = null; bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand); if (GetSeccess) { HisCommand = HisBaseCommand as ControlsDBHistoryManage; if (HisCommand.Checked) { HisCommand.IsHistory = false;//判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作 HisCommand.OnClick(); } } #region 加载数据 SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace); //cyf 20110625 modify IFeatureDataset featureDataset = null; //数据集 if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { featureDataset = sysGisDataset.GetFeatureDataset(m_Hook.ProjectTree.SelectedNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败,请检查该数据集是否存在!"); return; } pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text; } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { featureDataset = sysGisDataset.GetFeatureDataset(DtSetNode.Text, out err); if (err != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!"); return; } pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text; } //end List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset); //遍历要素类,加载图层 string dbType = ""; string userName = "";//用户名 userName = elementTemp.GetAttribute("用户"); dbType = elementTemp.GetAttribute("类型"); 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; if (dbType.Trim().ToUpper() == "SDE") { //cyf 20110706 modify:修改为不去掉用户名 changed by xisheng 0906 去掉用户名 if (dataset.Name.ToUpper().Contains(userName.Trim().ToUpper())) { //SDE用户图层名去掉用户名 pFeatureLayer.Name = dataset.Name.Substring(userName.Trim().Length + 1); } else { pFeatureLayer.Name = dataset.Name; } //end } else { pFeatureLayer.Name = dataset.Name; } //cyf 20110625 modify if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FC") { //加载指定的图层 if (m_Hook.ProjectTree.SelectedNode.Text != pFeatureLayer.Name) { continue; } } else if (m_Hook.ProjectTree.SelectedNode.DataKeyString == "FD") { //加载具备权限的图层 XmlElement feaclsElem = null; try { feaclsElem = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { } if (feaclsElem != null) { if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name)) { //若不具备数据权限,则不进行加载 continue; } } } //end pGroupLayer.Add(pFeatureLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); #endregion } //else if (DBNode.Text == "历史库") //{ // //历史库加载 // //ModDBOperator.WriteLog("GetCommand"); // Plugin.Interface.ICommandRef HisBaseCommand = null; // bool GetSeccess = Plugin.ModuleCommon.DicCommands.TryGetValue("GeoDBATool.ControlsDBHistoryManage", out HisBaseCommand); // if (GetSeccess) // { // HisCommand = HisBaseCommand as ControlsDBHistoryManage; // //判断是不是历史库点的加载,若是现势库就卸载掉历史库,若是历史库就不操作 // HisCommand.IsHistory = true; // HisCommand.OnClick(); // if (HisCommand.MyControlHistoryBar != null) // { // string HisDBType = elementTemp.GetAttribute("类型"); // string[] strTemp = new string[] { elementTemp.GetAttribute("服务器"), elementTemp.GetAttribute("服务名"), elementTemp.GetAttribute("数据库"), elementTemp.GetAttribute("用户"), elementTemp.GetAttribute("密码"), elementTemp.GetAttribute("版本") }; // HisCommand.MyControlHistoryBar.AddHistoryData(strTemp, HisDBType); // } // } //} //加载sde数据后,注册版本 //if (dbType.Trim().ToUpper() == "SDE") //{ // IDataset pFeaDt = featureDataset as IDataset; // if (pFeaDt != null) // { // IVersionedObject pVerObj = pFeaDt as IVersionedObject; // if (!pVerObj.IsRegisteredAsVersioned) // { // //注册版本 // pVerObj.RegisterAsVersioned(true); // } // else // { // pVerObj.RegisterAsVersioned(false); // } // } //} else if (DBNode.Text == "栅格数据库") { //栅格数据加载,分为两种情况:栅格数据集、栅格编目 //cyf 20110625 modify pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.Text + "_" + ProjectNode.Text; //end string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型"); elementTemp = (DBNode.Tag as XmlElement).SelectSingleNode(".//连接信息") as XmlElement; //cyf 20110626 TempWorkSpace = ModDBOperator.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); return; } IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx; if (pRasterWS == null) { return; } //string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称"); string feaclsName = m_Hook.ProjectTree.SelectedNode.Text; try { if (rasterDBType.Trim() == "栅格编目") { //栅格编目数据加载 IRasterCatalog pRasterCatalog = pRasterWS.OpenRasterCatalog(feaclsName); IGdbRasterCatalogLayer pGDBRCLayer = new GdbRasterCatalogLayerClass(); if (!pGDBRCLayer.Setup(pRasterCatalog as ITable)) { return; } IFeatureLayer mFeaLayer = pGDBRCLayer as IFeatureLayer; pGroupLayer.Add(mFeaLayer as ILayer); //IFeatureClass pFeaCls = pRasterCatalog as IFeatureClass; //if (pFeaCls == null) return; //IFeatureCursor pFeaCursor=pFeaCls.Search(null,false); //if(pFeaCursor==null) return; //IFeature pFea=pFeaCursor.NextFeature(); //while (pFea != null) //{ // IRasterCatalogItem pRCItem = pFea as IRasterCatalogItem; // IRasterDataset pRasterDt = pRCItem.RasterDataset; // IRasterLayer mRasterLayer = new RasterLayerClass(); // mRasterLayer.CreateFromDataset(pRasterDt); // if (mRasterLayer == null) return; // pGroupLayer.Add(mRasterLayer as ILayer); // pFea = pFeaCursor.NextFeature(); // //IFeatureLayer pFeaLayer = new FeatureLayerClass(); // //pFeaLayer.FeatureClass = pFeaCls as IFeatureClass; // //pFeaLayer.Name = feaclsName; // //pGroupLayer.Add(pFeaLayer as ILayer); //} } else if (rasterDBType.Trim() == "栅格数据集") { //栅格数据集加载 IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName); //IRasterPyramid pRasterPyramid = pRasterDataset as IRasterPyramid; //if(!pRasterPyramid.Present) //{ // if (SysCommon.Error.ErrorHandle.ShowFrmInformation("是", "否", "未构建金字塔,是否构建金字塔?")) // { // pRasterPyramid.Create(); // } //} IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); if (pRasterLayer == null) { return; } pGroupLayer.Add(pRasterLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); } catch (Exception e) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(e, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(e, null, DateTime.Now); } //******************************************************************** return; } } //对图层进行排序 SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl); //符号化 去掉加载的符号化 20111025 席胜 //GeoUtilities.ControlsRenderLayerByMxd RenderLayerByMxd = new GeoUtilities.ControlsRenderLayerByMxd(); //RenderLayerByMxd.OnCreate(m_Hook); //RenderLayerByMxd.OnClick(); }
public static void AddDataset(IBasicMap pMap, IDataset pDataset, string dsName) { IFeatureLayer fDOGraphicsLayerClass; IFeatureClass j; IFeatureLayer featureLayerClass; if (dsName == null) { dsName = ""; } switch (pDataset.Type) { case esriDatasetType.esriDTFeatureDataset: { IEnumDataset subsets = pDataset.Subsets; subsets.Reset(); for (IDataset i = subsets.Next(); i != null; i = subsets.Next()) { MapHelper.AddDataset(pMap, i, dsName); } return; } case esriDatasetType.esriDTFeatureClass: { IFeatureClass idataset0 = (IFeatureClass)pDataset; if (idataset0.FeatureType == esriFeatureType.esriFTAnnotation) { fDOGraphicsLayerClass = new FDOGraphicsLayerClass(); try { fDOGraphicsLayerClass.FeatureClass = idataset0; fDOGraphicsLayerClass.Name = string.Concat(dsName, idataset0.AliasName); pMap.AddLayer(fDOGraphicsLayerClass); return; } catch (Exception exception) { exception.ToString(); return; } } else if (idataset0.FeatureType != esriFeatureType.esriFTDimension) { fDOGraphicsLayerClass = new FeatureLayerClass() { FeatureClass = idataset0, Name = string.Concat(dsName, idataset0.AliasName) }; pMap.AddLayer(fDOGraphicsLayerClass); return; } else { fDOGraphicsLayerClass = new DimensionLayerClass() { FeatureClass = idataset0, Name = string.Concat(dsName, idataset0.AliasName) }; pMap.AddLayer(fDOGraphicsLayerClass); return; } break; } case esriDatasetType.esriDTPlanarGraph: case esriDatasetType.esriDTText: case esriDatasetType.esriDTRelationshipClass: { return; } case esriDatasetType.esriDTGeometricNetwork: { IGeometricNetwork geometricNetwork = pDataset as IGeometricNetwork; if (geometricNetwork == null) { return; } IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge]; classesByType.Reset(); for (j = classesByType.Next(); j != null; j = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = j, Name = string.Concat(dsName, (j as IDataset).Name) }; pMap.AddLayer(featureLayerClass); } return; } case esriDatasetType.esriDTTopology: { ITopologyLayer topologyLayerClass = new TopologyLayerClass() { Topology = pDataset as ITopology }; (topologyLayerClass as ILayer).Name = string.Concat(dsName, pDataset.Name); pMap.AddLayer(topologyLayerClass as ILayer); return; } case esriDatasetType.esriDTTable: { try { IRasterCatalogTable rasterCatalogTableClass = new RasterCatalogTable() { Table = (ITable)pDataset }; rasterCatalogTableClass.Update(); IRasterCatalogLayer rasterCatalogLayerClass = new RasterCatalogLayerClass(); rasterCatalogLayerClass.Create(rasterCatalogTableClass); rasterCatalogLayerClass.Name = string.Concat(dsName, pDataset.BrowseName); pMap.AddLayer(rasterCatalogLayerClass); return; } catch { try { IStandaloneTableCollection ibasicMap0 = pMap as IStandaloneTableCollection; IPropertySet connectionProperties = pDataset.Workspace.ConnectionProperties; bool flag = false; int num = 0; while (true) { if (num < ibasicMap0.StandaloneTableCount) { ITable table = ibasicMap0.StandaloneTable[num].Table; if ( !connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == pDataset.Name)) { num++; } else { flag = true; break; } } else { break; } } if (!flag) { ibasicMap0.AddStandaloneTable(new StandaloneTableClass() { Table = pDataset as ITable }); } } catch (Exception exception1) { Logger.Current.Write(exception1.Message, LogLevel.Error, null); } return; } break; } case esriDatasetType.esriDTRasterDataset: case esriDatasetType.esriDTRasterBand: { IRasterLayer rasterLayerClass = new RasterLayerClass(); rasterLayerClass.CreateFromDataset((IRasterDataset)pDataset); rasterLayerClass.Name = string.Concat(dsName, pDataset.Name); pMap.AddLayer(rasterLayerClass); return; } case esriDatasetType.esriDTTin: { ITinLayer tinLayerClass = new TinLayerClass() { Dataset = (ITin)pDataset, Name = string.Concat(dsName, pDataset.Name) }; pMap.AddLayer(tinLayerClass); return; } case esriDatasetType.esriDTCadDrawing: { ICadLayer cadLayerClass = new CadLayerClass() { CadDrawingDataset = pDataset as ICadDrawingDataset, Name = pDataset.Name }; pMap.AddLayer(cadLayerClass); return; } default: { return; } } }
public static bool AddDataset(ref IBasicMap pBasicMap, IDatasetName pDatasetName, List <IDataset> m_DatasetCol, bool blnAddData) { bool functionReturnValue = false; functionReturnValue = false; ////如果是特征数据集,则添加里边的所有要素类 IFeatureDataset pFeatDS = default(IFeatureDataset); IEnumDataset pEnumDataSet = default(IEnumDataset); IDataset pDataset = default(IDataset); IFeatureClass pFeatCls = default(IFeatureClass); IFeatureLayer pFeatLayer = default(IFeatureLayer); IName pName = default(IName); ILayer pLayer = default(ILayer); ITopologyLayer pTopoLayer = default(ITopologyLayer); //Dim pEnumLyr As IEnumLayer ITinWorkspace pTinWS = default(ITinWorkspace); IEnumFeatureClass pEnumFeatCls = null; IRasterCatalogDisplayProps pRasterCatalogPro = default(IRasterCatalogDisplayProps); //WHFErrorHandle.clsErrorHandle pfrmError = new WHFErrorHandle.clsErrorHandle(); if (pDatasetName is IFeatureDatasetName) { pName = (IName)pDatasetName; pFeatDS = (IFeatureDataset)pName.Open(); pEnumDataSet = pFeatDS.Subsets; pDataset = pEnumDataSet.Next(); m_DatasetCol.Add(pDataset); if (pDataset == null) { return(functionReturnValue); } ////根据数据集的类型,添加特征数据集中的所有要素类(拓扑,一般的,栅格目录,网络) while ((pDataset != null)) { if (pDataset.Type == esriDatasetType.esriDTFeatureClass) { pFeatLayer = null; if (pFeatLayer == null) { pFeatLayer = new FeatureLayer(); pFeatCls = (IFeatureClass)pDataset; pFeatLayer.Name = pFeatCls.AliasName; pFeatLayer.FeatureClass = pFeatCls; } if (pDataset.Type == esriDatasetType.esriDTRasterCatalog) { // Dim pRaster } // pSelectedCln.Add(pFeatLayer) } else if (pDataset.Type == esriDatasetType.esriDTTopology) { pTopoLayer = new TopologyLayerClass(); pTopoLayer.Topology = (ITopology)pDataset; pLayer = (ILayer)pTopoLayer; pLayer.Name = pDataset.Name; //pSelectedCln.Add(pFeatLayer) } pDataset = pEnumDataSet.Next(); } functionReturnValue = true; ////添加拓扑图层 } else if (pDatasetName is ITopologyName) { ITopology pTopo = null; pName = (IName)pDatasetName; pDataset = (IDataset)pName.Open(); pTopoLayer = new TopologyLayerClass(); pTopoLayer.Topology = (ITopology)pDataset; pLayer = (ILayer)pTopoLayer; pLayer.Name = pDataset.Name; m_DatasetCol.Add(pDataset); if (blnAddData == true) { //pMap.AddLayer pLayer AddLyrToBasicMap(ref pBasicMap, pLayer); //SortLayer(pBasicMap, pLayer) } //pSelectedCln.Add(pLayer) //if (pfrmError.DisplayInformation("要把拓扑里边的所有要素类也添加到当前地图中吗?") == true) if (MessageBoxEx.Show("要把拓扑里边的所有要素类也添加到当前地图中吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK) { IFeatureClassContainer pFeatClsContainer = default(IFeatureClassContainer); pFeatClsContainer = (IFeatureClassContainer)pTopo; pEnumFeatCls = pFeatClsContainer.Classes; pFeatCls = pEnumFeatCls.Next(); pFeatLayer = new FeatureLayer(); ////循环拓扑中的每个要素类,并添加到当前地图中 while ((pFeatCls != null)) { pFeatLayer.FeatureClass = pFeatCls; pFeatLayer.Name = pFeatCls.AliasName; if (blnAddData == true) { //pMap.AddLayer pFeatLayer AddLyrToBasicMap(ref pBasicMap, pFeatLayer); //SortLayer(pBasicMap, pFeatLayer) } //pSelectedCln.Add(pFeatLayer) pFeatCls = pEnumFeatCls.Next(); } } functionReturnValue = true; ////添加网络数据 } else if (pDatasetName is IGeometricNetworkName) { INetworkCollection pNetworkCollection = default(INetworkCollection); IGeometricNetwork pGeometricNetwork = default(IGeometricNetwork); int i = 0; int j = 0; IDataset pGeoDataset = default(IDataset); pName = (IName)pDatasetName; pGeoDataset = (IDataset)pName.Open(); m_DatasetCol.Add(pGeoDataset); if (pGeoDataset.Type == esriDatasetType.esriDTGeometricNetwork) { ////这里对网络数据进行处理 IFeatureClassContainer pFeatureClassContainer = default(IFeatureClassContainer); pGeometricNetwork = (IGeometricNetwork)pGeoDataset; pFeatureClassContainer = (IFeatureClassContainer)pGeometricNetwork; for (i = 0; i <= pFeatureClassContainer.ClassCount - 1; i++) { pFeatCls = pFeatureClassContainer.get_Class(i); pFeatLayer = new FeatureLayer(); pFeatLayer.Name = pFeatCls.AliasName; pFeatLayer.FeatureClass = pFeatCls; if (blnAddData == true) { // pMap.AddLayer pFeatLayer AddLyrToBasicMap(ref pBasicMap, pFeatLayer); //SortLayer(pBasicMap, pFeatLayer) } //pSelectedCln.Add(pFeatLayer) } } else { pFeatDS = (IFeatureDataset)pGeoDataset; pNetworkCollection = (INetworkCollection)pFeatDS; ////如果是用户选择一个网络技术打开的话,肯定只有一个网络在里边,其实 ////可以不需要循环,而用GeometricNetwork(0)代替循环 for (j = 0; j <= pNetworkCollection.GeometricNetworkCount - 1; j++) { pGeometricNetwork = pNetworkCollection.get_GeometricNetwork(j); for (i = 0; i <= 3; i++) { switch (i) { case 0: pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTSimpleJunction); break; case 1: pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTSimpleEdge); break; case 2: pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTComplexJunction); break; case 3: pEnumFeatCls = pGeometricNetwork.get_ClassesByType(esriFeatureType.esriFTComplexEdge); break; } pFeatCls = pEnumFeatCls.Next(); while ((pFeatCls != null)) { pFeatLayer = new FeatureLayer(); pFeatLayer.Name = pFeatCls.AliasName; pFeatLayer.FeatureClass = pFeatCls; pFeatCls = pEnumFeatCls.Next(); if (blnAddData == true) { //pMap.AddLayer pFeatLayer AddLyrToBasicMap(ref pBasicMap, pFeatLayer); //SortLayer(pBasicMap, pFeatLayer) } // pSelectedCln.Add(pFeatLayer) functionReturnValue = true; } } } } ////添加栅格目录,并设置为显示最新时相 } else if (pDatasetName is IRasterCatalogName) { pName = (IName)pDatasetName; pDataset = (IDataset)pName.Open(); m_DatasetCol.Add(pDataset); pFeatLayer = new GdbRasterCatalogLayerClass(); pFeatLayer.FeatureClass = (IFeatureClass)pDataset; pFeatLayer.Name = pDataset.Name; //'//如果是SDE的栅格目录 //If pFeatLayer.DataSourceType = "SDE Raster Catalog" Then // Dim pFeatLayerDef As IFeatureLayerDefinition // pFeatLayerDef = pFeatLayer // '//设置最初显示地图范围内最近时相的数据 // pFeatLayerDef.DefinitionExpression = "objectid in (select objectid from" & vbNewLine & _ // "(select a.objectid, b.receive_date,rank()" & vbNewLine & _ // "over(partition by a.name,a.resolution order by b.receive_date desc) as cid" & vbNewLine & _ // "from " & pFeatLayer.Name & " a, sj_t_tense b" & vbNewLine & _ // "where a.tense = b.tense" & vbNewLine & "and b.online_state = 1) t2" & vbNewLine & _ // "where " & pFeatLayer.Name & ".objectid=t2.objectid and t2.cid = 1)" //End If ////设置当栅格目录中的图幅在地图上超过16个的时候,以格网来显示,而不显示栅格本身 pRasterCatalogPro = (IRasterCatalogDisplayProps)pFeatLayer; ////不用数量来控制了,而以比例尺来控制 pRasterCatalogPro.DisplayRasters = 16; pRasterCatalogPro.UseScale = true; ////设置一个比例,在此临界栅格数据将会在框架显示与实际栅格显示之间转换 pRasterCatalogPro.TransitionScale = 50000; if (blnAddData == true) { //pMap.AddLayer pFeatLayer AddLyrToBasicMap(ref pBasicMap, pFeatLayer); //'SortLayer(pBasicMap, pFeatLayer) } //pSelectedCln.Add(pFeatLayer) functionReturnValue = true; // 陈昉 2009-3-22 添加单一的RasterDataset } else if (pDatasetName is IRasterDatasetName) { IRasterLayer pRasterLayer = default(IRasterLayer); pName = (IName)pDatasetName; pDataset = (IDataset)pName.Open(); m_DatasetCol.Add(pDataset); pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pDataset as IRasterDataset); pRasterLayer.Name = pDataset.Name; AddLyrToBasicMap(ref pBasicMap, pRasterLayer); functionReturnValue = true; ////添加TIN图层 } else if (pDatasetName is ITinWorkspace) { pTinWS = (ITinWorkspace)pDatasetName; ITinLayer pTinLyr = default(ITinLayer); pTinLyr = new TinLayer(); pTinLyr.Dataset = pTinWS.OpenTin(pDatasetName.Name); pTinLyr.Name = pDatasetName.Name; if (blnAddData == true) { //pMap.AddLayer pTinLyr AddLyrToBasicMap(ref pBasicMap, pTinLyr); //SortLayer(pBasicMap, pTinLyr) } //pSelectedCln.Add(pTinLyr) functionReturnValue = true; ////添加一般的要素类,未写完。。。。。。 } else { pName = (IName)pDatasetName; pDataset = (IDataset)pName.Open(); pFeatCls = (IFeatureClass)pDataset; m_DatasetCol.Add(pDataset); if (pFeatCls.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatLayer = new FDOGraphicsLayerClass(); } else if (pFeatCls.FeatureType == esriFeatureType.esriFTDimension) { pFeatLayer = new DimensionLayerClass(); } else { pFeatLayer = new FeatureLayer(); } //印骅 20081205 添加"Not" if ((pFeatLayer != null)) { //pFeatLayer.Name = pDataset.Name pFeatLayer.Name = pFeatCls.AliasName; pFeatLayer.FeatureClass = (IFeatureClass)pDataset; } if (blnAddData == true) { //pMap.AddLayer pFeatLayer AddLyrToBasicMap(ref pBasicMap, pFeatLayer); //SortLayer(pBasicMap, pFeatLayer) } //pSelectedCln.Add(pFeatLayer) functionReturnValue = true; } return(functionReturnValue); //'//添加Coverage图层 //ElseIf vItem.SmallIcon = "Coverage" Then //AddSelectedLayer = ADDCoverageLayer(pMap, pCurrentFilePath.Path, _ //vItem.Text, pSelectedCln, blnAddData) }
public void LoadData(IList ilist_0) { IEnumDataset subsets; IDataset j; string str; IFeatureClass dataset; IFeatureLayer cadFeatureLayerClass; ITopologyLayer topologyLayerClass; IEnumFeatureClass classes; IFeatureClass m; IFeatureClass n; IFeatureLayer featureLayerClass; List <object> objs = new List <object>(); foreach (object ilist0 in ilist_0) { if (ilist0 is IGxDataset) { if ((ilist0 as IGxDataset).Type != esriDatasetType.esriDTFeatureDataset) { objs.Add(ilist0); } else { IEnumGxObject children = (ilist0 as IGxObjectContainer).Children; children.Reset(); for (IGxObject i = children.Next(); i != null; i = children.Next()) { objs.Add(i); } } } else if (!(ilist0 is IDataset)) { objs.Add(ilist0); } else { if ((ilist0 as IDataset).Type != esriDatasetType.esriDTFeatureDataset) { continue; } subsets = (ilist0 as IDataset).Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { objs.Add(j); } } } ProcessAssist processAssist = new ProcessAssist(); processAssist.InitProgress(); processAssist.SetMaxValue(objs.Count); processAssist.SetMessage("正在加载数据,请稍候..."); processAssist.Start(); try { ILayer layer = null; IMap map = this.GetMap(); this.list_0 = new List <ILayer>(); List <string> strs = new List <string>(); IEnvelope envelope = null; IDataset item = null; IGxDataset gxDataset = null; for (int k = 0; k < objs.Count; k++) { string name = ""; if (objs[k] is IGxObject) { name = (objs[k] as IGxObject).Name; } else if (objs[k] is IDataset) { name = (objs[k] as IDataset).Name; } bool flag = true; str = string.Format("加载图层[{0}],第{1}/{2}个", name, k + 1, objs.Count); processAssist.Increment(1); processAssist.SetMessage(str); if (objs[k] is IGxLayer) { layer = (objs[k] as IGxLayer).Layer; if (layer is IGeoDataset && !SpatialReferenctOperator.ValideFeatureClass(layer as IGeoDataset)) { strs.Add(layer.Name); flag = false; } this.AddLayer(map, layer, ref envelope, flag); } else if (!(objs[k] is IGxAGSObject)) { if (objs[k] is IGxDataset) { gxDataset = objs[k] as IGxDataset; item = gxDataset.Dataset; } else if (ilist_0[k] is IDataset) { item = objs[k] as IDataset; } if (item != null) { if (item is IGeoDataset) { flag = SpatialReferenctOperator.ValideFeatureClass(item as IGeoDataset); } if (item.Type == esriDatasetType.esriDTFeatureClass) { dataset = (IFeatureClass)item; if ((gxDataset as IGxObject).Category.IndexOf("CAD") != -1) { if (dataset.FeatureType != esriFeatureType.esriFTCoverageAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass(); } else { cadFeatureLayerClass = new CadAnnotationLayerClass(); } cadFeatureLayerClass.FeatureClass = dataset; cadFeatureLayerClass.Name = dataset.AliasName; } else if (dataset.FeatureType == esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else if (dataset.FeatureType != esriFeatureType.esriFTDimension) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new DimensionLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } if (!flag) { strs.Add(cadFeatureLayerClass.Name); } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTCadDrawing) { if ((gxDataset as IGxObject).Category != "CAD绘图") { IEnumGxObject enumGxObject = (gxDataset as IGxObjectContainer).Children; enumGxObject.Reset(); for (IGxDataset l = enumGxObject.Next() as IGxDataset; l != null; l = enumGxObject.Next() as IGxDataset) { dataset = l.Dataset as IFeatureClass; if (dataset != null) { if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new CadFeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; } flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag1 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag1; if (!flag1) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } } else { ICadLayer cadLayerClass = new CadLayerClass() { CadDrawingDataset = gxDataset.Dataset as ICadDrawingDataset, Name = gxDataset.Dataset.Name }; if (!flag) { strs.Add(cadLayerClass.Name); } this.AddLayer(map, cadLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTFeatureDataset) { subsets = item.Subsets; subsets.Reset(); for (j = subsets.Next(); j != null; j = subsets.Next()) { if (j.Type == esriDatasetType.esriDTFeatureClass) { dataset = j as IFeatureClass; if (dataset.FeatureType != esriFeatureType.esriFTAnnotation) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag2 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag2; if (!flag2) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } else { cadFeatureLayerClass = new FDOGraphicsLayerClass() { FeatureClass = dataset, Name = dataset.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag3 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag3; if (!flag3) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } else if (j.Type == esriDatasetType.esriDTTopology) { topologyLayerClass = new TopologyLayerClass() { Topology = j as ITopology }; (topologyLayerClass as ILayer).Name = j.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTTopology) { if (MessageBox.Show(string.Concat("是否将参加拓扑-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; flag = true; if (cadFeatureLayerClass is IGeoDataset) { bool flag4 = SpatialReferenctOperator.ValideFeatureClass(cadFeatureLayerClass as IGeoDataset); flag = flag4; if (!flag4) { strs.Add(cadFeatureLayerClass.Name); } } this.AddLayer(map, cadFeatureLayerClass, ref envelope, flag); } } topologyLayerClass = new TopologyLayerClass() { Topology = item as ITopology }; (topologyLayerClass as ILayer).Name = item.Name; this.AddLayer(map, topologyLayerClass as ILayer, ref envelope, true); } else if (item.Type == esriDatasetType.esriDTTin) { ITinLayer tinLayerClass = new TinLayerClass() { Dataset = (ITin)item, Name = item.Name }; flag = true; if (tinLayerClass is IGeoDataset) { bool flag5 = SpatialReferenctOperator.ValideFeatureClass(tinLayerClass as IGeoDataset); flag = flag5; if (!flag5) { strs.Add(tinLayerClass.Name); } } this.AddLayer(map, tinLayerClass, ref envelope, flag); } else if (item.Type == esriDatasetType.esriDTRasterCatalog) { IGdbRasterCatalogLayer gdbRasterCatalogLayerClass = null; gdbRasterCatalogLayerClass = new GdbRasterCatalogLayerClass(); if (gdbRasterCatalogLayerClass.Setup((ITable)(item as IRasterCatalog))) { bool flag6 = SpatialReferenctOperator.ValideFeatureClass(gdbRasterCatalogLayerClass as IGeoDataset); flag = flag6; if (!flag6) { strs.Add((gdbRasterCatalogLayerClass as ILayer).Name); } this.AddLayer(map, gdbRasterCatalogLayerClass as ILayer, ref envelope, flag); } } else if (!(item.Type == esriDatasetType.esriDTRasterDataset ? false : item.Type != esriDatasetType.esriDTRasterBand)) { bool flag7 = true; if (!((IRasterPyramid)item).Present) { if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt) { ((IRasterPyramid)item).Create(); } else if (this.m_pApp.PyramidPromptType == PyramidPromptType.AlwaysPrompt) { DialogResult dialogResult = BuildPyramidSet.Show(); if (dialogResult == DialogResult.Yes) { ((IRasterPyramid)item).Create(); } else if (dialogResult == DialogResult.Cancel) { flag7 = false; } } } if (flag7) { IRasterLayer rasterLayerClass = new RasterLayerClass() { Cached = true }; rasterLayerClass.CreateFromDataset((IRasterDataset)item); rasterLayerClass.Name = item.Name; bool flag8 = SpatialReferenctOperator.ValideFeatureClass(rasterLayerClass as IGeoDataset); flag = flag8; if (!flag8) { strs.Add(rasterLayerClass.Name); } this.AddLayer(map, rasterLayerClass, ref envelope, flag); } } else if (item.Type == esriDatasetType.esriDTTable) { try { IStandaloneTableCollection standaloneTableCollection = this.GetMap() as IStandaloneTableCollection; IPropertySet connectionProperties = item.Workspace.ConnectionProperties; bool flag9 = false; int num = 0; while (true) { if (num < standaloneTableCollection.StandaloneTableCount) { ITable table = standaloneTableCollection.StandaloneTable[num].Table; if (!connectionProperties.IsEqual((table as IDataset).Workspace.ConnectionProperties) || !((table as IDataset).Name == item.Name)) { num++; } else { flag9 = true; break; } } else { break; } } if (!flag9) { standaloneTableCollection.AddStandaloneTable(new StandaloneTableClass() { Table = item as ITable }); } } catch (Exception exception) { CErrorLog.writeErrorLog(this, exception, ""); } } else if (item.Type == esriDatasetType.esriDTGeometricNetwork) { IGeometricNetwork geometricNetwork = item as IGeometricNetwork; if (geometricNetwork != null) { IEnumFeatureClass classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexJunction]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTSimpleEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } classesByType = geometricNetwork.ClassesByType[esriFeatureType.esriFTComplexEdge]; classesByType.Reset(); for (n = classesByType.Next(); n != null; n = classesByType.Next()) { featureLayerClass = new FeatureLayerClass() { FeatureClass = n, Name = (n as IDataset).Name }; this.AddLayer(map, featureLayerClass, ref envelope, true); } } } else if (item.Type == esriDatasetType.esriDTNetworkDataset) { INetworkLayer networkLayerClass = new NetworkLayerClass() { NetworkDataset = item as INetworkDataset }; this.AddLayer(map, networkLayerClass as ILayer, ref envelope, true); if (MessageBox.Show(string.Concat("是否将参加网络要素集-", item.Name, "-的所有要素添加到地图中"), "添加拓扑层", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { classes = (item as IFeatureClassContainer).Classes; classes.Reset(); for (m = classes.Next(); m != null; m = classes.Next()) { cadFeatureLayerClass = new FeatureLayerClass() { FeatureClass = m, Name = m.AliasName }; this.AddLayer(map, cadFeatureLayerClass, ref envelope, true); } } } } } else { IMapServerLayer mapServerLayerClass = new MapServerLayerClass(); mapServerLayerClass.ServerConnect((objs[k] as IGxAGSObject).AGSServerObjectName, (objs[k] as IGxAGSObject).DefaultMapName); this.AddLayer(map, mapServerLayerClass as ILayer, ref envelope, false); } } processAssist.End(); bool layerCount = this.GetMap().LayerCount > 0; if (strs.Count > 0) { MessageBox.Show("警告:数据范围不一致。\r\n 一个或多个添加的图层范围与关联的空间坐标系范围不一致。请检查数据问题。存在问题图层信息请查看错误日志!", "管理平台", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); StringBuilder stringBuilder = new StringBuilder(); foreach (string str1 in strs) { if (stringBuilder.Length > 0) { stringBuilder.Append(","); } stringBuilder.Append(str1); } CErrorLog.writeErrorLog(stringBuilder, null, "图层范围不一致!"); } foreach (ILayer list0 in this.list_0) { list0.Visible = true; } if (layerCount && envelope != null) { IMap map1 = this.GetMap(); ISpatialReference spatialReference = map1.SpatialReference; if ((spatialReference is IUnknownCoordinateSystem || envelope.SpatialReference is IUnknownCoordinateSystem || envelope.SpatialReference == null ? false : spatialReference != null)) { envelope.Project(spatialReference); } (map1 as IActiveView).Extent = envelope; (map1 as IActiveView).Refresh(); } if (this.m_pApp != null) { this.m_pApp.MapDocumentChanged(); } else if (ApplicationRef.Application != null) { ApplicationRef.Application.MapDocumentChanged(); } } catch (Exception exception1) { str = exception1.ToString(); } if (this.onLoadCompleteHand_0 != null) { this.onLoadCompleteHand_0(); } }
private void method_0() { int featureCount = this.icoConvert_0.FeatureCount; GxVCTObject parent = this.Parent as GxVCTObject; frmProgressBar1 bar = new frmProgressBar1(); try { IFeatureLayer layer; IFeatureClass class2 = null; CoLayerType layerType = this.icoConvert_0.XpgisLayer.LayerType; string str = "Point"; switch (layerType) { case CoLayerType.Point: str = "Point"; break; case CoLayerType.Line: str = "line"; break; case CoLayerType.Region: str = "Polygon"; break; case CoLayerType.Annotation: str = "Text"; break; } ICoConvert convert = null; if (str != "Text") { convert = new ShapeLayerClass( parent.GetTemplatePath() + @"\" + this.icoConvert_0.XpgisLayer.Name + ".shp", str, this.icoConvert_0.XpgisLayer); } else { IFieldsEdit edit = null; edit = new FieldsClass(); foreach (ICoField field in this.icoConvert_0.XpgisLayer.Fields) { IFieldEdit field1 = new Field() as IFieldEdit; field1.Name_2 = field.Name; field1.AliasName_2 = field.AliasName; field1.DefaultValue_2 = field.DefaultValue; field1.Editable_2 = field.Enable; IFieldEdit edit2 = field1 as IFieldEdit; CoFieldType type = field.Type; switch (type) { case CoFieldType.整型: edit2.Type_2 = esriFieldType.esriFieldTypeInteger; break; case ((CoFieldType)2): case ((CoFieldType)6): case ((CoFieldType)7): break; case CoFieldType.浮点型: edit2.Type_2 = esriFieldType.esriFieldTypeSingle; edit2.Precision_2 = field.Precision; edit2.Scale_2 = field.Length; break; case CoFieldType.字符型: edit2.Type_2 = esriFieldType.esriFieldTypeString; edit2.Length_2 = field.Length; break; case CoFieldType.日期型: edit2.Type_2 = esriFieldType.esriFieldTypeDate; break; case CoFieldType.二进制: edit2.Type_2 = esriFieldType.esriFieldTypeBlob; break; default: if (type == CoFieldType.布尔型) { edit2.Type_2 = esriFieldType.esriFieldTypeInteger; } break; } edit.AddField(edit2); } class2 = this.method_2(parent.GetTemplateTextWorksoace() as IFeatureWorkspace, this.icoConvert_0.XpgisLayer.Name, esriFeatureType.esriFTAnnotation, esriGeometryType.esriGeometryPolygon, edit); convert = new GeodatabaseLayerClass(class2); } ConvertHander hander = new ConvertHander(); bar.Text = "打开数据"; bar.Show(); bar.progressBar1.Maximum = featureCount; bar.progressBar1.Value = 0; bar.Caption1.Text = "正在载入图层:" + this.icoConvert_0.XpgisLayer.AliasName + " [要素总数:" + featureCount.ToString() + "]"; hander.Convert(this.icoConvert_0, convert, bar.progressBar1); string name = this.icoConvert_0.XpgisLayer.Name; convert.Dispose(); if (class2 == null) { class2 = (parent.GetTemplateShapefile() as IFeatureWorkspace).OpenFeatureClass(name); } if (class2.FeatureType == esriFeatureType.esriFTAnnotation) { FDOGraphicsLayerClass class3 = new FDOGraphicsLayerClass { Cached = true }; layer = class3; layer.FeatureClass = class2; layer.Name = class2.AliasName; } else if (class2.FeatureType == esriFeatureType.esriFTDimension) { DimensionLayerClass class4 = new DimensionLayerClass { Cached = true }; layer = class4; layer.FeatureClass = class2; layer.Name = class2.AliasName; } else { FeatureLayerClass class5 = new FeatureLayerClass { Cached = true }; layer = class5; layer.FeatureClass = class2; layer.Name = class2.AliasName; } this.ilayer_0 = layer; bar.Close(); } catch (Exception) { } }
private void method_3(object object_0) { frmOpenFile file = new frmOpenFile { Text = "添加数据", AllowMultiSelect = true }; file.AddFilter(new MyGxFilterDatasets(), true); if (file.DoModalOpen() == DialogResult.OK) { IFeatureClass featureClass; IFeatureLayer layer; System.Windows.Forms.Cursor.Current = Cursors.WaitCursor; IArray array = new ArrayClass(); IArray items = file.Items; int index = 0; while (true) { if (index >= items.Count) { break; } IGxDataset dataset = items.get_Element(index) as IGxDataset; if (dataset != null) { IDataset dataset2 = dataset.Dataset; if (dataset2 != null) { if (dataset2.Type == esriDatasetType.esriDTFeatureClass) { featureClass = (IFeatureClass)dataset2; if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { layer = new FDOGraphicsLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); } else { IFDOGraphicsLayerFactory factory; if (dataset2.Type == esriDatasetType.esriDTCadDrawing) { IEnumGxObject children = (dataset as IGxObjectContainer).Children; children.Reset(); for (IGxDataset dataset3 = children.Next() as IGxDataset; dataset3 != null; dataset3 = children.Next() as IGxDataset) { featureClass = dataset3.Dataset as IFeatureClass; if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { factory = new FDOGraphicsLayerFactoryClass(); layer = (IFeatureLayer) factory.OpenGraphicsLayer( (IFeatureWorkspace)featureClass.FeatureDataset.Workspace, featureClass.FeatureDataset, featureClass.AliasName); } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); } } else if (dataset2.Type == esriDatasetType.esriDTFeatureDataset) { IFeatureClassContainer container = (IFeatureClassContainer)dataset2; index = 0; while (index < (container.ClassCount - 1)) { featureClass = container.get_Class(index); if (featureClass.FeatureType == esriFeatureType.esriFTAnnotation) { factory = new FDOGraphicsLayerFactoryClass(); layer = (IFeatureLayer) factory.OpenGraphicsLayer( (IFeatureWorkspace)featureClass.FeatureDataset.Workspace, featureClass.FeatureDataset, featureClass.AliasName); } else { layer = new FeatureLayerClass { FeatureClass = featureClass, Name = featureClass.AliasName }; } array.Add(layer); index++; } } else if (dataset2.Type == esriDatasetType.esriDTTin) { ITinLayer unk = new TinLayerClass { Dataset = (ITin)dataset2, Name = dataset2.Name }; array.Add(unk); } else if ((dataset2.Type == esriDatasetType.esriDTRasterDataset) || (dataset2.Type == esriDatasetType.esriDTRasterBand)) { bool flag = true; if (!((IRasterPyramid)dataset2).Present) { if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysBuildNoPrompt) { ((IRasterPyramid)dataset2).Create(); } else if (ApplicationRef.PyramidPromptType == PyramidPromptType.AlwaysPrompt) { switch (BuildPyramidSet.Show()) { case DialogResult.Yes: ((IRasterPyramid)dataset2).Create(); break; case DialogResult.Cancel: flag = false; break; } } } if (flag) { RasterLayerClass class3 = new RasterLayerClass { Cached = true }; IRasterLayer layer3 = class3; layer3.CreateFromDataset((IRasterDataset)dataset2); layer3.Name = dataset2.Name; array.Add(layer3); } } else if (dataset2.Type == esriDatasetType.esriDTTable) { try { IRasterCatalogTable pCatalog = new RasterCatalogTableClass { Table = (ITable)dataset2 }; pCatalog.Update(); IRasterCatalogLayer layer4 = new RasterCatalogLayerClass(); layer4.Create(pCatalog); layer4.Name = dataset2.BrowseName; array.Add(layer4); } catch { } } } } } index++; } int count = array.Count; ILayer layer5 = null; for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IRasterCatalogLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IRasterLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is ITinLayer) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if ((featureClass.ShapeType == esriGeometryType.esriGeometryPolygon) || (featureClass.ShapeType == esriGeometryType.esriGeometryEnvelope)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if (((((featureClass.ShapeType == esriGeometryType.esriGeometryLine) || (featureClass.ShapeType == esriGeometryType.esriGeometryBezier3Curve)) || ((featureClass.ShapeType == esriGeometryType.esriGeometryCircularArc) || (featureClass.ShapeType == esriGeometryType.esriGeometryEllipticArc))) || (featureClass.ShapeType == esriGeometryType.esriGeometryPath)) || (featureClass.ShapeType == esriGeometryType.esriGeometryPolyline)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (layer5 is IFeatureLayer) { layer = layer5 as IFeatureLayer; featureClass = layer.FeatureClass; if ((featureClass.ShapeType == esriGeometryType.esriGeometryMultipoint) || (featureClass.ShapeType == esriGeometryType.esriGeometryPoint)) { if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); count--; } } } for (index = count - 1; index >= 0; index--) { layer5 = array.get_Element(index) as ILayer; if (object_0 is IMap) { (object_0 as IMap).AddLayer(layer5); } else if (object_0 is IGroupLayer) { (object_0 as IGroupLayer).Add(layer5); } array.Remove(index); } System.Windows.Forms.Cursor.Current = Cursors.Default; } }
/////////该类实现将各种ArcGis图层加载至数据库集成管理界面的图层控件当中来//////// /// <summary> /// 加载矢量库体 /// </summary> /// <param name="DbEleInfo">矢量库体对应的库体信息XmlElement</param> /// <param name="in_MXDFile">符号化mxd文件路径</param> /// <param name="ex">输出错误信息</param> public static void AddFeaLayer(Plugin.Application.IAppDBIntegraRef m_Hook, XmlElement DbEleInfo, string in_MXDFile, out Exception ex) { ex = null; try { XmlElement elementTemp = DbEleInfo.SelectSingleNode(".//现势库/连接信息") as XmlElement; IWorkspace TempWorkSpace = ModDBOperate.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); ex = new Exception("连接数据库失败!"); return; } ILayer player = ModDBOperate.GetGroupLayer(m_Hook.MapControl, m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text); if (player != null) { m_Hook.MapControl.Map.DeleteLayer(player); m_Hook.TOCControl.Update(); } IGroupLayer pGroupLayer = new GroupLayerClass(); SysCommon.Gis.SysGisDataSet sysGisDataset = new SysCommon.Gis.SysGisDataSet(TempWorkSpace); IFeatureDataset featureDataset = sysGisDataset.GetFeatureDataset((elementTemp.FirstChild as XmlElement).GetAttribute("名称"), out ex); if (ex != null) { //SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据失败!"); ex = new Exception("获取数据发生异常:" + ex.Message); return; } pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text; List <IDataset> lstDataset = sysGisDataset.GetFeatureClass(featureDataset); //遍历要素类,加载图层 string dbType = ""; string userName = "";//用户名 userName = elementTemp.GetAttribute("用户"); dbType = elementTemp.GetAttribute("类型"); 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; if (dbType.Trim().ToUpper() == "SDE") { if (dataset.Name.ToUpper().Contains(userName.Trim().ToUpper())) { //SDE用户图层名去掉用户名 pFeatureLayer.Name = dataset.Name.Substring(userName.Trim().Length + 1); } else { pFeatureLayer.Name = dataset.Name; } } else { pFeatureLayer.Name = dataset.Name; } pFeatureLayer.Visible = false; pGroupLayer.Add(pFeatureLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl); } catch (Exception eError) { ex = eError; return; } }
/// <summary> /// 加载历史数据 /// </summary> /// <param name="strTemp"></param> /// <param name="strType"></param> private void AddHistoryData() { //if (m_FeaType == EnumFeatureType.更新要素) //{ // //更新要素,则清空comboBox插件 // ModData.m_ComboBox.Items.Clear(); //} Application.DoEvents(); //加载历史数据 if (m_WS == null) { MessageBox.Show("数据连接失败!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } Dictionary <string, IFeatureClass> dicFeaClsInfo = new Dictionary <string, IFeatureClass>(); //要素类信息 Dictionary <string, IFeatureClass> dicSelFeaClsInfo = new Dictionary <string, IFeatureClass>(); //要加载的要素类 if (LstAllFeaCls.Tag == null) { return; } dicFeaClsInfo = LstAllFeaCls.Tag as Dictionary <string, IFeatureClass>; //遍历下拉列表框,将选中的要素类加载到图面上来 for (int i = 0; i < LstCheckoutFeaCls.Items.Count; i++) { string pFeaClsName = ""; //要素类名称 IFeatureClass pFeaCls = null; //要素类 pFeaClsName = LstCheckoutFeaCls.Items[i].ToString(); if (!dicFeaClsInfo.ContainsKey(pFeaClsName)) { return; } pFeaCls = dicFeaClsInfo[pFeaClsName]; if (pFeaCls == null) { continue; } IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (pFeaCls.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = pFeaCls; pFeatureLayer.Name = pFeaClsName; //更新要素,则将要素类加载在comboBox插件中 if (!dicSelFeaClsInfo.ContainsKey(pFeaClsName)) { dicSelFeaClsInfo.Add(pFeaClsName, pFeaCls); } if (m_FeaType == EnumFeatureType.更新要素) { m_Hook.MapControl.Map.AddLayer(pFeatureLayer as ILayer); } } if (m_FeaType == EnumFeatureType.更新要素) { //对图层进行排序 SysCommon.Gis.ModGisPub.LayersCompose(m_Hook.MapControl); } else if (m_FeaType == EnumFeatureType.参照要素) { //参照要素另外加载在一个框框中 ModData.UpDataCompareFrm = new frmCompareData(m_Hook, dicSelFeaClsInfo); ModData.UpDataCompareFrm.Show(); } }
private void btnOk_Click(object sender, EventArgs e) { if (listViewEx.CheckedItems.Count == 0) { return; } LayerList = new List <ILayer>(); for (int i = 0; i < Mapcontrol.Map.LayerCount; i++) { //IFeatureLayer featLay = Mapcontrol.Map.get_Layer(i) as IFeatureLayer; //changed by xisheng 20110828 ILayer mLayer = Mapcontrol.Map.get_Layer(i); if (mLayer is IGroupLayer) { ICompositeLayer pComLayer = mLayer as ICompositeLayer; for (int j = 0; j < pComLayer.Count; j++) { IFeatureLayer featLay = pComLayer.get_Layer(j) as IFeatureLayer; if (featLay == null) { continue; } if (!(featLay.FeatureClass as IDataset).Name.EndsWith("_GOH")) { continue; } LayerList.Add(featLay); } } else { IFeatureLayer featLay = Mapcontrol.Map.get_Layer(i) as IFeatureLayer; if (featLay == null) { continue; } if (!(featLay.FeatureClass as IDataset).Name.EndsWith("_GOH")) { continue; } LayerList.Add(featLay); } } LstArcGisMapControl = new List <AxMapControl>(); BarHistory.Items["dockItemHistoryData0"].Text = listViewEx.CheckedItems[0].Text; BarHistory.Items["dockItemHistoryData0"].Tooltip = listViewEx.CheckedItems[0].Text; ESRI.ArcGIS.Controls.AxMapControl axMapControlHistoryData = (BarHistory.Items["dockItemHistoryData0"] as DockContainerItem).Control.Controls[0] as AxMapControl; LstArcGisMapControl.Add(axMapControlHistoryData); for (int i = LayerList.Count - 1; i >= 0; i--) { IFeatureLayer layTemp = LayerList[i] as IFeatureLayer; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (layTemp.FeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } else { (pFeatureLayer as IGeoFeatureLayer).Renderer = (layTemp as IGeoFeatureLayer).Renderer; } pFeatureLayer.FeatureClass = layTemp.FeatureClass; pFeatureLayer.Name = (layTemp.FeatureClass as IDataset).Name; IFeatureLayerDefinition featLayDefRes = null; if (m_Sel) { int fdIndex = layTemp.FeatureClass.Fields.FindField("SourceOID"); if (fdIndex == -1) { continue; } IFeatureLayerDefinition featLayDefTemp = layTemp as IFeatureLayerDefinition; IEnumIDs pEnumIDs = featLayDefTemp.DefinitionSelectionSet.IDs; int ID = pEnumIDs.Next(); StringBuilder sb = new StringBuilder(); while (ID != -1) { IFeature pFeat = layTemp.FeatureClass.GetFeature(ID); if (sb.Length != 0) { sb.Append(","); } sb.Append(pFeat.get_Value(fdIndex).ToString()); ID = pEnumIDs.Next(); } IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "SourceOID in (" + sb.ToString() + ")"; IFeatureSelection featSel = pFeatureLayer as IFeatureSelection; featSel.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); featSel.SelectionChanged(); IFeatureLayerDefinition featLayDef = pFeatureLayer as IFeatureLayerDefinition; IFeatureLayer selFeatLay = featLayDef.CreateSelectionLayer(pFeatureLayer.Name, true, "", ""); IGeoFeatureLayer pGeoFeatureLayer = layTemp as IGeoFeatureLayer; if (pGeoFeatureLayer != null) { (selFeatLay as IGeoFeatureLayer).Renderer = pGeoFeatureLayer.Renderer; } axMapControlHistoryData.Map.AddLayer(selFeatLay); featLayDefRes = selFeatLay as IFeatureLayerDefinition; } else { axMapControlHistoryData.Map.AddLayer(pFeatureLayer); featLayDefRes = pFeatureLayer as IFeatureLayerDefinition; } featLayDefRes.DefinitionExpression = "FromDate<='" + listViewEx.CheckedItems[0].Text + "' and ToDate>'" + listViewEx.CheckedItems[0].Text + "'"; } axMapControlHistoryData.ActiveView.Extent = ArcGisMapControl.ActiveView.Extent; axMapControlHistoryData.ActiveView.Refresh(); for (int i = 1; i < listViewEx.CheckedItems.Count; i++) { DockContainerItem dockItemHistoryData = new DockContainerItem("dockItemHistoryData" + i.ToString(), listViewEx.CheckedItems[i].Text); dockItemHistoryData.Tooltip = listViewEx.CheckedItems[i].Text; PanelDockContainer PanelTipHistoryData = new PanelDockContainer(); dockItemHistoryData.Control = PanelTipHistoryData; BarHistory.Items.Add(dockItemHistoryData); } ArcGisMapControl.OnExtentUpdated += new IMapControlEvents2_Ax_OnExtentUpdatedEventHandler(ArcGisMapControl_OnExtentUpdated); ArcGisMapControl.OnViewRefreshed += new IMapControlEvents2_Ax_OnViewRefreshedEventHandler(ArcGisMapControl_OnViewRefreshed); this.Close(); }
private void BarHistory_DockTabChange(object sender, DockTabChangeEventArgs e) { DockContainerItem dockItemHistoryData = e.NewTab as DockContainerItem; if (dockItemHistoryData.Control.Controls.Count != 0) { return; } if (LayerList.Count == 0) { return; } frmArcgisMapControl newFrm = new frmArcgisMapControl(); for (int j = LayerList.Count - 1; j >= 0; j--) { IFeatureLayer layTemp = LayerList[j] as IFeatureLayer; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (layTemp.FeatureClass.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } else { (pFeatureLayer as IGeoFeatureLayer).Renderer = (layTemp as IGeoFeatureLayer).Renderer; } pFeatureLayer.FeatureClass = layTemp.FeatureClass; pFeatureLayer.Name = (layTemp.FeatureClass as IDataset).Name; IFeatureLayerDefinition featLayDefRes = null; if (m_Sel) { int fdIndex = layTemp.FeatureClass.Fields.FindField("SourceOID"); if (fdIndex == -1) { continue; } IFeatureLayerDefinition featLayDefTemp = layTemp as IFeatureLayerDefinition; IEnumIDs pEnumIDs = featLayDefTemp.DefinitionSelectionSet.IDs; int ID = pEnumIDs.Next(); StringBuilder sb = new StringBuilder(); while (ID != -1) { IFeature pFeat = layTemp.FeatureClass.GetFeature(ID); if (sb.Length != 0) { sb.Append(","); } sb.Append(pFeat.get_Value(fdIndex).ToString()); ID = pEnumIDs.Next(); } IQueryFilter queryFilter = new QueryFilterClass(); queryFilter.WhereClause = "SourceOID in (" + sb.ToString() + ")"; IFeatureSelection featSel = pFeatureLayer as IFeatureSelection; featSel.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false); featSel.SelectionChanged(); IFeatureLayerDefinition featLayDef = pFeatureLayer as IFeatureLayerDefinition; IFeatureLayer selFeatLay = featLayDef.CreateSelectionLayer(pFeatureLayer.Name, true, "", ""); IGeoFeatureLayer pGeoFeatureLayer = layTemp as IGeoFeatureLayer; if (pGeoFeatureLayer != null) { (selFeatLay as IGeoFeatureLayer).Renderer = pGeoFeatureLayer.Renderer; } newFrm.ArcGisMapControl.Map.AddLayer(selFeatLay); featLayDefRes = selFeatLay as IFeatureLayerDefinition; } else { newFrm.ArcGisMapControl.Map.AddLayer(pFeatureLayer); featLayDefRes = pFeatureLayer as IFeatureLayerDefinition; } featLayDefRes.DefinitionExpression = "FromDate<='" + dockItemHistoryData.Text + "' and ToDate>'" + dockItemHistoryData.Text + "'"; } newFrm.ArcGisMapControl.ActiveView.Extent = ArcGisMapControl.ActiveView.Extent; newFrm.ArcGisMapControl.Refresh(); newFrm.ArcGisMapControl.Dock = DockStyle.Fill; dockItemHistoryData.Control.Controls.Add(newFrm.ArcGisMapControl); LstArcGisMapControl.Add(newFrm.ArcGisMapControl); }
private void advTree_NodeMouseUp(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e) { try { if (advTree.SelectedNode == null) { return; } if (advTree.SelectedNode.Tag == null || advTree.SelectedNode.DataKey == null) { return; } if (m_SelNode == advTree.SelectedNode) { return; } for (int i = 0; i < contextMenuBar.Items[0].SubItems["btnShow"].SubItems.Count; i++) { DevComponents.DotNetBar.ButtonItem aItem = contextMenuBar.Items[0].SubItems["btnShow"].SubItems[i] as DevComponents.DotNetBar.ButtonItem; aItem.Checked = false; } m_SelNode = advTree.SelectedNode; //加载冲突要素属性 DataTable datatable = advTree.SelectedNode.DataKey as DataTable; if (datatable == null) { return; } dataGridViewX.DataSource = datatable; //特殊显示发生变化的字段 System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle = new System.Windows.Forms.DataGridViewCellStyle(); dataGridViewCellStyle.BackColor = System.Drawing.Color.IndianRed; dataGridViewCellStyle.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134))); foreach (DataGridViewRow aRow in dataGridViewX.Rows) { if (Convert.ToBoolean(aRow.Cells["IsSame"].Value) == false) { aRow.DefaultCellStyle = dataGridViewCellStyle; } } //加载对应图层 IFeatureClass[] pFeatCls = advTree.SelectedNode.Parent.Tag as IFeatureClass[]; if (pFeatCls == null) { return; } //当前版本 IFeatureLayer pFeatLay = new FeatureLayerClass(); if (pFeatCls[0].FeatureType == esriFeatureType.esriFTAnnotation) { pFeatLay = new FDOGraphicsLayerClass(); } pFeatLay.FeatureClass = pFeatCls[0]; axMapControlCurrent.Map.AddLayer(pFeatLay as ILayer); IFeature[] pFeat = advTree.SelectedNode.Tag as IFeature[]; IGeoDataset pGeoDt = pFeatCls[0] as IGeoDataset; ISpatialReference pSpatialRef = null; if (pGeoDt != null) { pSpatialRef = pGeoDt.SpatialReference; } if (pFeat[0] != null) { SysCommon.Gis.ModGisPub.ZoomToFeature(axMapControlCurrent.Object as IMapControlDefault, pFeat[0], pSpatialRef); } //前一版本 pFeatLay = new FeatureLayerClass(); if (pFeatCls[1].FeatureType == esriFeatureType.esriFTAnnotation) { pFeatLay = new FDOGraphicsLayerClass(); } pFeatLay.FeatureClass = pFeatCls[1]; axMapControlPre.Map.AddLayer(pFeatLay as ILayer); if (pFeat[1] != null) { SysCommon.Gis.ModGisPub.ZoomToFeature(axMapControlPre.Object as IMapControlDefault, pFeat[1], pSpatialRef); } //最初版本 pFeatLay = new FeatureLayerClass(); if (pFeatCls[2].FeatureType == esriFeatureType.esriFTAnnotation) { pFeatLay = new FDOGraphicsLayerClass(); } pFeatLay.FeatureClass = pFeatCls[2]; axMapControlCommon.Map.AddLayer(pFeatLay as ILayer); if (pFeat[2] != null) { SysCommon.Gis.ModGisPub.ZoomToFeature(axMapControlCommon.Object as IMapControlDefault, pFeat[2], pSpatialRef); } } catch (Exception err) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "出错:" + err.Message); return; } flashfeature(); }
//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); }
public void AddHistoryData(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; } string WsUsername = strTemp[3];//记录用户名 席胜20111020 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 //List<string> lstNames = sourceSysGisDataSet.GetFeatureClassNames(); //if (lstNames == null) return; //foreach (string name in lstNames) //{ // if (name.EndsWith("_GOH")) // { // IFeatureClass featCls = sourceSysGisDataSet.GetFeatureClass(name, out err); // IFeatureLayer pFeatureLayer = new FeatureLayerClass(); // if (featCls.FeatureType == esriFeatureType.esriFTAnnotation) // { // pFeatureLayer = new FDOGraphicsLayerClass(); // } // pFeatureLayer.FeatureClass = featCls; // //cyf 20110706 modify:不去掉图层名 // //if (strTemp[3].Trim() != "") // //{ // // if ((featCls as IDataset).Name.ToUpper().Contains(strTemp[3].Trim().ToUpper())) // // { // // //SDE,图层名带用户名,应该去掉 // // pFeatureLayer.Name = (featCls as IDataset).Name.Substring(strTemp[3].Trim().Length+1); // // } // //} // //else // //{ // pFeatureLayer.Name = (featCls as IDataset).Name; // //} // //end // //cyf 20110705 add // //加载具备权限的图层 // XmlElement feaclsElem = null; // try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { } // if (feaclsElem != null) // { // if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name)) // { // //若不具备数据权限,则不进行加载 // continue; // } // } // //end // Mapcontrol.Map.AddLayer(pFeatureLayer as ILayer); // } //} //lstNames = sourceSysGisDataSet.GetAllFeatureDatasetNames(); //foreach (string name in lstNames) //{ // if (!name.EndsWith("_GOH")) // { // continue; // } // //cyf 20110706 modify // IGroupLayer pGroupLayer = new GroupLayerClass(); // IFeatureDataset featureDataset = null; //数据集 // if (m_ProTree.SelectedNode.DataKeyString == "FD") // { // featureDataset = sourceSysGisDataSet.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 = sourceSysGisDataSet.GetFeatureDataset(DtSetNode.Text, out err); // if (err != null) // { // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取数据集失败!"); // return; // } // pGroupLayer.Name = DtSetNode.Text + "_" + ProjectNode.Text; // } // //end IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = m_ProTree.SelectedNode.Text + "_" + ProjectNode.Text; IFeatureDataset pFeatureDataset = sourceSysGisDataSet.GetFeatureDataset(DtSetNode.Text, out err); IEnumDataset pEnumDs = pFeatureDataset.Subsets; pEnumDs.Reset(); IDataset pDs = pEnumDs.Next(); //ModDBOperator.WriteLog("while start"); while (pDs != null) { IFeatureClass featCls = pDs as IFeatureClass; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); if (featCls.FeatureType == esriFeatureType.esriFTAnnotation) { pFeatureLayer = new FDOGraphicsLayerClass(); } pFeatureLayer.FeatureClass = featCls; //去用户名 xisheng 0906 if (strTemp[3].Trim() != "") { if (pDs.Name.ToUpper().Contains(strTemp[3].Trim().ToUpper())) { //SDE,图层名带用户名,应该去掉 pFeatureLayer.Name = pDs.Name.Substring(strTemp[3].Trim().Length + 1); } } else { pFeatureLayer.Name = pDs.Name; } //end //pFeatureLayer.Name = pDs.Name; //cyf 20110705 add //加载具备权限的图层 XmlElement feaclsElem = null; if (m_ProTree.SelectedNode.DataKeyString == "FC") { //加载指定的图层 if (m_ProTree.SelectedNode.Text != pFeatureLayer.Name) { pDs = pEnumDs.Next(); continue; } else { pGroupLayer.Add(pFeatureLayer as ILayer); break; } } else if (m_ProTree.SelectedNode.DataKeyString == "FD") { //数据集节点 try { feaclsElem = (m_ProTree.SelectedNode.Tag as XmlElement).SelectSingleNode(".//图层名") as XmlElement; } catch { } if (feaclsElem != null) { if (!feaclsElem.GetAttribute("名称").Contains(pFeatureLayer.Name)) { //若不具备数据权限,则不进行加载 pDs = pEnumDs.Next(); continue; } } } //end //cyf 20110706 modify pGroupLayer.Add(pFeatureLayer as ILayer); //Mapcontrol.Map.AddLayer(pFeatureLayer as ILayer); //end pDs = pEnumDs.Next(); } //ModDBOperator.WriteLog("while end"); Mapcontrol.Map.AddLayer(pGroupLayer as ILayer); Mapcontrol.ActiveView.Refresh(); //ModDBOperator.WriteLog("LayersCompose start"); SysCommon.Gis.ModGisPub.LayersCompose(Mapcontrol); //写日志 //ModDBOperator.WriteLog("InitialSliderItem start"); InitialSliderItem(Mapcontrol); //写日志 //ModDBOperator.WriteLog("InitialSliderItem end"); }