Exemple #1
0
        public void WmsGetCapabilitiesUrl()
        {
            // note: Not sure if this test makes much sense anymore now I
            // changed it to use local resources. Perhaps this one should
            // just be removed since the above test covers the url
            // generating logic.

            // arrange
            var fileName     = "wms-capabilities-gdimv_dtk.xml";
            var version      = "1.3.0";
            var serviceTitle = "GDI MV DTK WMS";

            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wms", fileName)))
            {
                // arrange, act
                WmsCapabilities cap = null;
                Assert.DoesNotThrow(() => cap = new WmsCapabilities(XDocument.Load(stream)));

                // assert
                Assert.That(cap, Is.Not.Null);

                Console.WriteLine($"{cap.Service.Title} (WMS {cap.Version.VersionString})");
                if (!string.IsNullOrWhiteSpace(serviceTitle))
                {
                    Assert.That(cap.Service.Title, Is.EqualTo(serviceTitle));
                }

                if (!string.IsNullOrWhiteSpace(version))
                {
                    Assert.That(cap.Version.VersionString, Is.EqualTo(version));
                }
            }
        }
Exemple #2
0
 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;
 }
Exemple #3
0
        public static IEnumerable <ITileSource> CreateFromWmscCapabilties(Uri uri)
        {
            var wmsCapabilities = new WmsCapabilities(uri.ToString());

            return(ParseVendorSpecificCapabilitiesNode(
                       (XElement)wmsCapabilities.Capability.ExtendedCapabilities[XName.Get("VendorSpecificCapabilities")],
                       wmsCapabilities.Capability.Request.GetCapabilities.DCPType[0].Http.Get.OnlineResource));
        }
Exemple #4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="WmsInfo"/> class.
 /// </summary>
 /// <param name="serverUrl">Url of the WMS server.</param>
 /// <param name="wmsCapabilities">The WmsCapabilities.</param>
 /// <param name="layer">The layer.</param>
 /// <param name="customParameters">The custom parameters.</param>
 /// <param name="crs">The Crs.</param>
 /// <param name="projectionInfo">The CrsProjectionInfo.</param>
 /// <param name="style">The style.</param>
 /// <param name="credentials">Credentials for authentication.</param>
 public WmsInfo(string serverUrl, WmsCapabilities wmsCapabilities, Layer layer, Dictionary <string, string> customParameters, string crs, ProjectionInfo projectionInfo, string style, NetworkCredential credentials)
 {
     Credentials      = credentials;
     CustomParameters = customParameters;
     Crs = crs;
     CrsProjectionInfo = projectionInfo;
     Style             = style;
     Layer             = layer;
     WmsCapabilities   = wmsCapabilities;
     ServerUrl         = serverUrl;
 }
Exemple #5
0
        private static string GetFormat(this WmsCapabilities capabilities)
        {
            var list = capabilities.Capability.Request.GetMap.Format;

            if (list.Count > 2)
            {
                return(list[2]);
            }

            return(list.FirstOrDefault());
        }
        /// <summary>
        /// Displays capabilities (list of layers for the server).
        /// </summary>
        private void DisplayServerCapabilities(WmsCapabilities capabilities)
        {
            var server = View.Server;

            if (server != null)
            {
                Model.Capabilities = capabilities;
                View.UpdateCapabilities();
                AppConfig.Instance.WmsLastServer = server.Url;
            }
        }
        public void WmsCapabilitiesForLizardTech()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wms", "LizardtechWmsCapabilities_1_1_1.xml")))
            {
                // act
                var wmsCapabilities = new WmsCapabilities(XDocument.Load(stream));

                // assert
                Assert.AreEqual(12, wmsCapabilities.Capability.Layer.ChildLayers.Count);
            }
        }
Exemple #8
0
        private bool GetCapabilities(string url, out WmsCapabilities wmsCapabilities)
        {
            wmsCapabilities = null;
            try
            {
                Uri uri = null;
                try
                {
                    uri = new Uri(url);
                }
                catch (System.Exception e)
                {
                    Debug.LogException(e);
                }
                if (uri != null)
                {
                    wmsCapabilities = new WmsCapabilities(uri);
                }
            }
            catch (System.Exception e)
            {
                // ArgumentException, ArgumentNullException, WmsParsingException
                Debug.LogException(e);
            }
            if (wmsCapabilities != null)
            {
                var        cap                    = wmsCapabilities.Capability;
                var        service                = wmsCapabilities.Service;
                string     updateSequence         = wmsCapabilities.UpdateSequence;
                var        serviceExceptionReport = wmsCapabilities.ServiceExceptionReport;
                WmsVersion version                = wmsCapabilities.Version;

                Debug.LogFormat("Service: [Title: {0}], [Abstract: {1}], [LayerLimit: {2}]", string.IsNullOrEmpty(service.Title) ? "<none>" : service.Title, string.IsNullOrEmpty(service.Abstract) ? "<none>" : service.Abstract, service.LayerLimit != null ? service.LayerLimit.ToString() : "<none>");

                if (serviceExceptionReport != null)
                {
                    Debug.Assert(serviceExceptionReport.ServiceExceptions.Count != 0);
                    Debug.LogErrorFormat("serviceExceptionReport contains {0} exceptions", serviceExceptionReport.ServiceExceptions.Count);
                    foreach (var serviceException in serviceExceptionReport.ServiceExceptions)
                    {
                        Debug.LogErrorFormat("serviceException: code {0} locator {1} value {2}", serviceException.Code, serviceException.Locator, serviceException.Value);
                    }
                }

                if (VerboseLogging)
                {
                    WalkLayers(cap.Layer, PrintLayer);
                    var ec = cap.ExtendedCapabilities;
                    PrintExtendedCaps(ref ec);
                }
            }
            return(wmsCapabilities != null);
        }
        public void WmsCapabilitiesForNrcsSoilWms()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wms", "NrcsSoilWmsCapabilities_1_1_1.xml")))
            {
                // act
                var wmsCapabilities = new WmsCapabilities(XDocument.Load(stream));

                // assert
                Assert.True(wmsCapabilities.Service.Name == ServiceName.WMS);
            }
        }
        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);
            }
        }
Exemple #11
0
        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 void WmsCapabilitiesWithXmlnsAttribute()
        {
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wms", "WmsCapabilities_1_3_0_withXmlns.xml")))
            {
                // act
                var capabilities = new WmsCapabilities(stream);

                // assert
                Assert.NotNull(capabilities);
                Assert.NotNull(capabilities.Version);
                Assert.AreEqual("1 Million Scale WMS Layers from the National Atlas of the United States", capabilities.Capability.Layer.Title);
                Assert.AreEqual(19, 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 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 static IEnumerable <ITileSource> CreateFromWmscCapabilties(Uri uri)
        {
            var wmsCapabilities = new WmsCapabilities(uri);
            var cap             = wmsCapabilities.Capability;
            var ec = cap.ExtendedCapabilities;

            if (!ec.TryGetValue(XName.Get("VendorSpecificCapabilities"), out var vsc))
            {
                throw new WmsParsingException("Node 'VendorSpecificCapabilities' not found in wms capabilty document");
            }

            return(ParseVendorSpecificCapabilitiesNode(
                       (XElement)vsc, cap.Request.GetCapabilities.DCPType[0].Http.Get.OnlineResource));
        }
        public static IEnumerable <ITileSource> CreateFromWmscCapabilties(XDocument document)
        {
            var wmsCapabilities = new WmsCapabilities(document);

            if (!wmsCapabilities.Capability.ExtendedCapabilities.ContainsKey(XName.Get("VendorSpecificCapabilities")))
            {
                throw new System.Exception("VendorSpecificCapabilities node is missing from WMS capabilities (This is probably an ordinary WMS)");
            }

            var vendorSpecificNode = (XElement)wmsCapabilities.Capability.ExtendedCapabilities[XName.Get("VendorSpecificCapabilities")];

            return(ParseVendorSpecificCapabilitiesNode(vendorSpecificNode,
                                                       wmsCapabilities.Capability.Request.GetCapabilities.DCPType[0].Http.Get.OnlineResource));
        }
        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);
            }
        }
Exemple #18
0
        public void WmsCapabilitiesWhenInitializedWithWmsCShouldInitializeAllTileLayers()
        {
            // arrange
            var fileName = "WmsCCapabilities_1_1_1.xml";

            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmsc", fileName)))
            {
                // act
                var capabilities = new WmsCapabilities(stream);

                // assert
                Assert.NotNull(capabilities.Version);
                Assert.AreEqual(54, capabilities.Capability.Layer.ChildLayers.Count);
            }
        }
Exemple #19
0
        public void WmsValidateGetCapabilitiesRequest(string url, Type exception, bool expected)
        {
            // arrange
            var valid = !expected;
            var uri   = new Uri(url);

            // act
            if (exception != null)
            {
                Assert.Throws <ArgumentException>(() => valid = WmsCapabilities.ValidateGetCapabilitiesRequest(uri.Query));
                return;
            }
            Assert.DoesNotThrow(() => valid = WmsCapabilities.ValidateGetCapabilitiesRequest(uri.Query));

            //assert
            Assert.That(valid, Is.EqualTo(expected));
        }
Exemple #20
0
        private void BtnGetCapabilitiesClick(object sender, EventArgs e)
        {
            var serverUrl = tbServerUrl.Text;

            if (string.IsNullOrWhiteSpace(serverUrl))
            {
                return;
            }

            serverUrl = PrepareUri(serverUrl);

            var noCapabilities = serverUrl.IndexOf("Request=GetCapabilities", StringComparison.OrdinalIgnoreCase) < 0;
            var noService      = serverUrl.IndexOf("SERVICE=WMS", StringComparison.OrdinalIgnoreCase) < 0;

            if (noCapabilities)
            {
                serverUrl += "Request=GetCapabilities&";
            }

            if (noService)
            {
                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(string.Format(Resources.UnableToReadCapabilities, ex.Message));
                return;
            }

            WmsInfo          = null;
            _wmsCapabilities = capabilities;

            ShowServerDetails(capabilities);
            InitLayers(capabilities);
        }
Exemple #21
0
        public void GetData(string url, string desiredLayer, string desiredFormat, GeographicBounds bounds, out Dictionary <BruTile.TileInfo, byte[]> tiles)
        {
            WmsCapabilities wmsCapabilities = null;
            ITileSource     tileSource      = null;

            tiles = null;

            string baseUrl = url + "?SERVICE=WMS";
            string capUrl  = baseUrl + "&REQUEST=GetCapabilities";

            if (GetCapabilities(capUrl, out wmsCapabilities))
            {
                var version = wmsCapabilities.Version;
                //string firstLayer = wmsCapabilities.Capability.Layer.ChildLayers[0].Name;
                var formats = wmsCapabilities.Capability.Request.GetMap.Format;
                if (VerboseLogging)
                {
                    PrintFormats(ref formats, true);
                }
                bool found = false;
                foreach (string format in formats)
                {
                    if (format.ToLower().EndsWith(desiredFormat))
                    {
                        found = true;
                        break;
                    }
                }

                if (found && GetMap(baseUrl, version.VersionString, desiredLayer, bounds, desiredFormat, out tileSource))
                {
                    string levelId = "0"; // desired zoom level
                    Extent extent  = new Extent(bounds.MinimumCoordinates.Longitude, bounds.MinimumCoordinates.Latitude, bounds.MaximumCoordinates.Longitude, bounds.MaximumCoordinates.Latitude);
                    Process(tileSource, extent, out tiles, levelId);
                }
                else
                {
                    Console.WriteLine("GetMap failed.");
                }
            }
            else
            {
                Console.WriteLine("GetCapabilities failed.");
            }
        }
Exemple #22
0
        public void WmsCapabilitiesChildInheritsCrsFromParentLayer()
        {
            // arrange
            var fileName = "wms_topplus_web_open.xml";

            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wms", fileName)))
            {
                // act
                var wmsCapabilities = new WmsCapabilities(XDocument.Load(stream));

                // assert
                Assert.AreEqual(16, wmsCapabilities.Capability.Layer.ChildLayers.Count);
                foreach (var layerChildLayer in wmsCapabilities.Capability.Layer.ChildLayers)
                {
                    Assert.True(layerChildLayer.CRS.Count > 0);
                }
            }
        }
        /// <summary>
        /// Displayes and cached the results of GetCapabilities request.
        /// </summary>
        private void ProcessWmsCapabilitiesResults(Task <Stream> task)
        {
            var server = SelectedServer;

            string msg = "WMS server GetCapabilities request failed: " + Environment.NewLine;

            try
            {
                using (var stream = task.Result)
                {
                    WmsCapabilities capabilities;

                    if (WmsCapabilitiesCache.Save(server.Url, stream))
                    {
                        // ConnectStream returned by WebResponse doesn't support seek operation,
                        // so we can't read it twice, therefore on successful saving to the disk
                        // we are rereading it from file
                        capabilities = WmsCapabilitiesCache.Load(server.Url);
                    }
                    else
                    {
                        capabilities = new WmsCapabilities(stream);
                    }

                    DisplayServerCapabilities(capabilities);
                }
            }
            catch (AggregateException ex)
            {
                MessageService.Current.Warn(msg + ex.InnerException.Message);
            }
            catch (Exception ex)
            {
                Logger.Current.Warn(msg + server.Name, ex);
            }
            finally
            {
                View.HideHourglass();
            }
        }
Exemple #24
0
        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);
        }
Exemple #25
0
        /// <summary>
        /// Creates MapWinGIS WMS provider based GetCapabilities definition and layers selected by user.
        /// </summary>
        public static WmsSource CreateWmsLayer(this WmsCapabilities capabilities, IEnumerable <Layer> layers, string serverUrl, ISpatialReference mapProjection)
        {
            var layersArray = layers as Layer[] ?? layers.ToArray();
            var layer       = layersArray.FirstOrDefault();

            if (layer == null)
            {
                return(null);
            }

            // First try the layer, as a fallback, use the bounding box defined in the capabilities
            var box = layer.ChooseBoundingBox(mapProjection) ?? capabilities.Capability.Layer.ChooseBoundingBox(mapProjection);

            if (box == null)
            {
                MessageService.Current.Info("Failed to determine bounds of the layer.");
                return(null);
            }

            var epsg = -1;

            if (!ParseEpsg(box.CRS, ref epsg))
            {
                MessageService.Current.Info("Failed to determine coordinate system for the layer.");
                return(null);
            }

            var provider = new WmsSource("WMS provider")
            {
                Layers      = GetLayers(layersArray),
                Epsg        = epsg,
                BoundingBox = new Envelope(box.MinX, box.MaxX, box.MinY, box.MaxY),
                BaseUrl     = serverUrl,
                Format      = capabilities.GetFormat()
            };

            return(provider);
        }
Exemple #26
0
 private void InitLayers(WmsCapabilities capabilities)
 {
     tvLayers.Nodes.Clear();
     FillTree(tvLayers.Nodes, capabilities.Capability.Layer);
     tvLayers.ExpandAll();
 }
Exemple #27
0
        protected void Application_Start(object sender, EventArgs e)
        {
            Database.SetInitializer <SharpMapContext>(new DropCreateDatabaseIfModelChanges <SharpMapContext>());
            using (var _ctx = new SharpMapContext())
            {
                var caps = _ctx.Capabilities.FirstOrDefault();
                if (caps == null)
                {
                    /*create default*/
                    caps = new WmsCapabilities
                    {
                        Title    = "SharpMap Demo Server",
                        Abstract = "This is an example SharpMap server",
                    };
                    caps.Keywords = "SharpMap,WMS";
                    _ctx.Capabilities.Add(caps);
                }

                WMSServer.m_Capabilities = new SharpMap.Web.Wms.Capabilities.WmsServiceDescription
                {
                    Abstract          = caps.Abstract,
                    AccessConstraints = caps.AccessConstraints,
                    Fees           = caps.Fees,
                    Keywords       = caps.Keywords.Split(','),
                    LayerLimit     = caps.LayerLimit,
                    MaxHeight      = caps.MaxHeight,
                    MaxWidth       = caps.MaxWidth,
                    OnlineResource = caps.OnlineResource,
                    Title          = caps.Title
                };

                if (_ctx.Users.Count() == 0)
                {
                    _ctx.Users.Add(new User {
                        UserName = "******", Password = "******"
                    });
                }

                if (_ctx.Layers.Count() == 0)
                {
                    /*add default layer*/
                    _ctx.Layers.Add(new SharpMapServer.Model.WmsLayer()
                    {
                        Name = "States", Description = "Demo data over US States", Provider = "Shapefile", DataSource = "states.shp"
                    });
                }

                WMSServer.m_Map = new SharpMap.Map();
                foreach (var l in _ctx.Layers)
                {
                    switch (l.Provider)
                    {
                    case "Shapefile":
                        VectorLayer lay = new VectorLayer(l.Name);
                        string      ds  = l.DataSource;
                        if (!Path.IsPathRooted(ds))
                        {
                            ds = Server.MapPath(ds);
                        }

                        lay.DataSource = new SharpMap.Data.Providers.ShapeFile(ds);
                        WMSServer.m_Map.Layers.Add(lay);
                        break;
                    }
                }

                _ctx.SaveChanges();
            }
        }
Exemple #28
0
    void Start()
    {
        WmsCapabilities wmsCapabilities = null;
        ITileSource     tileSource      = null;
        var             containersList  = new List <Container>();

        Service.ParseName = false;

        // capabilities documentation
        // http://www.opengis.net/wms?service=wms&version=1.3&request=GetCapabilities
        // http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd

        // TEMP: url and desired layer should be rolled into a struct
        const string url          = "http://tgs.cognitics.net:80/geoserver/wms";
        const string desiredLayer = "Base:CDB Elevation_Terrain_Primary"; // this comes down as an option from capabilities query, so a UI would be preferable but we're just hardcoding elevation for now

        {
            string baseUrl = url + "?SERVICE=WMS";
            string capUrl  = baseUrl + "&REQUEST=GetCapabilities";
            if (GetCapabilities(capUrl, out wmsCapabilities))
            {
                var version = wmsCapabilities.Version;
                //string firstLayer = wmsCapabilities.Capability.Layer.ChildLayers[0].Name;
                var formats = wmsCapabilities.Capability.Request.GetMap.Format;
                PrintFormats(ref formats, true);
                string compatibleFormat = null;
                foreach (string format in formats)
                {
                    if (format.ToLower().EndsWith("png") || format.ToLower().EndsWith("jpg") || format.ToLower().EndsWith("jpeg"))
                    {
                        compatibleFormat = format;
                        break;
                    }
                }

                if (GetMap(baseUrl, version.VersionString, desiredLayer, 0, 18, compatibleFormat, out tileSource))
                {
                    string levelId = "0"; // desired zoom level
                    containersList.Add(new Container()
                    {
                        name = tileSource.Name, textures = Process(tileSource, levelId)
                    });
                }
                else
                {
                    Debug.LogError("GetMap failed.");
                }
            }
            else
            {
                Debug.LogError("GetCapabilities failed.");
            }
        }

/*
 *      // resource.sgu.se/service/wms/130/brunnar?
 *      // SERVICE=WMS&VERSION=1.3&REQUEST=GetCapabilities&TILED=true
 *      {
 *          //var res = new List<ITileSource>(WmscTileSource.CreateFromWmscCapabilties(uri));
 *          const string url = "http://resource.sgu.se/service/wms/130/brunnar?service=wms&version=1.3&request=GetCapabilities&TILED=true";
 *          GetCapabilities(url, out wmsCapabilities);
 *      }
 *
 *      // another WMS
 *      {
 *          const string url = "http://geodata.nationaalgeoregister.nl/ahn25m/wms?service=wms";
 *          var schema = new WkstNederlandSchema {Format = "image/jpeg"};
 *          schema.Validate();
 *          var request = new WmscRequest(new Uri(url), schema,
 *                                        layers: new[] { "ahn25m" }.ToList(),
 *                                        styles: new string[0].ToList());
 *          var provider = new HttpTileProvider(request);
 *          string levelId = "0";
 *          tileSource = new TileSource(provider, schema);
 *          containersList.Add(new Container() { name = tileSource.Name, textures = Process(tileSource, request, levelId) });
 *      }
 *
 *      // OpenStreetMap
 *      tileSource = new HttpTileSource(new GlobalSphericalMercator(0, 18),
 *          "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
 *          new[] { "a", "b", "c" }, "OSM", name: "OpenStreetMap Source");
 *      containersList.Add(new Container() { name = tileSource.Name, textures = Process(tileSource) });
 *
 *      // Google Map
 *      tileSource = CreateGoogleTileSource("http://mt{s}.google.com/vt/lyrs=m@130&hl=en&x={x}&y={y}&z={z}", "Google Map Source");
 *      containersList.Add(new Container() { name = tileSource.Name, textures = Process(tileSource) });
 *
 *      // Google Terrain
 *      tileSource = CreateGoogleTileSource("http://mt{s}.google.com/vt/lyrs=t@125,r@130&hl=en&x={x}&y={y}&z={z}", "Google Terrain Source");
 *      containersList.Add(new Container() { name = tileSource.Name, textures = Process(tileSource) });
 *
 *      // Here Maps
 *      tileSource = new HttpTileSource(new GlobalSphericalMercator(0, 18),
 *          "https://{s}.base.maps.cit.api.here.com/maptile/2.1/maptile/newest/normal.day/{z}/{x}/{y}/256/png8?app_id=xWVIueSv6JL0aJ5xqTxb&app_code=djPZyynKsbTjIUDOBcHZ2g",
 *          new[] { "1", "2", "3", "4" }, name: "Here Maps Source");
 *      containersList.Add(new Container() { name = tileSource.Name, textures = Process(tileSource) });
 *
 *      // BruTile known sources
 *      foreach (var knownTileSource in Enum.GetValues(typeof(KnownTileSource)).Cast<KnownTileSource>())
 *      {
 *          tileSource = KnownTileSources.Create(knownTileSource);
 *          containersList.Add(new Container() { name = knownTileSource.ToString(), textures = Process(tileSource) });
 *      }
 */
        containers = containersList.ToArray();
    }
Exemple #29
0
 private static string GetFormat(this WmsCapabilities capabilities)
 {
     return(capabilities.Capability.Request.GetMap.Format.DefaultIfEmpty("image/png").FirstOrDefault());
 }