//通过intersect关系进行裁切 public void ClipByExtent(int groupNm, int extNum) { IGeometry extent = GetClipExtent(extNum); string findName = "grp" + groupNm.ToString() + "ext0"; IGroupLayer grpLy = avlbLayers.Find(item => item.Name == findName); ICompositeLayer comLy = grpLy as ICompositeLayer; IGroupLayer newGroupLayer = new GroupLayerClass(); newGroupLayer.Name = "grp" + groupNm.ToString() + "ext" + extNum.ToString(); for (int i = 0; i < comLy.Count; i++) { IFeatureLayer feaLy = comLy.get_Layer(i) as IFeatureLayer; IFeatureClass clipFC = feaLy.FeatureClass; IFields flds = clipFC.Fields; ISpatialFilter spatialFilter = new SpatialFilterClass(); spatialFilter.Geometry = extent; spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects; IFeatureCursor cursor = clipFC.Search(spatialFilter, false); IWorkspaceFactory workspaceFactory = new InMemoryWorkspaceFactoryClass(); IWorkspaceName workspaceName = workspaceFactory.Create(null, "MyWorkspace", null, 0); IName name = (IName)workspaceName; IWorkspace workspace = (IWorkspace)name.Open(); IFeatureWorkspace inmemFeaWksp = workspace as IFeatureWorkspace; if (clipFC.ShapeType == esriGeometryType.esriGeometryPoint) { IFeatureClass inmemPTFC = CreateWithoutDescription("inmemPTFC_" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds); InsertFeaturesBoun(inmemPTFC, cursor, extent); IFeatureLayer inmemPTFCLayer = new FeatureLayerClass(); inmemPTFCLayer.FeatureClass = inmemPTFC; newGroupLayer.Add(inmemPTFCLayer); } else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolyline) { IFeatureClass inmemLNFC = CreateWithoutDescription("inmemLNFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds); InsertFeaturesBoun(inmemLNFC, cursor, extent); IFeatureLayer inmemLNFCLayer = new FeatureLayerClass(); inmemLNFCLayer.FeatureClass = inmemLNFC; newGroupLayer.Add(inmemLNFCLayer); } else if (clipFC.ShapeType == esriGeometryType.esriGeometryPolygon) { IFeatureClass inmemPLGFC = CreateWithoutDescription("inmemPLGFC" + groupNumber.ToString(), null, inmemFeaWksp, clipFC.ShapeType, flds); InsertFeaturesBoun(inmemPLGFC, cursor, extent); IFeatureLayer inmemPLGFCLayer = new FeatureLayerClass(); inmemPLGFCLayer.FeatureClass = inmemPLGFC; newGroupLayer.Add(inmemPLGFCLayer); } } avlbLayers.Add(newGroupLayer); }
//读取原始数据并添加到grouplayer列表中 public void LoadOriginData(string path, int groupNumber) { IWorkspaceFactory shpFactory = new ShapefileWorkspaceFactoryClass(); IFeatureWorkspace shpFeaWksp = shpFactory.OpenFromFile(path, 0) as IFeatureWorkspace; IFeatureClass fcPoint = shpFeaWksp.OpenFeatureClass(pointFile); IFeatureClass fcLine = shpFeaWksp.OpenFeatureClass(lineFile); IFeatureClass fcPlygon = shpFeaWksp.OpenFeatureClass(polygonFile); IFeatureLayer lyPoint = new FeatureLayerClass(); lyPoint.FeatureClass = fcPoint; IFeatureLayer lyLine = new FeatureLayerClass(); lyLine.FeatureClass = fcLine; IFeatureLayer lyPlygon = new FeatureLayerClass(); lyPlygon.FeatureClass = fcPlygon; IGroupLayer grpLayer = new GroupLayerClass(); grpLayer.Name = "grp" + groupNumber.ToString() + "ext0"; grpLayer.Add(lyPoint); grpLayer.Add(lyLine); grpLayer.Add(lyPlygon); avlbLayers.Add(grpLayer); }
/// <summary> /// 打开指定的CAD图层,包括点point,线polyline,多点mutilpoint,多段mutilpatch与注记(如果是注记,需要建立CadAnnotationLayerClass实例对象),添加的是空间数据对象(添加到同一个图层组中,图层组名为文件名无后缀) /// </summary> /// <param name="mapControlDefault">地图控件</param> /// <param name="pWorkspace">工作空间</param> /// <param name="strFileName">文件名,没有会追</param> public static void GetALLCADLayerFromGeo(IMapControlDefault mapControlDefault, IWorkspace pWorkspace, string strFileName) { IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; //组图层 IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = strFileName.Substring(0, strFileName.LastIndexOf(".")); //打开指定的的cad图层--Point IFeatureClass pFeatureClass_Point = pFeatureWorkspace.OpenFeatureClass(strFileName + ":point"); if (pFeatureClass_Point != null) { IFeatureLayer pFeatureLayer_Point = new CadFeatureLayerClass(); pFeatureLayer_Point.FeatureClass = pFeatureClass_Point; pFeatureLayer_Point.Name = pFeatureClass_Point.AliasName; pGroupLayer.Add(pFeatureLayer_Point); } //Polyline string strPlineName = System.String.Concat(strFileName, ":Polyline"); IFeatureClass pFeatClass_Polyline = pFeatureWorkspace.OpenFeatureClass(strPlineName); if (pFeatClass_Polyline != null) { IFeatureLayer pFeatureLayer_Polyline = new CadFeatureLayerClass(); pFeatureLayer_Polyline.FeatureClass = pFeatClass_Polyline; pFeatureLayer_Polyline.Name = pFeatClass_Polyline.AliasName; pGroupLayer.Add(pFeatureLayer_Polyline); pGroupLayer.Add(pFeatureLayer_Polyline); } mapControlDefault.AddLayer(pGroupLayer as ILayer, 0); }
/// <summary> /// 加载栅格库体 /// </summary> /// <param name="m_Hook">主程序hook</param> /// <param name="DbEleInfo">矢量库体对应的库体信息XmlElement</param> /// <param name="ex">输出错误信息</param> public static void AddRasterLayer(Plugin.Application.IAppDBIntegraRef m_Hook, XmlElement DbEleInfo, out Exception ex) { ex = null; try { IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = m_Hook.ProjectTree.SelectedNode.DataKeyString + "_" + m_Hook.ProjectTree.SelectedNode.Text; // string rasterDBType = (m_Hook.ProjectTree.SelectedNode.Tag as XmlElement).GetAttribute("存储类型"); // string rasterDBType = DbEleInfo.GetAttribute("存储类型"); string rasterDBType = string.Empty; XmlElement RasterEle = DbEleInfo.SelectSingleNode(".//栅格数据库") as XmlElement; rasterDBType = RasterEle.GetAttribute("存储类型").Trim(); XmlElement elementTemp = DbEleInfo.SelectSingleNode(".//栅格数据库/连接信息") as XmlElement; IWorkspace TempWorkSpace = ModDBOperate.GetDBInfoByXMLNode(elementTemp, "") as IWorkspace; if (TempWorkSpace == null) { // SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "连接数据库失败!"); ex = new Exception("连接数据库失发生异常"); return; } IRasterWorkspaceEx pRasterWS = TempWorkSpace as IRasterWorkspaceEx; if (pRasterWS == null) { return; } string feaclsName = (elementTemp.FirstChild as XmlElement).GetAttribute("名称"); 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); } else if (rasterDBType.Trim() == "栅格数据集") { //栅格数据集加载 IRasterDataset pRasterDataset = pRasterWS.OpenRasterDataset(feaclsName); IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); if (pRasterLayer == null) { return; } pGroupLayer.Add(pRasterLayer as ILayer); } m_Hook.MapControl.Map.AddLayer(pGroupLayer); } catch (Exception eError) { ex = eError; return; } }
private void btnCollectCAD_Click(object sender, EventArgs e) { if (this.textboxCAD.Text == "") { return; } try { //获取文件名和文件路径 int pIndex = this.textboxCAD.Text.LastIndexOf("\\"); string pFilePath = this.textboxCAD.Text.Substring(0, pIndex); string pFileName = this.textboxCAD.Text.Substring(pIndex + 1); //打开CAD数据集 IWorkspaceFactory pWorkspaceFactory; IFeatureWorkspace pFeatureWorkspace; IFeatureLayer pFeatureLayer; IFeatureDataset pFeatureDataset; pWorkspaceFactory = new CadWorkspaceFactoryClass(); //using ESRI.ArcGIS.DataSourcesFile; pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(pFilePath, 0); //打开一个要素集 pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pFileName); //IFeatureClassContainer可以管理IFeatureDataset中的每个要素类 IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer)pFeatureDataset; IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = pFileName; //对CAD文件中的要素进行遍历处理 for (int i = 0; i < pFeatClassContainer.ClassCount; i++) { IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i); //如果是注记,则添加注记层 if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation) { pFeatureLayer = new CadAnnotationLayerClass(); pFeatureLayer.Name = pFeatClass.AliasName; pFeatureLayer.FeatureClass = pFeatClass; pGroupLayer.Add(pFeatureLayer); //this.pMapControl.Map.AddLayer(pFeatureLayer); } else //如果是点、线、面则添加要素层 { pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.Name = pFeatClass.AliasName; pFeatureLayer.FeatureClass = pFeatClass; pGroupLayer.Add(pFeatureLayer); //this.pMapControl.Map.AddLayer(pFeatureLayer); } } this.pMapControl.Map.AddLayer(pGroupLayer); this.pMapControl.ActiveView.Refresh(); } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// 加载.shp文件 /// </summary> /// <param name="fileName"></param> private void OpenShpFile(string fileName) { try { string path = fileName; string pFolder = System.IO.Path.GetDirectoryName(path); string pFileName = System.IO.Path.GetFileName(path); IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory(); IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0); IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IFeatureClass featureClass = pFeatureWorkspace.OpenFeatureClass(pFileName); //创建layer并把上一步生成的featureClass赋值给featureLayer IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureClass; featureLayer.Name = featureClass.AliasName; IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = "add" + pFileName; groupLayer.Add(featureLayer); axGlobeControl.Globe.AddLayerType(groupLayer as ILayer, esriGlobeLayerType.esriGlobeLayerTypeElevation, true); } catch (Exception) { } }
public static void AddIdahoWms(string idahoId, string groupLayerName, string token) { IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = groupLayerName; var wmsMapLayer = new WMSMapLayerClass(); // create and configure wms connection name, this is used to store the connection properties IWMSConnectionName pConnName = new WMSConnectionNameClass(); IPropertySet propSet = new PropertySetClass(); // create the idaho wms url var idahoUrl = string.Format( "http://idaho.geobigdata.io/v1/wms/idaho-images/{0}/{1}/mapserv?", idahoId, token); // setup the arcmap connection properties propSet.SetProperty("URL", idahoUrl); pConnName.ConnectionProperties = propSet; //uses the name information to connect to the service IDataLayer dataLayer = wmsMapLayer; try { dataLayer.Connect((IName)pConnName); } catch (Exception e) { Jarvis.Logger.Error("Problems connecting to WMS: " + e.Message); } // get wms service description var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription; ILayer wmsLayer = null; // add layers for the wms currently there will only be one. for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++) { var layerDesc = serviceDesc.LayerDescription[i]; var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc); for (var j = 0; j <= grpLayer.Count - 1; j++) { wmsLayer = wmsMapLayer; wmsMapLayer.Name = idahoId; } } // turn on sub layers, add it to arcmap and move it to top of TOC // SublayerVisibleOn(wmsLayer); groupLayer.Add(wmsLayer); // turn on sub layers, add it to arcmap and move it to top of TOC ArcMap.Document.AddLayer(groupLayer); ArcMap.Document.FocusMap.MoveLayer(groupLayer, 0); }
private static ILayer BuildLayerGroup(IEnumerable<ILayer> layers) { var layerGroup = new GroupLayerClass(); foreach (var layer in layers) { layerGroup.Add(layer); } return layerGroup; }
private static ILayer BuildLayerGroup(IEnumerable <ILayer> layers) { var layerGroup = new GroupLayerClass(); foreach (var layer in layers) { layerGroup.Add(layer); } return(layerGroup); }
//**选择所有图层**// private void TOC_SelectAllLayers() { IGroupLayer pGroupLayer = new GroupLayerClass(); for (int i = 0; i < this.m_pMapControl.LayerCount; i++) { ILayer pLayer = this.m_pMapControl.get_Layer(i); pGroupLayer.Add(pLayer); //this.m_pTOCControl.SelectItem(pLayer,null); } this.m_pTOCControl.SelectItem(pGroupLayer); }
private void AddLayer(IWorkspace space) { IFeatureWorkspace F_work = space as IFeatureWorkspace; IFeatureLayer f_layer = new FeatureLayerClass(); IGroupLayer G_layer = new GroupLayerClass(); G_layer.Name = "Geo_GroupLayer_check"; IEnumDataset dataset = space.get_Datasets(esriDatasetType.esriDTFeatureDataset);//得到MDB里的所有集合名称 dataset.Reset(); IDataset set = dataset.Next(); while (set != null) { IFeatureDataset F_dataset = set as IFeatureDataset; IEnumDataset dataset_each = F_dataset.Subsets; dataset_each.Reset(); IDataset dataset_class = dataset_each.Next(); if (dataset_class == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "这个集合当中没有任何的数据,请重新选择要素集合!"); return; } while (dataset_class != null) { if (dataset_class is IFeatureClass) { f_layer = new FeatureLayerClass(); IFeatureClass class_each = F_work.OpenFeatureClass(dataset_class.Name); f_layer.FeatureClass = class_each; f_layer.Name = dataset_class.Name; G_layer.Add(f_layer as ILayer); } dataset_class = dataset_each.Next(); } set = dataset.Next(); } if (G_layer != null) { this.Close(); _AppHk.MapControl.Map.AddLayer(G_layer); _AppHk.MapControl.ActiveView.Refresh(); } }
private static IGroupLayer RefreshLayer(string catId, List <string> idahoIds, out bool unRecoverableError) { IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = catId; foreach (var id in idahoIds) { var wmsMapLayer = CreateWmsMapLayer(id); if (wmsMapLayer == null) { Jarvis.Logger.Info("An unknown issue occurred trying to establish a WMS layer link"); unRecoverableError = true; return(null); } // get wms service description var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription; ILayer wmsLayer = null; // add layers for the wms currently there will only be one. for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++) { var layerDesc = serviceDesc.LayerDescription[i]; var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc); for (var j = 0; j <= grpLayer.Count - 1; j++) { wmsLayer = wmsMapLayer; wmsMapLayer.Name = id; } } // turn on sub layers, add it to arcmap and move it to top of TOC SublayerVisibleOn(wmsLayer); groupLayer.Add(wmsLayer); } // No error occurred unRecoverableError = false; return(groupLayer); }
private ILayer getLayer(DevComponents.AdvTree.Node advN)//支持两层结构递归调用 { if (!advN.HasChildNodes && advN.Checked) { string tag = advN.Tag as string; ILayer addLayer = null; if (tag == "Layer") { //获取xml节点 if (advN.DataKey != null) { XmlNode layerNode = advN.DataKey as XmlNode; string nodeKey = ""; if ((layerNode as XmlElement).HasAttribute("NodeKey")) { nodeKey = layerNode.Attributes["NodeKey"].Value; } addLayer = ModGetData.GetLayerByNodeKey(pAxMapControl.Map, nodeKey); } } else if (tag == "OutLayer") { } return(addLayer); } else if (advN.HasChildNodes) { IGroupLayer pGpLayer = new GroupLayerClass(); pGpLayer.Name = advN.Text; foreach (DevComponents.AdvTree.Node avN in advN.Nodes) { ILayer pLyr = getLayer(avN); if (pLyr != null) { pGpLayer.Add(pLyr); } } return(pGpLayer as ILayer); } return(null); }
//由专题类型构造制图页面的地图图层-----多了个专题名称针对DOM public static void AddMapOfNoneXZQ(IMap inMap, string inType, string LyrNT, IMap inSourceMap) { IMapLayers inMapLayers = inMap as IMapLayers; if (!File.Exists(LayerXMLpath)) { return; } XmlDocument cXmlDoc = new XmlDocument(); cXmlDoc.Load(LayerXMLpath); if (cXmlDoc == null) { return; } XmlNode xn = cXmlDoc.SelectSingleNode("//DIR[@DIRType='" + inType + "']"); if (xn == null) { return; } inMap.Name = xn.Attributes["NodeText"].Value;//设置地图名称 IGroupLayer gLayer = new GroupLayerClass(); gLayer.Name = xn.Attributes["NodeText"].Value; XmlNodeList xnl = xn.SelectNodes(".//Layer[@NodeText='" + LyrNT + "']"); foreach (XmlNode pxn in xnl) { string nodeKey = pxn.Attributes["NodeKey"].Value; ILayer pLayer = GetLayerByNodeKey(inSourceMap, nodeKey); if (pLayer != null) { gLayer.Add(pLayer); } } inMapLayers.InsertLayer(gLayer as ILayer, false, inMapLayers.LayerCount); cXmlDoc = null; }
/////////该类实现将各种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> /// 创建要素图层 /// 也可以利用现有要素图层创建:IFeatureLayer featurelayer, /// </summary> /// <param name="map"></param> /// <param name="workspace"></param> /// <param name="layername"></param> /// <param name="aliasname"></param> /// <returns></returns> public IFeatureLayer CreateFeatureLayer(IMap map, IWorkspace workspace, string layername, string aliasname) { try { IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; //IFields fields = featurelayer.FeatureClass.Fields; // 创建要素类的字段集 IFields fields = new FieldsClass(); IFieldsEdit fieldsEdit = (IFieldsEdit)fields; // 添加要素类必须字段:object ID 字段 IField oidField = new FieldClass(); IFieldEdit oidFieldEdit = (IFieldEdit)oidField; oidFieldEdit.Name_2 = "OBJECTID"; oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; fieldsEdit.AddField(oidField); // 创建几何定义(和空间参考) IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; //ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); //ISpatialReference spatialReference = //spatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_20N); //ISpatialReferenceResolution spatialReferenceResolution = (ISpatialReferenceResolution)spatialReference; //spatialReferenceResolution.ConstructFromHorizon(); //ISpatialReferenceTolerance spatialReferenceTolerance = (ISpatialReferenceTolerance)spatialReference; //spatialReferenceTolerance.SetDefaultXYTolerance(); geometryDefEdit.SpatialReference_2 = map.SpatialReference; //添加几何字段 IField geometryField = new FieldClass(); IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField; geometryFieldEdit.Name_2 = "Shape"; geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; geometryFieldEdit.GeometryDef_2 = geometryDef; fieldsEdit.AddField(geometryField); //新建字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = pField as IFieldEdit; pFieldEdit.Length_2 = 50; pFieldEdit.Name_2 = "ID"; pFieldEdit.AliasName_2 = "ID"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; fieldsEdit.AddField(pField); //检查字段的有效性 IFieldChecker fieldChecker = new FieldCheckerClass(); IEnumFieldError enumFieldError = null; IFields validatedFields = null; fieldChecker.ValidateWorkspace = (IWorkspace)featureWorkspace; fieldChecker.Validate(fields, out enumFieldError, out validatedFields); IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(layername, validatedFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); //用创建的要素类生成要素图层 IFeatureLayer newFeaLayer = new FeatureLayerClass(); newFeaLayer.FeatureClass = featureClass; newFeaLayer.Name = aliasname; //添加新建图层到相应图层组中 IGroupLayer groupLayer = new GroupLayerClass(); string groupLayerName = aliasname.Split("-".ToCharArray())[1].Trim(); groupLayer = GetGroupLayerByName(groupLayerName); groupLayer.Add(newFeaLayer as ILayer); DataEditCommon.g_axTocControl.Update(); DataEditCommon.g_pAxMapControl.Refresh(); return(newFeaLayer); } catch (Exception ex) { Log.Debug(ex.ToString()); return(null); } }
private static void AddSubClass(MajorClass mc, GroupLayerClass group, Dictionary <string, IFeatureClass> fcs, string geoColumnName) { if (mc == null || string.IsNullOrEmpty(mc.ClassifyField) || string.IsNullOrEmpty(mc.Fc3D)) { return; } string[] arrayFc3DGuids = mc.Fc3D.Split(';'); if (arrayFc3DGuids == null || arrayFc3DGuids.Count() == 0) { return; } // 给每个大类节点关联上所有的要素类,并记录上所有要素类 Dictionary <string, DF3DFeatureClass> dict = new Dictionary <string, DF3DFeatureClass>(); foreach (string fc3DGuid in arrayFc3DGuids) { foreach (KeyValuePair <string, IFeatureClass> kv in fcs) { if (kv.Key == fc3DGuid) { dict[kv.Key] = new DF3DFeatureClass(kv.Value); DF3DFeatureClassManager.Instance.Add(dict[kv.Key]); break; } } } if (group is TreeNodeMajorClass) { (group as TreeNodeMajorClass).FeatureClasses = dict; } // 可视化所有的要素类 DF3DApplication app = DF3DApplication.Application; if (app == null || app.Current3DMapControl == null) { return; } AxRenderControl d3 = app.Current3DMapControl; Dictionary <string, IFeatureLayer> dictLayers = new Dictionary <string, IFeatureLayer>(); foreach (DF3DFeatureClass dffc in dict.Values) { IFeatureClass fc = dffc.GetFeatureClass(); if (fc == null) { continue; } IGeometryRender geoRender = new SimpleGeometryRender(); geoRender.RenderGroupField = "GroupId"; IFeatureLayer fl = d3.ObjectManager.CreateFeatureLayer(fc, geoColumnName, null, geoRender, d3.ProjectTree.RootID); if (fl != null) { dictLayers[fl.Guid.ToString()] = fl; dffc.SetFeatureLayer(fl); } } // 给每个大类节点划分二级子类 foreach (SubClass sc in mc.SubClasses) { TreeNodeSubClass tnsc = new TreeNodeSubClass() { Name = sc.Name, CustomValue = sc }; tnsc.FeatureLayers = dictLayers; tnsc.FeatureClasses = dict; tnsc.Visible = true; group.Add(tnsc); } group.Visible = true; group.CollapseAll(); }
public static List <ILayer> AnalyzeLayers(IWorkspace workspace) { var list = new List <ILayer>(); IEnumDataset enumDataset = workspace.get_Datasets(esriDatasetType.esriDTAny); enumDataset.Reset(); IDataset dataset = enumDataset.Next(); while (dataset != null) { if (dataset is IFeatureDataset) { IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace; IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset(dataset.Name); IEnumDataset enumdataset1 = featureDataset.Subsets; enumdataset1.Reset(); IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = featureDataset.Name; IDataset dataset1 = enumdataset1.Next(); while (dataset1 != null) { if (dataset1 is IFeatureClass) { IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(dataset1.Name); if (featureLayer.FeatureClass != null) { featureLayer.Name = featureLayer.FeatureClass.AliasName; list.Add(featureLayer); groupLayer.Add(featureLayer); } } dataset1 = enumdataset1.Next(); } //list.Add(groupLayer); } else if (dataset is IFeatureClass) { IFeatureWorkspace featureworkSpace = workspace as IFeatureWorkspace; IFeatureLayer featurelayer = new FeatureLayerClass(); featurelayer.FeatureClass = featureworkSpace.OpenFeatureClass(dataset.Name); featurelayer.Name = featurelayer.FeatureClass.AliasName; list.Add(featurelayer); } else if (dataset is IRasterDataset) { IRasterWorkspaceEx rasterWorkspace = workspace as IRasterWorkspaceEx; IRasterDataset rasterDataset = rasterWorkspace.OpenRasterDataset(dataset.Name); IRasterPyramid3 rasterPyramid = rasterDataset as IRasterPyramid3; if (rasterPyramid != null) { if (!(rasterPyramid.Present)) { rasterPyramid.Create(); } } IRasterLayer rasterLayer = new RasterLayerClass(); rasterLayer.CreateFromDataset(rasterDataset); ILayer layer = rasterLayer as ILayer; list.Add(layer); } dataset = enumDataset.Next(); } return(list); }
/// <summary> /// Add all current idaho ids for a given catalog id to arcmap /// </summary> /// <param name="catalogId">catalog id to be added</param> /// <param name="colorInterp">Kind of color interpretation. PAN, MS</param> private void AddIdahoWms(string catalogId, string colorInterp) { HashSet<string> idahoIds; switch (colorInterp) { case "PAN": idahoIds = IdahoIdRepo.GetPanIdahoIds(catalogId); break; case "MS": idahoIds = IdahoIdRepo.GetMsIdahoIds(catalogId); break; default: idahoIds = null; break; } if (idahoIds == null) return; IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = colorInterp + " " + catalogId; foreach (var id in idahoIds) { var wmsMapLayer = new WMSMapLayerClass(); // create and configure wms connection name, this is used to store the connection properties IWMSConnectionName pConnName = new WMSConnectionNameClass(); IPropertySet propSet = new PropertySetClass(); // create the idaho wms url var idahoUrl = string.Format( "http://idaho.geobigdata.io/v1/wms/idaho-images/{0}/{1}/mapserv?", id, this.token); Jarvis.Logger.Info("Adding WMS Layer to: " + idahoUrl); // setup the arcmap connection properties propSet.SetProperty("URL", idahoUrl); pConnName.ConnectionProperties = propSet; //uses the name information to connect to the service IDataLayer dataLayer = wmsMapLayer; try { dataLayer.Connect((IName)pConnName); } catch (Exception e) { Jarvis.Logger.Error("Problems connecting to WMS: " + e.Message); } // get wms service description var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription; ILayer wmsLayer = null; // add layers for the wms currently there will only be one. for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++) { var layerDesc = serviceDesc.LayerDescription[i]; var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc); for (var j = 0; j <= grpLayer.Count - 1; j++) { wmsLayer = wmsMapLayer; wmsMapLayer.Name = id; } } // turn on sub layers, add it to arcmap and move it to top of TOC SublayerVisibleOn(wmsLayer); groupLayer.Add(wmsLayer); } // turn on sub layers, add it to arcmap and move it to top of TOC ArcMap.Document.AddLayer(groupLayer); ArcMap.Document.FocusMap.MoveLayer(groupLayer, 0); }
private void AddAllDataset(IWorkspace pWorkspace, AxMapControl mapControl) { IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); //将Enum数据集中的数据一个个读到DataSet中 IDataset pDataset = pEnumDataset.Next(); //判断数据集是否有数据 while (pDataset != null) { TreeNode node = new TreeNode(); node.Name = pDataset.Name; node.Text = pDataset.Name; //treeView1.Nodes.Add(node); if (pDataset is IFeatureDataset) //要素数据集 { IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace; IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name); IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets; pEnumDataset1.Reset(); IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = pFeatureDataset.Name; IDataset pDataset1 = pEnumDataset1.Next(); while (pDataset1 != null) { if (pDataset1 is IFeatureClass) //要素类 { IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name); if (pFeatureLayer.FeatureClass != null) { pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; CheckBox checkbox = new CheckBox(); checkbox.Text = pFeatureLayer.Name; checkbox.Name = pFeatureLayer.Name; node.Nodes.Add(checkbox.Name); pGroupLayer.Add(pFeatureLayer); mapControl.Map.AddLayer(pFeatureLayer); } } pDataset1 = pEnumDataset1.Next(); } } else if (pDataset is IFeatureClass) //要素类 { IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name); pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; mapControl.Map.AddLayer(pFeatureLayer); } else if (pDataset is IRasterDataset) //栅格数据集 { IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace; IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDataset.Name); //影像金字塔判断与创建 IRasterPyramid3 pRasPyrmid; pRasPyrmid = pRasterDataset as IRasterPyramid3; if (pRasPyrmid != null) { if (!(pRasPyrmid.Present)) { pRasPyrmid.Create(); //创建金字塔 } } IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); ILayer pLayer = pRasterLayer as ILayer; mapControl.AddLayer(pLayer, 0); } pDataset = pEnumDataset.Next(); } mapControl.ActiveView.Refresh(); }
private void PrepareMapForOutput(object sender, MapOutput_EventArgs e) { ITrackCancel pTrackCancel = new CancelTrackerClass(); IProgressDialogFactory pPDFact = new ProgressDialogFactoryClass(); IProgressDialog2 pProgressDialog = null; //IMxDocument pMxDoc = null; try { //pMxDoc = (IMxDocument)m_app.Document; // check the spatial reference of the first map in the draw order ISpatialReference pSpatialRef = m_pISDUTExt.MxDocument.Maps.get_Item(0).SpatialReference; // get the template file and store the pagelayout and map IGxFile pGxFile = new GxMapClass(); pGxFile.Path = e.mapTemplatePath; //@"D:\Project\64235_SUT\development\current\src\templates\exA.mxt"; IGxMapPageLayout pGxMapPageLayout = (IGxMapPageLayout)pGxFile; IPageLayout pPageLayoutTemplate = pGxMapPageLayout.PageLayout; IMap pMapTemplate = FindMap(pPageLayoutTemplate); // make sure the user understands that we're only supporting one map frame in the template if (m_pISDUTExt.MxDocument.Maps.Count > 1) { System.Windows.Forms.DialogResult diagRes2 = MessageBox.Show("You have more maps than the target template can accomodate.\n" + "The top most map in your Table of Contents will be used in \n" + "the template and the others will be discarded. \n\n" + "Do you want to continue?", "SUITT Question", MessageBoxButtons.YesNo); if(diagRes2 == DialogResult.No) return; } // setup the progress dialog and show it pProgressDialog = (IProgressDialog2)pPDFact.Create(pTrackCancel,m_app.hWnd); pProgressDialog.Animation = esriProgressAnimationTypes.esriProgressGlobe; pProgressDialog.Title = "Loading and applying template..."; pProgressDialog.CancelEnabled = true; pProgressDialog.ShowDialog(); // save the layers in the template target frame to a List System.Collections.Generic.List<ILayer> templateMapLayers = new System.Collections.Generic.List<ILayer>(); for(int i = 0; i < pMapTemplate.LayerCount; i++) { templateMapLayers.Add(pMapTemplate.get_Layer(i)); } // remove other map frames from the current document (the 'destination') while (m_pISDUTExt.MxDocument.Maps.Count > 1) { m_pISDUTExt.MxDocument.Maps.RemoveAt(m_pISDUTExt.MxDocument.Maps.Count - 1); } IMap pMapToBeReplaced = m_pISDUTExt.MxDocument.FocusMap; // set the active view to the pagelayout mode m_pISDUTExt.MxDocument.ActiveView = (IActiveView)m_pISDUTExt.MxDocument.PageLayout; // Get active views and extents for both the template and current map frames. // Will be used to set the extents later IActiveView pAVdest = (IActiveView)m_pISDUTExt.MxDocument.FocusMap; IActiveView pAVtemplate = (IActiveView)pMapTemplate; IEnvelope pEnvDest = pAVdest.Extent; pEnvDest.SpatialReference = m_pISDUTExt.MxDocument.FocusMap.SpatialReference; IEnvelope pEnvTemplate = pAVtemplate.Extent; pEnvTemplate.SpatialReference = pMapTemplate.SpatialReference; // deal with reprojecting data frames as necessary DialogResult diagResMatchSR = DialogResult.No; try { if (pMapTemplate.SpatialReference.FactoryCode != pSpatialRef.FactoryCode) { diagResMatchSR = MessageBox.Show("The spatial reference of the map is not the\n" + "same as the target map of the template.\n\n" + "Do you want to change the current map spatial reference to\n" + "match the template spatial reference?", "SUITT Question", MessageBoxButtons.YesNo); if (diagResMatchSR == DialogResult.No) { //m_pISDUTExt.Document.Maps.get_Item(0).SpatialReference = pMapTemplate.SpatialReference; pMapTemplate.SpatialReference = pMapToBeReplaced.SpatialReference; } } } catch { } // save the layers in the current map frame to a List System.Collections.Generic.List<ILayer> destMapLayers = new System.Collections.Generic.List<ILayer>(); for(int i = 0; i < m_pISDUTExt.MxDocument.FocusMap.LayerCount; i++) { destMapLayers.Add(m_pISDUTExt.MxDocument.FocusMap.get_Layer(i)); } // if the spatial reference systems don't match, project the current map envelope // to match the SR of the template --> will use this to set the extents later if (pMapTemplate.SpatialReference.FactoryCode != pMapToBeReplaced.SpatialReference.FactoryCode) { pEnvDest.Project(pEnvTemplate.SpatialReference); } IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = "Layers From Template"; // group the layers in the new map frame (from the template) //for(int i = 0; i < templateMapLayers.Count; i++) foreach(ILayer pLayer in templateMapLayers) { pGroupLayer.Add(pLayer); pMapTemplate.DeleteLayer(pLayer); } // copy all elements from the template to the current document pagelayout CopyPasteLayoutElements(m_pISDUTExt.MxDocument.PageLayout, pPageLayoutTemplate); // add the layers from the current (destination) document to the new map frame // that got copied over from the template for (int i = destMapLayers.Count - 1; i >= 0; i--) { pMapTemplate.AddLayer(destMapLayers[i]); } // add and move group layer to top of TOC pMapTemplate.AddLayer((ILayer)pGroupLayer); pMapTemplate.MoveLayer((ILayer)pGroupLayer, 0); //m_pISDUTExt.Document.Maps.get_Item(0).AddLayer((ILayer)pGroupLayer); //m_pISDUTExt.Document.Maps.get_Item(0).MoveLayer((ILayer)pGroupLayer, 0); // set the extent of the map pAVtemplate.Extent = pEnvDest; // refresh the TOC m_pISDUTExt.MxDocument.CurrentContentsView.Refresh(null); // Do the search and replaces for the text elements Hashtable htSearchAndRep = new Hashtable(); // add the date string strDate = DateTime.Today.ToLongDateString(); htSearchAndRep.Add("<Enter Date Here>",strDate); pSpatialRef = m_pISDUTExt.MxDocument.Maps.get_Item(0).SpatialReference; // add the spatial ref info IProjectedCoordinateSystem pPCS = pSpatialRef as IProjectedCoordinateSystem; try { // try to set the datum if (pPCS != null) { IDatum pDatum = pPCS.GeographicCoordinateSystem.Datum; /* * esriSRDatum_NAD1927 6267 North American Datum 1927. * esriSRDatum_NAD1983 6269 North American Datum 1983. */ if (pDatum.FactoryCode == 6267) htSearchAndRep.Add("<Enter NAD Here>","27"); else if (pDatum.FactoryCode == 6269) htSearchAndRep.Add("<Enter NAD Here>","83"); } } catch{} try { // try to set the utm zone if (pPCS.FactoryCode >= 26903 && pPCS.FactoryCode <= 26923) // NAD83 UTM Zones 3-23 { string strZone = Convert.ToString(pPCS.FactoryCode - 26900); htSearchAndRep.Add("<Enter Zone Here>",strZone); } else if(pPCS.FactoryCode >= 26703 && pPCS.FactoryCode <= 26722) // NAD27 UTM Zones 3-22 { string strZone = Convert.ToString(pPCS.FactoryCode - 26700); htSearchAndRep.Add("<Enter Zone Here>",strZone); } } catch{} // do all replacements ReplaceText(htSearchAndRep,m_pISDUTExt.MxDocument.PageLayout); //m_pISDUTExt.Document = (IMxDocument)m_app.Document; //m_pISDUTExt.Document.FocusMap.MapScale = Convert.ToInt32(e.mapScale); pMapTemplate.MapScale = Convert.ToInt32(e.mapScale); //IActiveView pAV = (IActiveView)m_pISDUTExt.Document.PageLayout; //util.Utils.Release(m_pISDUTExt.Document); //pAV.Refresh(); pAVtemplate.Refresh(); } catch(Exception ex) { Debug.WriteLine(ex.Message + "\n" + ex.StackTrace); util.Logger.Write(" Descrip : Preparing map for output " + "\n Message : " + ex.Message + "\n StackTrc : " + ex.StackTrace,util.Logger.LogLevel.Debug); } finally { try { pProgressDialog.HideDialog(); //util.Utils.Release(m_pISDUTExt.Document); } catch{} } }
//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(); }
/// <summary> /// 创建要素图层 /// 也可以利用现有要素图层创建:IFeatureLayer featurelayer, /// </summary> /// <params name="map"></params> /// <params name="workspace"></params> /// <params name="layername"></params> /// <params name="aliasname"></params> /// <returns></returns> public IFeatureLayer CreateFeatureLayer(IMap map, IWorkspace workspace, string layername, string aliasname) { try { IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace; //IFields fields = featurelayer.FeatureClass.Fields; // 创建要素类的字段集 IFields fields = new FieldsClass(); IFieldsEdit fieldsEdit = (IFieldsEdit)fields; // 添加要素类必须字段:object ID 字段 IField oidField = new FieldClass(); IFieldEdit oidFieldEdit = (IFieldEdit)oidField; oidFieldEdit.Name_2 = "OBJECTID"; oidFieldEdit.Type_2 = esriFieldType.esriFieldTypeOID; fieldsEdit.AddField(oidField); // 创建几何定义(和空间参考) IGeometryDef geometryDef = new GeometryDefClass(); IGeometryDefEdit geometryDefEdit = (IGeometryDefEdit)geometryDef; geometryDefEdit.GeometryType_2 = esriGeometryType.esriGeometryPoint; //ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); //ISpatialReference spatialReference = //spatialReferenceFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983UTM_20N); //ISpatialReferenceResolution spatialReferenceResolution = (ISpatialReferenceResolution)spatialReference; //spatialReferenceResolution.ConstructFromHorizon(); //ISpatialReferenceTolerance spatialReferenceTolerance = (ISpatialReferenceTolerance)spatialReference; //spatialReferenceTolerance.SetDefaultXYTolerance(); geometryDefEdit.SpatialReference_2 = map.SpatialReference; //添加几何字段 IField geometryField = new FieldClass(); IFieldEdit geometryFieldEdit = (IFieldEdit)geometryField; geometryFieldEdit.Name_2 = "Shape"; geometryFieldEdit.Type_2 = esriFieldType.esriFieldTypeGeometry; geometryFieldEdit.GeometryDef_2 = geometryDef; fieldsEdit.AddField(geometryField); //新建字段 IField pField = new FieldClass(); IFieldEdit pFieldEdit = pField as IFieldEdit; pFieldEdit.Length_2 = 50; pFieldEdit.Name_2 = "ID"; pFieldEdit.AliasName_2 = "ID"; pFieldEdit.Type_2 = esriFieldType.esriFieldTypeString; fieldsEdit.AddField(pField); //检查字段的有效性 IFieldChecker fieldChecker = new FieldCheckerClass(); IEnumFieldError enumFieldError = null; IFields validatedFields = null; fieldChecker.ValidateWorkspace = (IWorkspace)featureWorkspace; fieldChecker.Validate(fields, out enumFieldError, out validatedFields); IFeatureClass featureClass = featureWorkspace.CreateFeatureClass(layername, validatedFields, null, null, esriFeatureType.esriFTSimple, "Shape", ""); //用创建的要素类生成要素图层 IFeatureLayer newFeaLayer = new FeatureLayerClass(); newFeaLayer.FeatureClass = featureClass; newFeaLayer.Name = aliasname; //添加新建图层到相应图层组中 IGroupLayer groupLayer = new GroupLayerClass(); string groupLayerName = aliasname.Split("-".ToCharArray())[1].Trim(); groupLayer = GetGroupLayerByName(groupLayerName); groupLayer.Add(newFeaLayer as ILayer); DataEditCommon.g_axTocControl.Update(); DataEditCommon.g_pAxMapControl.Refresh(); return newFeaLayer; } catch (Exception ex) { Log.Debug(ex.ToString()); return null; } }
protected override void handleClick( ) { startHourGlass("Add Edit Layers"); try { /* Value Map Renderer? */ IMap mp = this.ext.FocusMap; IGroupLayer grp = null; // look up layer for fc try { // to avoid first chance exceptions -- look for a group layer manually first // this is a work-around for an ESRI bug ... bool bGroup = false; for (int i = 0; i < mp.LayerCount; i++) { if (mp.get_Layer(i) is IGroupLayer) { bGroup = true; break; } } if (bGroup) { UID uid = new UIDClass(); // IGroupLayer uid.Value = "{EDAD6644-1810-11D1-86AE-0000F8751720}"; // may throw a 'A first chance exception of type // 'System.Runtime.InteropServices.COMException' occurred in ISDUTLib.dll' // seems to occur when there are not any group layers IEnumLayer layers = mp.get_Layers(uid, true); for (ILayer lyr = layers.Next(); lyr != null; lyr = layers.Next()) { if (lyr is IGroupLayer && lyr.Name == EDITS_LAYER_GRP_NAME) { Logger.Write("Found layer Edits"); mp.DeleteLayer(lyr); break; } } } } catch(Exception e) { Logger.Write(e); } // create it grp = new GroupLayerClass(); grp.Name = "Edits"; grp.Visible = true; grp.Expanded = false; mp.AddLayer(grp); IEnumDatasetName names = this.ext.TransactionManager.Current().PGDBConnection.get_DatasetNames(esriDatasetType.esriDTAny); for(IDatasetName curName = names.Next();curName!=null;curName = names.Next()) { string key = curName.Name; if (key != null && !key.Equals("ISDUT_SPATIAL_EDIT_EXTENTS_SP") && !key.Equals("DATA_ERRORS") && !key.Equals("METADATA") && !key.StartsWith("P_") && !key.StartsWith("C_") && !key.StartsWith("E_")) { // we have a working layer string editname = "E_" + key; // this.ext.TransactionManager.transactionConfig().get_EditIndicator(key); IFeatureClass edit_fc = null; try { edit_fc = ((IFeatureWorkspace)this.ext.TransactionManager.Current().PGDBConnection).OpenFeatureClass(editname); } catch(Exception e) { MessageBox.Show("PGDB Feature Class "+editname+" Not Found", "EXCEPTION", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new HandledException(e); } if(edit_fc!=null) { try { // add layer Logger.Write("Create Layer "+editname); IFeatureLayer pFeatureLayer = new FeatureLayer(); pFeatureLayer.Name = editname; pFeatureLayer.FeatureClass = edit_fc; pFeatureLayer.SpatialReference = ((IGeoDataset)edit_fc).SpatialReference; // setup renderer // http://www.pitt.edu/~nisg/cis/web/cgi/rgb.html IGeoFeatureLayer geoFeatureLayer = (IGeoFeatureLayer)pFeatureLayer; IUniqueValueRenderer pRender = new UniqueValueRendererClass(); pRender.FieldCount = 1; pRender.set_Field(0,EditsDAO.EDIT_STATE); pRender.DefaultSymbol = ((ISimpleRenderer)geoFeatureLayer.Renderer).Symbol; pRender.UseDefaultSymbol = true; IRgbColor red = new RgbColorClass(); red.Red = 255; IRgbColor orange = new RgbColorClass(); orange.Red = 255; orange.Green = 165; IRgbColor green = new RgbColorClass(); green.Green = 255; ISymbol delSym = null; ISymbol updSym = null; ISymbol insSym = null; switch (edit_fc.ShapeType) { case esriGeometryType.esriGeometryPoint: case esriGeometryType.esriGeometryMultipoint: { ISimpleMarkerSymbol s = new SimpleMarkerSymbolClass(); s.Style = esriSimpleMarkerStyle.esriSMSCircle; s.Size = 0.4; s.Color = red; delSym = (ISymbol)s; s = new SimpleMarkerSymbolClass(); s.Style = esriSimpleMarkerStyle.esriSMSCircle; s.Size = 0.4; s.Color = orange; updSym = (ISymbol)s; s = new SimpleMarkerSymbolClass(); s.Style = esriSimpleMarkerStyle.esriSMSCircle; s.Size = 0.4; s.Color = green; insSym = (ISymbol)s; } break; case esriGeometryType.esriGeometryLine: case esriGeometryType.esriGeometryPath: case esriGeometryType.esriGeometryPolyline: { ISimpleLineSymbol s = new SimpleLineSymbolClass(); s.Style = esriSimpleLineStyle.esriSLSSolid; s.Width = 0.4; s.Color = red; delSym = (ISymbol)s; s = new SimpleLineSymbolClass(); s.Style = esriSimpleLineStyle.esriSLSSolid; s.Width = 0.4; s.Color = orange; updSym = (ISymbol)s; s = new SimpleLineSymbolClass(); s.Style = esriSimpleLineStyle.esriSLSSolid; s.Width = 0.4; s.Color = green; insSym = (ISymbol)s; } break; case esriGeometryType.esriGeometryPolygon: case esriGeometryType.esriGeometryRing: case esriGeometryType.esriGeometryMultiPatch: default: { ISimpleFillSymbol s = new SimpleFillSymbolClass(); s.Style = esriSimpleFillStyle.esriSFSSolid; s.Outline.Width = 0.4; s.Color = red; delSym = (ISymbol)s; s = new SimpleFillSymbolClass(); s.Style = esriSimpleFillStyle.esriSFSSolid; s.Outline.Width = 0.4; s.Color = orange; updSym = (ISymbol)s; s = new SimpleFillSymbolClass(); s.Style = esriSimpleFillStyle.esriSFSSolid; s.Outline.Width = 0.4; s.Color = green; insSym = (ISymbol)s; } break; } Logger.Write("Setup Value Map Renderer"); // add values pRender.AddValue(EditsDAO.DEL,EditsDAO.EDIT_STATE,delSym); pRender.AddValue(EditsDAO.UPD,EditsDAO.EDIT_STATE,updSym); pRender.AddValue(EditsDAO.INS,EditsDAO.EDIT_STATE,insSym); geoFeatureLayer.Renderer = (IFeatureRenderer)pRender; pFeatureLayer.Visible = true; pFeatureLayer.Selectable = false; Logger.Write("Adding layer "+editname); grp.Add(pFeatureLayer); } catch(Exception e) { MessageBox.Show("Error Creating new Edit Layer "+editname+": "+e.Message, "EXCEPTION", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new HandledException(e); } } } } } finally { endHourGlass(); } this.ext.MxDocument.UpdateContents(); this.app.RefreshWindow(); }
private static IGroupLayer RefreshLayer(string catId, List<string> idahoIds, out bool unRecoverableError) { IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = catId; foreach (var id in idahoIds) { var wmsMapLayer = CreateWmsMapLayer(id); if(wmsMapLayer == null) { Jarvis.Logger.Info("An unknown issue occurred trying to establish a WMS layer link"); unRecoverableError = true; return null; } // get wms service description var serviceDesc = wmsMapLayer.IWMSGroupLayer_WMSServiceDescription; ILayer wmsLayer = null; // add layers for the wms currently there will only be one. for (var i = 0; i <= serviceDesc.LayerDescriptionCount - 1; i++) { var layerDesc = serviceDesc.LayerDescription[i]; var grpLayer = wmsMapLayer.CreateWMSGroupLayers(layerDesc); for (var j = 0; j <= grpLayer.Count - 1; j++) { wmsLayer = wmsMapLayer; wmsMapLayer.Name = id; } } // turn on sub layers, add it to arcmap and move it to top of TOC SublayerVisibleOn(wmsLayer); groupLayer.Add(wmsLayer); } // No error occurred unRecoverableError = false; return groupLayer; }
//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); }
private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool hasTopologyStuff, bool hasStationFunction, bool useRepresentation) { // Get references to the map for adding layers and tables IMxDocument MxDoc = (IMxDocument)ArcMap.Document; IMap thisMap = MxDoc.FocusMap; IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap; // Create a group layer IGroupLayer GeoMapGroupLayer = new GroupLayerClass(); GeoMapGroupLayer.Name = "Geologic Map"; if (hasTopologyStuff == true) { #region "GeologicMapTopology" ITopology geoMapTopo = commonFunctions.OpenTopology(ValidNcgmpDatabase,"GeologicMapTopology"); ITopologyLayer geoMapTopoTL = new TopologyLayerClass(); geoMapTopoTL.Topology = geoMapTopo; ILayer geoMapTopoL = (ILayer)geoMapTopoTL; geoMapTopoL.Name = "Geologic Map Topology"; geoMapTopoL.Visible = false; // Minimizing the legend info in the Table of Contents is not trivial ILegendInfo geoMapTopoLegendInfo = (ILegendInfo)geoMapTopoL; ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(1); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(2); geoMapTopoLegendGroup.Visible = false; GeoMapGroupLayer.Add(geoMapTopoL); #endregion } if (hasStationFunction == true) { // Create a Group layer IGroupLayer stationGroupLayer = new GroupLayerClass(); stationGroupLayer.Name = "Station Data"; #region "StationPoints" // Open a FeatureClass, set it to a FeatureLayer IFeatureClass stationFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "StationPoints"); IFeatureLayer stationFL = new FeatureLayerClass(); stationFL.FeatureClass = stationFC; // Configure the FeatureLayer stationFL.Name = "Stations"; stationFL.DisplayField = "FieldID"; // Collapse the legend for this layer ILegendInfo stationLegendInfo = (ILegendInfo)stationFL; ILegendGroup stationLegendGroup = stationLegendInfo.get_LegendGroup(0); stationLegendGroup.Visible = false; // Finally, add the layer to the group layer stationGroupLayer.Add(stationFL); #endregion // Repeat for all these FeatureClasses #region "SamplePoints" IFeatureClass sampleFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "SamplePoints"); IFeatureLayer sampleFL = new FeatureLayerClass(); sampleFL.FeatureClass = sampleFC; sampleFL.Name = "Samples"; sampleFL.DisplayField = "FieldID"; ILegendInfo sampleLegendInfo = (ILegendInfo)sampleFL; ILegendGroup sampleLegendGroup = sampleLegendInfo.get_LegendGroup(0); sampleLegendGroup.Visible = false; stationGroupLayer.Add(sampleFL); #endregion #region "OrientationDataPoints" IFeatureClass structureFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationDataPoints"); IFeatureLayer structureFL = new FeatureLayerClass(); structureFL.FeatureClass = structureFC; structureFL.Name = "Orientation Data"; structureFL.DisplayField = "Type"; // Symbology, if representations are present if (useRepresentation == true) { // FeatureLayer must be cast as a GeoFeatureLayer in order to access the Renderer IGeoFeatureLayer structureGeoFL = (IGeoFeatureLayer)structureFL; // Create a RepresentationClassRenderer, assign the appropriate RepresentationClass to it IRepresentationRenderer structureRepRend = new RepresentationRendererClass(); structureRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_OrientationDataPoints"); // Assign the RepresentationClassRenderer to the GeoFeatureLayer structureGeoFL.Renderer = (IFeatureRenderer)structureRepRend; // Assign generic FeatureTemplates commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, structureFL as ILayer, "OrientationDataPoints"); } ILegendInfo structureLegendInfo = (ILegendInfo)structureFL; ILegendGroup structureLegendGroup = structureLegendInfo.get_LegendGroup(0); structureLegendGroup.Visible = false; stationGroupLayer.Add(structureFL); #endregion // Add the Group Layer to the main layer stationGroupLayer.Expanded = true; GeoMapGroupLayer.Add(stationGroupLayer); #region "Notes Table" ITable notesTable = commonFunctions.OpenTable(ValidNcgmpDatabase, "Notes"); IStandaloneTable notesStandalone = new StandaloneTableClass(); notesStandalone.Table = notesTable; notesStandalone.Name = "Notes"; notesStandalone.DisplayField = "Type"; thisMapTables.AddStandaloneTable(notesStandalone); #endregion #region "RelatedDocuments Table" ITable relatedDocsTable = commonFunctions.OpenTable(ValidNcgmpDatabase, "RelatedDocuments"); IStandaloneTable relatedDocsStandalone = new StandaloneTableClass(); relatedDocsStandalone.Table = relatedDocsTable; relatedDocsStandalone.Name = "Related Documents"; relatedDocsStandalone.DisplayField = "Type"; thisMapTables.AddStandaloneTable(relatedDocsStandalone); #endregion } if (hasTopologyStuff == true) { #region "OtherLines" IFeatureClass otherLinesFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OtherLines"); IFeatureLayer otherLinesFL = new FeatureLayerClass(); otherLinesFL.FeatureClass = otherLinesFC; otherLinesFL.Name = "Other Lines"; otherLinesFL.DisplayField = "Type"; if (useRepresentation == true) { IGeoFeatureLayer otherLinesGeoFL = (IGeoFeatureLayer)otherLinesFL; IRepresentationRenderer otherLinesRepRend = new RepresentationRendererClass(); otherLinesRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_OtherLines"); otherLinesGeoFL.Renderer = (IFeatureRenderer)otherLinesRepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, otherLinesFL as ILayer, "OtherLines"); } ILegendInfo otherLinesLegendInfo = (ILegendInfo)otherLinesFL; ILegendGroup otherLinesLegendGroup = otherLinesLegendInfo.get_LegendGroup(0); otherLinesLegendGroup.Visible = false; GeoMapGroupLayer.Add(otherLinesFL); #endregion } #region "ContactsAndFaults" IFeatureClass contactsAndFaultsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "ContactsAndFaults"); IFeatureLayer contactsAndFaultsFL = new FeatureLayerClass(); contactsAndFaultsFL.FeatureClass = contactsAndFaultsFC; contactsAndFaultsFL.Name = "Contacts and Faults"; contactsAndFaultsFL.DisplayField = "Type"; if (useRepresentation == true) { // Set the layer renderer to use representations IGeoFeatureLayer contactsAndFaultsGeoFL = (IGeoFeatureLayer)contactsAndFaultsFL; IRepresentationRenderer contactsAndFaultsRepRend = new RepresentationRendererClass(); contactsAndFaultsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "r_ContactsAndFaults"); contactsAndFaultsGeoFL.Renderer = (IFeatureRenderer)contactsAndFaultsRepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, contactsAndFaultsFL as ILayer, "ContactsAndFaults"); } ILegendInfo contactsAndFaultsLegendInfo = (ILegendInfo)contactsAndFaultsFL; ILegendGroup contactsAndFaultsLegendGroup = contactsAndFaultsLegendInfo.get_LegendGroup(0); contactsAndFaultsLegendGroup.Visible = false; GeoMapGroupLayer.Add(contactsAndFaultsFL); #endregion if (hasTopologyStuff == true) { #region "OverlayPolys" IFeatureClass overlayPolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OverlayPolys"); IFeatureLayer overlayPolysFL = new FeatureLayerClass(); overlayPolysFL.FeatureClass = overlayPolysFC; overlayPolysFL.Name = "Overlay Polygons"; overlayPolysFL.DisplayField = "MapUnit"; ILegendInfo overlayPolysLegendInfo = (ILegendInfo)overlayPolysFL; ILegendGroup overlayPolysLegendGroup = overlayPolysLegendInfo.get_LegendGroup(0); overlayPolysLegendGroup.Visible = false; GeoMapGroupLayer.Add(overlayPolysFL); #endregion } #region "MapUnitPolys" IFeatureClass mapUnitPolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "MapUnitPolys"); IFeatureLayer mapUnitPolysFL = new FeatureLayerClass(); mapUnitPolysFL.FeatureClass = mapUnitPolysFC; mapUnitPolysFL.Name = "Distribution of Map Units"; mapUnitPolysFL.DisplayField = "MapUnit"; ILegendInfo mapUnitPolysLegendInfo = (ILegendInfo)mapUnitPolysFL; ILegendGroup mapUnitPolysLegendGroup = mapUnitPolysLegendInfo.get_LegendGroup(0); mapUnitPolysLegendGroup.Visible = false; GeoMapGroupLayer.Add(mapUnitPolysFL); #endregion if (hasTopologyStuff == true) { #region "DataSourcePolys" IFeatureClass dataSourcePolysFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "DataSourcePolys"); IFeatureLayer dataSourcePolysFL = new FeatureLayerClass(); dataSourcePolysFL.FeatureClass = dataSourcePolysFC; dataSourcePolysFL.Name = "Data Source Polys"; dataSourcePolysFL.DisplayField = "DataSourceID"; ILegendInfo dataSourcePolysLegendInfo = (ILegendInfo)dataSourcePolysFL; ILegendGroup dataSourcePolysLegendGroup = dataSourcePolysLegendInfo.get_LegendGroup(0); dataSourcePolysLegendGroup.Visible = false; GeoMapGroupLayer.Add(dataSourcePolysFL); #endregion } // Add the Geologic Map Group Layer to the map GeoMapGroupLayer.Expanded = true; thisMap.AddLayer(GeoMapGroupLayer); // Adjust the MapUnitPolys Renderer commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase); // Adjust the MapUnitPolys Feature Templates commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase); }
private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool useRepresentation) // bool hasTopologyStuff, bool hasStationFunction, { // Get references to the map for adding layers and tables IMxDocument MxDoc = (IMxDocument)ArcMap.Document; IMap thisMap = MxDoc.FocusMap; IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap; // Create a group layer IGroupLayer GeoMapGroupLayer = new GroupLayerClass(); GeoMapGroupLayer.Name = "Geologic Map"; // Create a group layer IGroupLayer StationGroupLayer = new GroupLayerClass(); StationGroupLayer.Name = "Observation Data"; //if (hasTopologyStuff == true) { #region "GeologicMapTopology" ITopology geoMapTopo = commonFunctions.OpenTopology(ValidNcgmpDatabase, "GeologicMapTopology"); ITopologyLayer geoMapTopoTL = new TopologyLayerClass(); geoMapTopoTL.Topology = geoMapTopo; ILayer geoMapTopoL = (ILayer)geoMapTopoTL; geoMapTopoL.Name = "Geologic Map Topology"; geoMapTopoL.Visible = false; // Minimizing the legend info in the Table of Contents is not trivial ILegendInfo geoMapTopoLegendInfo = (ILegendInfo)geoMapTopoL; ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(1); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(2); geoMapTopoLegendGroup.Visible = false; GeoMapGroupLayer.Add(geoMapTopoL); #endregion } { #region "OrientationPoints" IFeatureClass orientationPointsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationPoints"); IFeatureLayer orientationPointsFL = new FeatureLayerClass(); orientationPointsFL.FeatureClass = orientationPointsFC; orientationPointsFL.Name = "Orientation Points"; orientationPointsFL.DisplayField = "Type"; if (useRepresentation == true) { // Set the layer renderer to use representations IGeoFeatureLayer orientationPointsGeoFL = (IGeoFeatureLayer)orientationPointsFL; IRepresentationRenderer orientationPointsRepRend = new RepresentationRendererClass(); orientationPointsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "OrientationPoints_Rep"); orientationPointsGeoFL.Renderer = (IFeatureRenderer)orientationPointsRepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, orientationPointsFL as ILayer, "OrientationPoints"); } ILegendInfo orientationPointsLegendInfo = (ILegendInfo)orientationPointsFL; ILegendGroup orientationPointsLegendGroup = orientationPointsLegendInfo.get_LegendGroup(0); orientationPointsLegendGroup.Visible = false; StationGroupLayer.Add(orientationPointsFL); #endregion #region "ObservationData" string[] arr = new string[4]; // Initialize arr[0] = "Stations"; // Element 1 arr[1] = "GenericPoints"; // Element 2 arr[2] = "GenericSamples"; // Element 3 arr[3] = "GeochronPoints"; // Element 4 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; FL.Visible = false; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; StationGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } //add station group layer to map document GeoMapGroupLayer.Add(StationGroupLayer); { #region "LinesWithoutRepresentations" string[] arr = new string[2]; // Initialize arr[0] = "CartographicLines"; // Element 1 arr[1] = "IsoValueLines"; // Element 2 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; FL.Visible = false; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "LinesWithRepresentations" string[] arr = new string[2]; // Initialize arr[0] = "GeologicLines"; // Element 1 arr[1] = "ContactsAndFaults"; // Element 2 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; if (useRepresentation == true) { // Set the layer renderer to use representations IGeoFeatureLayer GeoFL = (IGeoFeatureLayer)FL; IRepresentationRenderer RepRend = new RepresentationRendererClass(); RepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, s + "_Rep"); GeoFL.Renderer = (IFeatureRenderer)RepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, FL as ILayer, s); } ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "Polygons" string[] arr = new string[3]; // Initialize arr[0] = "DataSourcePolys"; // Element 1 arr[1] = "MapUnitPolys"; // Element 2 arr[2] = "OtherPolys"; // Element 3 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "Tables" string[] arr = new string[7]; // Initialize arr[0] = "DataSources"; // Element 1 arr[1] = "DescriptionOfMapUnits"; // Element 2 arr[2] = "ExtendedAttributes"; // Element 3 arr[3] = "GeologicEvents"; // Element 4 arr[4] = "Glossary"; // Element 5 arr[5] = "Notes"; // Element 6 arr[6] = "StandardLithology"; // Element 7 foreach (string s in arr) { try { ITable Table = commonFunctions.OpenTable(ValidNcgmpDatabase, s); IStandaloneTable Standalone = new StandaloneTableClass(); Standalone.Table = Table; Standalone.Name = s; thisMapTables.AddStandaloneTable(Standalone); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } // Add the Geologic Map Group Layer to the map GeoMapGroupLayer.Expanded = true; thisMap.AddLayer(GeoMapGroupLayer); // Adjust the MapUnitPolys Renderer commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase); // Adjust the MapUnitPolys Feature Templates commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase); }
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; }
// bool hasTopologyStuff, bool hasStationFunction, private void AddLayersToMap(IWorkspace ValidNcgmpDatabase, bool useRepresentation) { // Get references to the map for adding layers and tables IMxDocument MxDoc = (IMxDocument)ArcMap.Document; IMap thisMap = MxDoc.FocusMap; IStandaloneTableCollection thisMapTables = (IStandaloneTableCollection)thisMap; // Create a group layer IGroupLayer GeoMapGroupLayer = new GroupLayerClass(); GeoMapGroupLayer.Name = "Geologic Map"; // Create a group layer IGroupLayer StationGroupLayer = new GroupLayerClass(); StationGroupLayer.Name = "Observation Data"; //if (hasTopologyStuff == true) { #region "GeologicMapTopology" ITopology geoMapTopo = commonFunctions.OpenTopology(ValidNcgmpDatabase, "GeologicMapTopology"); ITopologyLayer geoMapTopoTL = new TopologyLayerClass(); geoMapTopoTL.Topology = geoMapTopo; ILayer geoMapTopoL = (ILayer)geoMapTopoTL; geoMapTopoL.Name = "Geologic Map Topology"; geoMapTopoL.Visible = false; // Minimizing the legend info in the Table of Contents is not trivial ILegendInfo geoMapTopoLegendInfo = (ILegendInfo)geoMapTopoL; ILegendGroup geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(0); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(1); geoMapTopoLegendGroup.Visible = false; geoMapTopoLegendGroup = geoMapTopoLegendInfo.get_LegendGroup(2); geoMapTopoLegendGroup.Visible = false; GeoMapGroupLayer.Add(geoMapTopoL); #endregion } { #region "OrientationPoints" IFeatureClass orientationPointsFC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, "OrientationPoints"); IFeatureLayer orientationPointsFL = new FeatureLayerClass(); orientationPointsFL.FeatureClass = orientationPointsFC; orientationPointsFL.Name = "Orientation Points"; orientationPointsFL.DisplayField = "Type"; if (useRepresentation == true) { // Set the layer renderer to use representations IGeoFeatureLayer orientationPointsGeoFL = (IGeoFeatureLayer)orientationPointsFL; IRepresentationRenderer orientationPointsRepRend = new RepresentationRendererClass(); orientationPointsRepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, "OrientationPoints_Rep"); orientationPointsGeoFL.Renderer = (IFeatureRenderer)orientationPointsRepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, orientationPointsFL as ILayer, "OrientationPoints"); } ILegendInfo orientationPointsLegendInfo = (ILegendInfo)orientationPointsFL; ILegendGroup orientationPointsLegendGroup = orientationPointsLegendInfo.get_LegendGroup(0); orientationPointsLegendGroup.Visible = false; StationGroupLayer.Add(orientationPointsFL); #endregion #region "ObservationData" string[] arr = new string[4]; // Initialize arr[0] = "Stations"; // Element 1 arr[1] = "GenericPoints"; // Element 2 arr[2] = "GenericSamples"; // Element 3 arr[3] = "GeochronPoints"; // Element 4 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; FL.Visible = false; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; StationGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } //add station group layer to map document GeoMapGroupLayer.Add(StationGroupLayer); { #region "LinesWithoutRepresentations" string[] arr = new string[2]; // Initialize arr[0] = "CartographicLines"; // Element 1 arr[1] = "IsoValueLines"; // Element 2 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; FL.Visible = false; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "LinesWithRepresentations" string[] arr = new string[2]; // Initialize arr[0] = "GeologicLines"; // Element 1 arr[1] = "ContactsAndFaults"; // Element 2 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; if (useRepresentation == true) { // Set the layer renderer to use representations IGeoFeatureLayer GeoFL = (IGeoFeatureLayer)FL; IRepresentationRenderer RepRend = new RepresentationRendererClass(); RepRend.RepresentationClass = commonFunctions.GetRepClass(ValidNcgmpDatabase, s + "_Rep"); GeoFL.Renderer = (IFeatureRenderer)RepRend; commonFunctions.BuildGenericTemplates(ValidNcgmpDatabase, FL as ILayer, s); } ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "Polygons" string[] arr = new string[3]; // Initialize arr[0] = "DataSourcePolys"; // Element 1 arr[1] = "MapUnitPolys"; // Element 2 arr[2] = "OtherPolys"; // Element 3 foreach (string s in arr) { try { IFeatureClass FC = commonFunctions.OpenFeatureClass(ValidNcgmpDatabase, s); IFeatureLayer FL = new FeatureLayerClass(); FL.FeatureClass = FC; FL.Name = s; ILegendInfo LegendInfo = (ILegendInfo)FL; ILegendGroup LegendGroup = LegendInfo.get_LegendGroup(0); LegendGroup.Visible = false; GeoMapGroupLayer.Add(FL); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } { #region "Tables" string[] arr = new string[7]; // Initialize arr[0] = "DataSources"; // Element 1 arr[1] = "DescriptionOfMapUnits"; // Element 2 arr[2] = "ExtendedAttributes"; // Element 3 arr[3] = "GeologicEvents"; // Element 4 arr[4] = "Glossary"; // Element 5 arr[5] = "Notes"; // Element 6 arr[6] = "StandardLithology"; // Element 7 foreach (string s in arr) { try { ITable Table = commonFunctions.OpenTable(ValidNcgmpDatabase, s); IStandaloneTable Standalone = new StandaloneTableClass(); Standalone.Table = Table; Standalone.Name = s; thisMapTables.AddStandaloneTable(Standalone); } catch (Exception ex) { // Write exception to C:\Users\<user name>\AppData\Local\Temp\NCGMPToolbarLog.txt string path = Path.Combine(Environment.GetEnvironmentVariables()["LOCALAPPDATA"] as string, "Temp/NCGMPToolbarLog.txt"); string message = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + s + ": " + ex.Message + "\r\n"; System.IO.File.AppendAllText(path, message); } } #endregion } // Add the Geologic Map Group Layer to the map GeoMapGroupLayer.Expanded = true; thisMap.AddLayer(GeoMapGroupLayer); // Adjust the MapUnitPolys Renderer commonFunctions.UpdateMapUnitPolysRenderer(ValidNcgmpDatabase); // Adjust the MapUnitPolys Feature Templates commonFunctions.UpdateMapUnitPolysFeatureTemplates(ValidNcgmpDatabase); }
//区分行政区 public static void AddMapOfByXZQ(IMap inMap, string inType, string ZTMC, IMap inSourceMap, string inXZQMC) { IMapLayers inMapLayers = inMap as IMapLayers; if (!File.Exists(LayerXMLpath)) { return; } XmlDocument cXmlDoc = new XmlDocument(); cXmlDoc.Load(LayerXMLpath); if (cXmlDoc == null) { return; } string xpath = ""; if (ZTMC == "")//规划不分年度 { xpath = "//DIR[@DIRType='" + inType + "']"; } else//现状分年度专题 { xpath = "//DIR[@DIRType='" + inType + "' and @NodeText='" + ZTMC + "']"; } XmlNode xn = cXmlDoc.SelectSingleNode(xpath); if (xn == null) { return; } inMap.Name = xn.Attributes["NodeText"].Value; //设置地图名称 string xzqmc = getXIAN(inXZQMC); //从不同级别的行政区获得县名称,以获得数据 if (xzqmc == null) { return; } if (ZTMC != "")//区分现状和规划 { string nxzq = ModGetData.AttrValueByXpath("//SpecialXZQ[@ZTMC='" + ZTMC + "']", "New"); if (nxzq != "") { if (nxzq.Contains(xzqmc)) { xzqmc = ModGetData.AttrValueByXpath("//SpecialXZQ[@ZTMC='" + ZTMC + "']", "Old"); } if (xzqmc == "") { return; } } } XmlNode xnXZQ = xn.SelectSingleNode(".//DataDIR[contains(@NodeText,'" + xzqmc + "')]"); if (xnXZQ == null) { return; } IGroupLayer gLayer = new GroupLayerClass(); gLayer.Name = xnXZQ.Attributes["NodeText"].Value; XmlNodeList xnl = xnXZQ.SelectNodes(".//Layer"); foreach (XmlNode pxn in xnl) { string nodeKey = pxn.Attributes["NodeKey"].Value; ILayer pLayer = GetLayerByNodeKey(inSourceMap, nodeKey); if (pLayer != null) { gLayer.Add(pLayer); } } if ((gLayer as ICompositeLayer).Count != 0) { if (!isExistGpLyr(inMap, gLayer.Name)) { inMapLayers.InsertLayer(gLayer as ILayer, false, inMapLayers.LayerCount); } } cXmlDoc = null; }
private void AddShapesFromDirToFocusMap(string dir, string grouplayername) { // Start tool for download from WFS service try { IWorkspaceFactory workspaceFactoryShape = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspaceFactoryShape.OpenFromFile(dir, 0); IGroupLayer groupLayer = new GroupLayerClass(); groupLayer.Name = grouplayername; IEnumDatasetName enumDatasetName = ((IWorkspace)featureWorkspace).get_DatasetNames(esriDatasetType.esriDTFeatureClass); IDatasetName featureDatasetName = (IDatasetName)enumDatasetName.Next(); while (featureDatasetName != null) { IFeatureLayer featureLayer = new FeatureLayerClass(); featureLayer.FeatureClass = featureWorkspace.OpenFeatureClass(featureDatasetName.Name); featureLayer.Name = featureDatasetName.Name; groupLayer.Add(featureLayer); featureDatasetName = (IDatasetName)enumDatasetName.Next(); } IMxDocument mxDoc = (IMxDocument)m_application.Document; IMap map = (IMap)mxDoc.FocusMap; IActiveView activeView = (IActiveView)map; map.AddLayer(groupLayer); mxDoc.UpdateContents(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
/// <summary> /// 加载工作空间的方法进行封装,以便在空间数据库中调用(Personal Geodatabase、文件地理数据库、ArcSDE空间数据库) /// </summary> /// <param name="pWorkspace"></param> /// <param name="pMapControl"></param> private void AddAllDataset(IWorkspace pWorkspace, AxMapControl pMapControl) { IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); pEnumDataset.Reset(); // 将Enum数据集中的数据一个一个地读到DataSet中 IDataset pDataset = pEnumDataset.Next(); // 判断数据集是否有数据 while (pDataset != null) { // 要素数据集 if (pDataset is IFeatureDataset) { IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace; IFeatureDataset pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name); IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets; pEnumDataset1.Reset(); IGroupLayer pGroupLayer = new GroupLayerClass(); pGroupLayer.Name = pFeatureDataset.Name; IDataset pDataset1 = pEnumDataset1.Next(); while (pDataset1 != null) { // 要素类 if (pDataset1 is IFeatureClass) { IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name); if (pFeatureLayer.FeatureClass != null) { pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; pGroupLayer.Add(pFeatureLayer); pMapControl.Map.AddLayer(pFeatureLayer); } } pDataset1 = pEnumDataset1.Next(); } } else if (pDataset is IFeatureClass) //要素类 { IFeatureWorkspace pFeatureWorkspace = (IFeatureWorkspace)pWorkspace; IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset.Name); pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName; pMapControl.Map.AddLayer(pFeatureLayer); } else if (pDataset is IRasterDataset) //栅格数据集 { IRasterWorkspaceEx pRasterWorkspace = (IRasterWorkspaceEx)pWorkspace; IRasterDataset pRasterDataset = pRasterWorkspace.OpenRasterDataset(pDataset.Name); //影像金字塔判断与创建 IRasterPyramid3 pRasPyrmid; pRasPyrmid = pRasterDataset as IRasterPyramid3; if (pRasPyrmid != null) { if (!(pRasPyrmid.Present)) { pRasPyrmid.Create(); //创建金字塔 } } IRasterLayer pRasterLayer = new RasterLayerClass(); pRasterLayer.CreateFromDataset(pRasterDataset); ILayer pLayer = pRasterLayer as ILayer; pMapControl.AddLayer(pLayer, 0); } pDataset = pEnumDataset.Next(); } pMapControl.ActiveView.Refresh(); // 同步鹰眼 SynchronizeEagleEye(); }
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"); }