Stores metadata for a WMS service.
Inheritance: BaseServiceDescription
コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="description"></param>
 public WMSServer(WmsServiceDescription description) : base("1.1.1", "WMS", description)
 {
     _description = description;
 }
コード例 #5
0
ファイル: WmsServer.cs プロジェクト: gkrsu/maparound.core
 /// <summary>
 /// 
 /// </summary>
 /// <param name="description"></param>
 public WMSServer(WmsServiceDescription description) : base("1.1.1","WMS",description)
 {
     _description = description;
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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;
        }