/// <summary> /// Generates an XML containing WMS capabilities. /// </summary> /// <param name="map">A MapAround.Mapping.Map instance</param> /// <param name="serviceDescription">A MapAround.Web.Wms.WmsServiceDescription instance</param> /// <returns>A System.Xml.XmlDocument instance containing WMS capabilities in compliance to the WMS standard</returns> public static XmlDocument GetCapabilities(Map map, WmsServiceDescription serviceDescription) { XmlDocument capabilities = new XmlDocument(); capabilities.InsertBefore(capabilities.CreateXmlDeclaration("1.0", "UTF-8", string.Empty), capabilities.DocumentElement); XmlNode rootNode = capabilities.CreateNode(XmlNodeType.Element, "WMS_Capabilities", wmsNamespaceURI); rootNode.Attributes.Append(createAttribute("version", "1.1.1", capabilities)); XmlAttribute attr = capabilities.CreateAttribute("xmlns", "xsi", "http://www.w3.org/2000/xmlns/"); attr.InnerText = "http://www.w3.org/2001/XMLSchema-instance"; rootNode.Attributes.Append(attr); rootNode.Attributes.Append(createAttribute("xmlns:xlink", xlinkNamespaceURI, capabilities)); XmlAttribute attr2 = capabilities.CreateAttribute("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance"); rootNode.AppendChild(GenerateServiceNode(ref serviceDescription, capabilities)); rootNode.AppendChild(GenerateCapabilityNode(map, serviceDescription, capabilities)); capabilities.AppendChild(rootNode); return(capabilities); }
/// <summary> /// Generates an XML containing WMS capabilities. /// </summary> /// <param name="map">A MapAround.Mapping.Map instance</param> /// <param name="serviceDescription">A MapAround.Web.Wms.WmsServiceDescription instance</param> /// <returns>A System.Xml.XmlDocument instance containing WMS capabilities in compliance to the WMS standard</returns> public static XmlDocument GetCapabilities(Map map, WmsServiceDescription serviceDescription) { XmlDocument capabilities = new XmlDocument(); capabilities.InsertBefore(capabilities.CreateXmlDeclaration("1.0", "UTF-8", string.Empty), capabilities.DocumentElement); XmlNode rootNode = capabilities.CreateNode(XmlNodeType.Element, "WMS_Capabilities", wmsNamespaceURI); rootNode.Attributes.Append(createAttribute("version", "1.1.1", capabilities)); XmlAttribute attr = capabilities.CreateAttribute("xmlns", "xsi", "http://www.w3.org/2000/xmlns/"); attr.InnerText = "http://www.w3.org/2001/XMLSchema-instance"; rootNode.Attributes.Append(attr); rootNode.Attributes.Append(createAttribute("xmlns:xlink", xlinkNamespaceURI, capabilities)); XmlAttribute attr2 = capabilities.CreateAttribute("xsi", "schemaLocation", "http://www.w3.org/2001/XMLSchema-instance"); rootNode.AppendChild(GenerateServiceNode(ref serviceDescription, capabilities)); rootNode.AppendChild(GenerateCapabilityNode(map, serviceDescription, capabilities)); capabilities.AppendChild(rootNode); return capabilities; }
private static XmlNode GenerateServiceNode(ref WmsServiceDescription serviceDescription, XmlDocument capabilities) { XmlElement serviceNode = capabilities.CreateElement("Service", wmsNamespaceURI); serviceNode.AppendChild(createElement("Name", "OGC:WMS", capabilities, false, wmsNamespaceURI)); serviceNode.AppendChild(createElement("Title", serviceDescription.Title, capabilities, false, wmsNamespaceURI)); if (!String.IsNullOrEmpty(serviceDescription.Abstract)) serviceNode.AppendChild(createElement("Abstract", serviceDescription.Abstract, capabilities, false, wmsNamespaceURI)); if (serviceDescription.Keywords != null && serviceDescription.Keywords.Length > 0) { XmlElement KeywordListNode = capabilities.CreateElement("KeywordList", wmsNamespaceURI); foreach (string keyword in serviceDescription.Keywords) KeywordListNode.AppendChild(createElement("Keyword", keyword, capabilities, false, wmsNamespaceURI)); serviceNode.AppendChild(KeywordListNode); } // ссылка XmlElement onlineResourceNode = GenerateOnlineResourceElement(capabilities, serviceDescription.OnlineResource); serviceNode.AppendChild(onlineResourceNode); // контактная информация XmlElement contactInfoNode = GenerateContactInfoElement(capabilities, serviceDescription.ContactInformation); if (contactInfoNode.HasChildNodes) serviceNode.AppendChild(contactInfoNode); if (serviceDescription.Fees != null && serviceDescription.Fees != string.Empty) serviceNode.AppendChild(createElement("Fees", serviceDescription.Fees, capabilities, false, wmsNamespaceURI)); if (serviceDescription.AccessConstraints != null && serviceDescription.AccessConstraints != string.Empty) serviceNode.AppendChild(createElement("AccessConstraints", serviceDescription.AccessConstraints, capabilities, false, wmsNamespaceURI)); if (serviceDescription.LayerLimit > 0) serviceNode.AppendChild(createElement("LayerLimit", serviceDescription.LayerLimit.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); if (serviceDescription.MaxWidth > 0) serviceNode.AppendChild(createElement("MaxWidth", serviceDescription.MaxWidth.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); if (serviceDescription.MaxHeight > 0) serviceNode.AppendChild(createElement("MaxHeight", serviceDescription.MaxHeight.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); return serviceNode; }
/// <summary> /// /// </summary> /// <param name="description"></param> public WMSServer(WmsServiceDescription description) : base("1.1.1", "WMS", description) { _description = description; }
/// <summary> /// /// </summary> /// <param name="description"></param> public WMSServer(WmsServiceDescription description) : base("1.1.1","WMS",description) { _description = description; }
private static XmlNode GenerateServiceNode(ref WmsServiceDescription serviceDescription, XmlDocument capabilities) { XmlElement serviceNode = capabilities.CreateElement("Service", wmsNamespaceURI); serviceNode.AppendChild(createElement("Name", "OGC:WMS", capabilities, false, wmsNamespaceURI)); serviceNode.AppendChild(createElement("Title", serviceDescription.Title, capabilities, false, wmsNamespaceURI)); if (!String.IsNullOrEmpty(serviceDescription.Abstract)) { serviceNode.AppendChild(createElement("Abstract", serviceDescription.Abstract, capabilities, false, wmsNamespaceURI)); } if (serviceDescription.Keywords != null && serviceDescription.Keywords.Length > 0) { XmlElement KeywordListNode = capabilities.CreateElement("KeywordList", wmsNamespaceURI); foreach (string keyword in serviceDescription.Keywords) { KeywordListNode.AppendChild(createElement("Keyword", keyword, capabilities, false, wmsNamespaceURI)); } serviceNode.AppendChild(KeywordListNode); } // ссылка XmlElement onlineResourceNode = GenerateOnlineResourceElement(capabilities, serviceDescription.OnlineResource); serviceNode.AppendChild(onlineResourceNode); // контактная информация XmlElement contactInfoNode = GenerateContactInfoElement(capabilities, serviceDescription.ContactInformation); if (contactInfoNode.HasChildNodes) { serviceNode.AppendChild(contactInfoNode); } if (serviceDescription.Fees != null && serviceDescription.Fees != string.Empty) { serviceNode.AppendChild(createElement("Fees", serviceDescription.Fees, capabilities, false, wmsNamespaceURI)); } if (serviceDescription.AccessConstraints != null && serviceDescription.AccessConstraints != string.Empty) { serviceNode.AppendChild(createElement("AccessConstraints", serviceDescription.AccessConstraints, capabilities, false, wmsNamespaceURI)); } if (serviceDescription.LayerLimit > 0) { serviceNode.AppendChild(createElement("LayerLimit", serviceDescription.LayerLimit.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); } if (serviceDescription.MaxWidth > 0) { serviceNode.AppendChild(createElement("MaxWidth", serviceDescription.MaxWidth.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); } if (serviceDescription.MaxHeight > 0) { serviceNode.AppendChild(createElement("MaxHeight", serviceDescription.MaxHeight.ToString(CultureInfo.InvariantCulture), capabilities, false, wmsNamespaceURI)); } return(serviceNode); }
private static XmlNode GenerateCapabilityNode(Map map, WmsServiceDescription serviceDescription, XmlDocument capabilities) { string OnlineResource = string.Empty; // !!!!!!!!!!!! Доработать! XmlNode CapabilityNode = capabilities.CreateNode(XmlNodeType.Element, "Capability", wmsNamespaceURI); XmlNode RequestNode = capabilities.CreateNode(XmlNodeType.Element, "Request", wmsNamespaceURI); XmlNode GetCapabilitiesNode = capabilities.CreateNode(XmlNodeType.Element, "GetCapabilities", wmsNamespaceURI); GetCapabilitiesNode.AppendChild(createElement("Format", "text/xml", capabilities, false, wmsNamespaceURI)); GetCapabilitiesNode.AppendChild(GenerateDCPTypeNode(capabilities, OnlineResource)); RequestNode.AppendChild(GetCapabilitiesNode); XmlNode getMapNode = capabilities.CreateNode(XmlNodeType.Element, "GetMap", wmsNamespaceURI); // поддерживаемые форматы изображений foreach (ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) { getMapNode.AppendChild(createElement("Format", encoder.MimeType, capabilities, false, wmsNamespaceURI)); } getMapNode.AppendChild(GenerateDCPTypeNode(capabilities, OnlineResource)); RequestNode.AppendChild(getMapNode); CapabilityNode.AppendChild(RequestNode); XmlElement exceptionNode = capabilities.CreateElement("Exception", wmsNamespaceURI); exceptionNode.AppendChild(createElement("Format", "text/xml", capabilities, false, wmsNamespaceURI)); CapabilityNode.AppendChild(exceptionNode); //Add supported exception types // список слоев XmlNode layerRootNode = capabilities.CreateNode(XmlNodeType.Element, "Layer", wmsNamespaceURI); layerRootNode.AppendChild(createElement("Title", "MapAround", capabilities, false, wmsNamespaceURI)); string srs = "EPSG:-1"; if (!string.IsNullOrEmpty(map.CoodrinateSystemWKT)) { ICoordinateSystem coordinateSystem = (ICoordinateSystem)CoordinateSystemWktDeserializer.Parse(map.CoodrinateSystemWKT); srs = coordinateSystem.Authority + ":" + coordinateSystem.AuthorityCode; } layerRootNode.AppendChild(createElement("SRS", srs, capabilities, false, wmsNamespaceURI)); if (serviceDescription.BoundingBox != null && !serviceDescription.BoundingBox.IsEmpty()) { layerRootNode.AppendChild(generateBoundingBoxElement(serviceDescription.BoundingBox, srs, capabilities)); } foreach (LayerBase layer in map.Layers) { layerRootNode.AppendChild(getWmsLayerNode(layer, capabilities)); } CapabilityNode.AppendChild(layerRootNode); return(CapabilityNode); }
private static XmlNode GenerateCapabilityNode(Map map, WmsServiceDescription serviceDescription, XmlDocument capabilities) { string OnlineResource = string.Empty; // !!!!!!!!!!!! Доработать! XmlNode CapabilityNode = capabilities.CreateNode(XmlNodeType.Element, "Capability", wmsNamespaceURI); XmlNode RequestNode = capabilities.CreateNode(XmlNodeType.Element, "Request", wmsNamespaceURI); XmlNode GetCapabilitiesNode = capabilities.CreateNode(XmlNodeType.Element, "GetCapabilities", wmsNamespaceURI); GetCapabilitiesNode.AppendChild(createElement("Format", "text/xml", capabilities, false, wmsNamespaceURI)); GetCapabilitiesNode.AppendChild(GenerateDCPTypeNode(capabilities, OnlineResource)); RequestNode.AppendChild(GetCapabilitiesNode); XmlNode getMapNode = capabilities.CreateNode(XmlNodeType.Element, "GetMap", wmsNamespaceURI); // поддерживаемые форматы изображений foreach (ImageCodecInfo encoder in ImageCodecInfo.GetImageEncoders()) getMapNode.AppendChild(createElement("Format", encoder.MimeType, capabilities, false, wmsNamespaceURI)); getMapNode.AppendChild(GenerateDCPTypeNode(capabilities, OnlineResource)); RequestNode.AppendChild(getMapNode); CapabilityNode.AppendChild(RequestNode); XmlElement exceptionNode = capabilities.CreateElement("Exception", wmsNamespaceURI); exceptionNode.AppendChild(createElement("Format", "text/xml", capabilities, false, wmsNamespaceURI)); CapabilityNode.AppendChild(exceptionNode); //Add supported exception types // список слоев XmlNode layerRootNode = capabilities.CreateNode(XmlNodeType.Element, "Layer", wmsNamespaceURI); layerRootNode.AppendChild(createElement("Title", "MapAround", capabilities, false, wmsNamespaceURI)); string srs = "EPSG:-1"; if (!string.IsNullOrEmpty(map.CoodrinateSystemWKT)) { ICoordinateSystem coordinateSystem = (ICoordinateSystem)CoordinateSystemWktDeserializer.Parse(map.CoodrinateSystemWKT); srs = coordinateSystem.Authority + ":" + coordinateSystem.AuthorityCode; } layerRootNode.AppendChild(createElement("SRS", srs, capabilities, false, wmsNamespaceURI)); if (serviceDescription.BoundingBox != null && !serviceDescription.BoundingBox.IsEmpty()) { layerRootNode.AppendChild(generateBoundingBoxElement(serviceDescription.BoundingBox, srs, capabilities)); } foreach (LayerBase layer in map.Layers) layerRootNode.AppendChild(getWmsLayerNode(layer, capabilities)); CapabilityNode.AppendChild(layerRootNode); return CapabilityNode; }