示例#1
0
    public static WMS_Tile_Service LoadFromSream(Stream stream)
    {
        XmlSerializer    serializer = new XmlSerializer(typeof(WMS_Tile_Service));
        WMS_Tile_Service newCaps    = (WMS_Tile_Service)serializer.Deserialize(stream);

        return(newCaps);
    }
示例#2
0
        private void ShowCapababilities(bool download)
        {
            if (ServerList.SelectedIndex < 0)
            {
                return;
            }

            add.Enabled = false;

            LayersTree.Nodes.Clear();
            Abstract.Text = "";

            WmsServerEntry wse = (WmsServerEntry)ServerList.SelectedItem;
            string         req = "REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0";

            if (wse.Url.Contains("?"))
            {
                req = "&" + req;
            }
            else
            {
                req = "?" + req;
            }

            string url = wse.Url + req;

            string filename      = Properties.Settings.Default.CahceDirectory + "data\\wms\\" + ((uint)url.GetHashCode32()).ToString() + ".xml";
            string tiledFilename = Properties.Settings.Default.CahceDirectory + "data\\wms\\" + ((uint)url.GetHashCode32()).ToString() + ".tiled.xml";

            if (!File.Exists(filename) && !download)
            {
                LayersTree.Nodes.Add(Language.GetLocalizedText(910, "Not loaded -  Click Get Layers to download now"));
                return;
            }

            if (!FileDownload.DownloadFile(url, filename, download))
            {
                return;
            }

            bool   tiled    = false;
            string tiledUrl = "";

            try
            {
                using (Stream stream = File.Open(filename, FileMode.Open))
                {
                    WMS_Capabilities caps = WMS_Capabilities.LoadFromSream(stream);

                    serviceUrl = caps.Capability.Request.GetMap.DCPType[0].HTTP.Get.OnlineResource.href;
                    if (!serviceUrl.Contains("?"))
                    {
                        serviceUrl += "?";
                    }
                    wmsVersion = caps.version;
                    stream.Close();

                    if (caps.Capability.Request.GetTileService != null && !string.IsNullOrEmpty(caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href))
                    {
                        tiled      = true;
                        tiledUrl   = caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href + "request=GetTileService";
                        serviceUrl = caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href;
                        if (!serviceUrl.Contains("?"))
                        {
                            serviceUrl += "?";
                        }
                    }

                    if (!tiled)
                    {
                        AddChildren(caps.Capability.Layer, LayersTree.Nodes);
                    }
                }
            }
            catch
            {
                try
                {
                    using (Stream stream = File.Open(filename, FileMode.Open))
                    {
                        WMT_MS_Capabilities caps = WMT_MS_Capabilities.LoadFromSream(stream);

                        serviceUrl = caps.Capability.Request.GetMap.DCPType[0].HTTP.Get.OnlineResource.href;
                        if (!serviceUrl.Contains("?"))
                        {
                            serviceUrl += "?";
                        }
                        wmsVersion = caps.version;
                        stream.Close();
                        if (caps.Capability.Request.GetTileService != null && !string.IsNullOrEmpty(caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href))
                        {
                            tiled      = true;
                            tiledUrl   = caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href + "request=GetTileService";
                            serviceUrl = caps.Capability.Request.GetTileService.DCPType[0].HTTP.Get.OnlineResource.href;
                            if (!serviceUrl.Contains("?"))
                            {
                                serviceUrl += "?";
                            }
                        }

                        if (!tiled)
                        {
                            AddChildren(caps.Capability.Layer, LayersTree.Nodes);
                        }
                    }
                }
                catch
                {
                }
            }
            // Add Tiled if supported
            try
            {
                if (tiled)
                {
                    if (!FileDownload.DownloadFile(tiledUrl, tiledFilename, false))
                    {
                        return;
                    }
                    using (Stream stream = File.Open(tiledFilename, FileMode.Open))
                    {
                        WMS_Tile_Service wts = WMS_Tile_Service.LoadFromSream(stream);
                        AddChildren(wts.TiledPatterns[0].TiledGroup, LayersTree.Nodes);
                    }
                }
            }
            catch
            {
            }
        }