internal static string GetURLFromWMSLayer(ILayer layer) { IWMSConnectionName wmsObjectName = GetWMSConnectionName(layer); if (wmsObjectName == null) { return("!Error - WMS Connection Object Name Not Found"); } return(wmsObjectName.ConnectionProperties.GetProperty("URL").ToString()); }
internal static string GetAllPropertiesFromWMSLayer(ILayer layer) { object keys = null, values = null; if (HasWMSConnectionName(layer)) { IWMSConnectionName wmsObjectName = GetWMSConnectionName(layer); if (wmsObjectName != null) { wmsObjectName.ConnectionProperties.GetAllProperties(out keys, out values); } } if (HasWMTSConnectionName(layer)) { IWMTSConnectionName wmtsObjectName = GetWMTSConnectionName(layer); if (wmtsObjectName != null) { wmtsObjectName.ConnectionProperties.GetAllProperties(out keys, out values); } } if (keys == null || values == null) { return("!Error - WMS Connection Object Name Not Found"); } string[] names = (string[])keys; object[] props = (object[])values; StringBuilder sb = new StringBuilder(); for (int i = 0; i < names.Length; i++) { var prop = props[i] == null || string.IsNullOrWhiteSpace(props[i].ToString()) ? "<NONE>" : props[i].ToString(); sb.Append(names[i] + ":" + prop + "; "); } var res = sb.ToString(); return(res); }
//pHostOrUrl 服务地址 public void GetWMSServerLayer(string pHostOrUrl, bool pIsLAN) { IWMSConnectionFactory pWmsFac = new WMSConnectionFactory(); IWMSConnection pWmsConn = null; IPropertySet pProSet = new PropertySet(); if (pIsLAN) { pProSet.SetProperty("machine", pHostOrUrl); } else { pProSet.SetProperty("url", pHostOrUrl); } ///连接服务 try { pWmsConn = pWmsFac.Open(pProSet, 0, null); System.Runtime.InteropServices.Marshal.ReleaseComObject(pWmsFac); pWmsFac = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(pProSet); pProSet = null; if (pWmsConn != null) { ///获取所有的服务名称 IWMSConnectionName pWmsConnectionName = pWmsConn.FullName as IWMSConnectionName; ILayerFactory pLayerFactory = new EngineWMSMapLayerFactoryClass(); if (pLayerFactory.get_CanCreate(pWmsConnectionName)) { IEnumLayer pEnumLayer = pLayerFactory.Create(pWmsConnectionName); pEnumLayer.Reset(); ILayer pLayer = pEnumLayer.Next(); while (pLayer != null) { if (pLayer is IWMSMapLayer) { IWMSMapLayer pWmsMapLayer = pLayer as IWMSMapLayer; IWMSGroupLayer pWmsGroupLayer = pWmsMapLayer as IWMSGroupLayer; DevComponents.AdvTree.Node nService = new DevComponents.AdvTree.Node(); nService.Text = pLayer.Name; int iService = advTree1.Nodes.Add(nService);//一级服务名 for (int j = 0; j < pWmsGroupLayer.Count; j++) { ILayer pTmpLayer = pWmsGroupLayer.get_Layer(j); IWMSGroupLayer pTmpWmsGroupLayer = pTmpLayer as IWMSGroupLayer; if (pTmpWmsGroupLayer != null) { DevComponents.AdvTree.Node nMap = new DevComponents.AdvTree.Node(); nMap.Text = pTmpLayer.Name; int iMap = nService.Nodes.Add(nMap);//二级地图名 for (int k = 0; k < pTmpWmsGroupLayer.Count; k++) { ILayer pTmpTmplayer = pTmpWmsGroupLayer.get_Layer(k); DevComponents.AdvTree.Node nLayer = new DevComponents.AdvTree.Node(); nLayer.Text = pTmpTmplayer.Name; nMap.Nodes.Add(nLayer);//三级图层名 } } } } pLayer = pEnumLayer.Next(); } } System.Runtime.InteropServices.Marshal.ReleaseComObject(pLayerFactory); pLayerFactory = null; } } catch { } advTree1.ExpandAll(); }