public static IEnumerable<ITileSource> CreateFromWmscCapabilties(XDocument document) { var wmsCapabilities = new WmsCapabilities(document); return ParseVendorSpecificCapabilitiesNode( (XElement)wmsCapabilities.Capability.ExtendedCapabilities[XName.Get("VendorSpecificCapabilities")], wmsCapabilities.Capability.Request.GetCapabilities.DCPType[0].Http.Get.OnlineResource); }
public void WmsCapabilities_WhenInitializedWithWmsC_ShouldInitializeAllTileLayers() { // arrange using (var stream = File.OpenRead(Path.Combine("Resources", @"WmsCCapabilities_1_1_1.xml"))) { // act var capabilities = new WmsCapabilities(stream); // assert Assert.NotNull(capabilities.Version); Assert.AreEqual(54, capabilities.Capability.Layer.ChildLayers.Count); } }
public void WmsCapabilities_WhenCreatedWithValidCapabilitiesV111Document_ShouldInitializeCorrectly() { // arrange using (var stream = File.OpenRead(Path.Combine("Resources", @"FrioCountyTXMapsWmsCapabilities_1_1_1.xml"))) { // act var capabilities = new WmsCapabilities(stream); // assert Assert.NotNull(capabilities.Version); Assert.AreEqual("Frio County TX Maps", capabilities.Capability.Layer.Title); Assert.AreEqual(13, capabilities.Capability.Layer.ChildLayers.Count); } }
public void WmsCapabilities_WhenCreatedWithCapabilitiesWithMultipleRootLayers_ShouldInitializeCorrectly() { // arrange using (var stream = File.OpenRead(Path.Combine("Resources", @"MultiTopLayersCapabilities_1_3_0.xml"))) { // act var capabilities = new WmsCapabilities(stream); // assert Assert.NotNull(capabilities.Version); Assert.AreEqual("Root Layer", capabilities.Capability.Layer.Title); Assert.AreEqual(4, capabilities.Capability.Layer.ChildLayers.Count); } }
public void WmsCapabilities_WhenParsed_ShouldSetCorrectGetMapUrl() { // arrange using (var stream = File.OpenRead(Path.Combine("Resources", @"BgrGroundwaterWhyMapCapabilities_1_1_1.xml"))) { const string expectedUrl = "http://www.bgr.de/Service/groundwater/whymap/?"; // act var capabilities = new WmsCapabilities(stream); // assert Assert.True(expectedUrl == capabilities.Capability.Request.GetMap.DCPType[0].Http.Get.OnlineResource.Href); } }
public static WmsCapabilities Parse(Stream stream) { var settings = new XmlReaderSettings #if NET35 { ProhibitDtd = false }; #else { DtdProcessing = DtdProcessing.Ignore }; #endif using (var reader = XmlReader.Create(stream, settings)) { reader.MoveToContent(); var version = reader.GetAttribute("version"); var wms = new WmsCapabilities(version); var updateSequence = reader.GetAttribute("updateSequence"); if (!string.IsNullOrEmpty(updateSequence)) { wms.UpdateSequence = int.Parse(updateSequence, NumberFormatInfo.InvariantInfo); } if (reader.IsEmptyElement) { reader.Read(); return(null); } if (wms.Version.Version >= WmsVersionEnum.Version_1_3_0) { reader.ReadStartElement("WMS_Capabilities"); } else { reader.ReadStartElement("WMT_MS_Capabilities"); } reader.MoveToContent(); wms.Service.ReadXml(reader.ReadSubtree()); reader.ReadEndElement(); reader.MoveToContent(); wms.Capability.ReadXml(reader.ReadSubtree()); reader.ReadEndElement(); reader.ReadEndElement(); return(wms); } }
public WMSServerParameters(WmsInfo data) { InitializeComponent(); WmsInfo = data; if (WmsInfo == null) return; _wmsCapabilities = WmsInfo.WmsCapabilities; tbServerUrl.Text = WmsInfo.ServerUrl; if (WmsInfo.Credentials != null) { tbLogin.Text = WmsInfo.Credentials.UserName; tbPassword.Text = WmsInfo.Credentials.Password; } ShowServerDetails(_wmsCapabilities); InitLayers(_wmsCapabilities); // Select layer tvLayers.SelectedNode = FindNodeByLayer(tvLayers.Nodes, WmsInfo.Layer); if (tvLayers.SelectedNode != null) tvLayers.SelectedNode.EnsureVisible(); tvLayers.Select(); tvLayers.Focus(); // Select CRS lbCRS.SelectedItem = WmsInfo.CRS; // Select Style for (int i = 0; i < lbStyles.Items.Count; i++) { var style = (StyleWrapper) lbStyles.Items[i]; if (style.Style.Name == WmsInfo.Style) { lbStyles.SelectedIndex = i; break; } } // Show custom parameters if (WmsInfo.CustomParameters != null) { tbCustomParameters.Text = string.Join(Environment.NewLine, WmsInfo.CustomParameters.Select(d => string.Format("{0}={1}", d.Key, d.Value))); } }
public static WmsCapabilities Parse(Stream stream) { var settings = new XmlReaderSettings #if NET35 { ProhibitDtd = false }; #else { DtdProcessing = DtdProcessing.Ignore }; #endif using (var reader = XmlReader.Create(stream, settings)) { reader.MoveToContent(); var version = reader.GetAttribute("version"); var wms = new WmsCapabilities(version); var updateSequence = reader.GetAttribute("updateSequence"); if (!string.IsNullOrEmpty(updateSequence)) wms.UpdateSequence = int.Parse(updateSequence, NumberFormatInfo.InvariantInfo); if (reader.IsEmptyElement) { reader.Read(); return null; } if (wms.Version.Version >= WmsVersionEnum.Version_1_3_0) reader.ReadStartElement("WMS_Capabilities"); else { reader.ReadStartElement("WMT_MS_Capabilities"); } reader.MoveToContent(); wms.Service.ReadXml(reader.ReadSubtree()); reader.ReadEndElement(); reader.MoveToContent(); wms.Capability.ReadXml(reader.ReadSubtree()); reader.ReadEndElement(); reader.ReadEndElement(); return wms; } }
private void btnGetCapabilities_Click(object sender, EventArgs e) { var serverUrl = tbServerUrl.Text; if (String.IsNullOrWhiteSpace(serverUrl)) return; if (serverUrl.IndexOf("Request=GetCapabilities", StringComparison.OrdinalIgnoreCase) < 0) { serverUrl = serverUrl + "&Request=GetCapabilities"; } if (serverUrl.IndexOf("SERVICE=WMS", StringComparison.OrdinalIgnoreCase) < 0) { serverUrl = serverUrl + "&SERVICE=WMS"; } WmsCapabilities capabilities; try { var myRequest = WebRequest.Create(serverUrl); myRequest.Credentials = GetUserCredentials(); using (var myResponse = myRequest.GetResponse()) using (var stream = myResponse.GetResponseStream()) capabilities = new WmsCapabilities(stream); } catch (Exception ex) { MessageBox.Show("Unable to read capabilities: " + ex.Message); return; } WmsInfo = null; _wmsCapabilities = capabilities; ShowServerDetails(capabilities); InitLayers(capabilities); }
private void InitLayers(WmsCapabilities capabilities) { tvLayers.Nodes.Clear(); FillTree(tvLayers.Nodes, capabilities.Capability.Layer); tvLayers.ExpandAll(); }
private void ShowServerDetails(WmsCapabilities capabilities) { tbServerTitle.Text = capabilities.Service.Title; tbServerAbstract.Text = capabilities.Service.Abstract; tbServerOnlineResource.Text = capabilities.Service.OnlineResource.Href; tbServerAccessConstraints.Text = capabilities.Service.AccessConstraints; }