Beispiel #1
0
        private void WmtsClick(object sender, RoutedEventArgs e)
        {
            MapControl.Map.Layers.Clear();
            //var webRequest = (HttpWebRequest)WebRequest.Create("http://geodata.nationaalgeoregister.nl/wmts/top10nl?VERSION=1.0.0&request=GetCapabilities");
            var webRequest  = (HttpWebRequest)WebRequest.Create("http://services.arcgisonline.com/arcgis/rest/services/Demographics/USA_Population_Density/MapServer/WMTS/");
            var webResponse = webRequest.GetSyncResponse(10000);

            if (webResponse == null)
            {
                throw (new WebException("An error occurred while fetching tile", null));
            }
            using (var responseStream = webResponse.GetResponseStream())
            {
                var tileSources = WmtsParser.Parse(responseStream);
                //var natura2000 = tileSources.First(t => t.Name.ToLower().Contains("natura2000"));
                //MapControl.Map.Layers.Add(new TileLayer(natura2000) { Name = "Natura 2000" });

                foreach (var layer in tileSources)
                {
                    MapControl.Map.Layers.Add(new TileLayer(layer)
                    {
                        Name = layer.Name
                    });
                }
                MapControl.ZoomToFullEnvelope();
                MapControl.Refresh();
                LayerList.Initialize(MapControl.Map.Layers);
            }
        }
Beispiel #2
0
        public MainWindow()
        {
            InitializeComponent();

            foreach (var knownTileSource in Enum.GetValues(typeof(KnownTileSource)).Cast <KnownTileSource>())
            {
                var httpTileSource = KnownTileSources.Create(knownTileSource);
                Layers.Children.Add(ToRadioButton(knownTileSource.ToString(), () => httpTileSource));
            }

            var httpClient         = new HttpClient();
            var stream             = httpClient.GetStreamAsync("https://bertt.github.io/wmts/capabilities/michelin.xml").Result;
            var michelinTileSource = WmtsParser.Parse(stream).First();

            Layers.Children.Add(ToRadioButton("Michelin Map", () => michelinTileSource));

            Layers.Children.Add(ToRadioButton("Google Map", () =>
                                              CreateGoogleTileSource("http://mt{s}.google.com/vt/lyrs=m@130&hl=en&x={x}&y={y}&z={z}")));
            Layers.Children.Add(ToRadioButton("Google Terrain", () =>
                                              CreateGoogleTileSource("http://mt{s}.google.com/vt/lyrs=t@125,r@130&hl=en&x={x}&y={y}&z={z}")));

            Layers.Children.Add(ToRadioButton("WMS called through tile schema", TileSourceForWmsSample.Create));

            Layers.Children.Add(ToRadioButton("Here Maps", () =>
                                              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")));

            Layers.Children.Add(ToRadioButton("LM topowebb", LantMaterietTopowebbTileSourceTest.Create));
        }
        private async Task <TileSource[]> GetTileSourcesFromCapabilities(Uri capabilitiesUri)
        {
            var stream = await GetStream(capabilitiesUri);

            var sources = WmtsParser.Parse(stream).Cast <TileSource>();

            return(sources.ToArray());
        }
        public static ITileSource Create()
        {
            var httpClient         = new HttpClient();
            var stream             = httpClient.GetStreamAsync("https://bertt.github.io/wmts/capabilities/michelin.xml").Result;
            var michelinTileSource = WmtsParser.Parse(stream).First();

            return(michelinTileSource);
        }
Beispiel #5
0
 public static HttpTileSource CreateTileSource()
 {
     using (var httpClient = new HttpClient())
         using (var response = httpClient.GetStreamAsync("https://geoservices.buergernetz.bz.it/mapproxy/service/ows?SERVICE=WMTS&REQUEST=GetCapabilities").Result)
         {
             var tileSources = WmtsParser.Parse(response);
             return(tileSources.First(t =>
                                      ((WmtsTileSchema)t.Schema).Layer == "P_BZ_OF_2014_2015_2017" && t.Schema.Srs == "EPSG:25832"));
         }
 }
Beispiel #6
0
        private static ITileSource CreateTDTTileSource()
        {
            //本地WmtsParser
            ITileSource tileSource;

            using (var stream = System.IO.File.OpenRead(Path.Combine("Resources", "wmtsc3.xml")))
            {
                tileSource = WmtsParser.Parse(stream).First();
            }
            return(tileSource);
        }
Beispiel #7
0
        public void TestNoTitlePresentInWmtsCapabilitiesLayer()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts-capabilities-opencache-statkart-no.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                Assert.AreEqual(319, tileSources.Count());
            }
        }
Beispiel #8
0
        public void TestParsingWmtsCapabilities()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts-capabilties-restful-wien.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                Assert.NotNull(tileSources);
            }
        }
Beispiel #9
0
        private static ITileSource CreateWmscSource()
        {
            ITileSource tileSource;

            using (var stream = System.IO.File.OpenRead(Path.Combine("Resources", "tiandituSD.xml")))
            {
                IEnumerable <ITileSource> tileSources = null;
                tileSources = WmtsParser.Parse(stream);
                tileSource  = new List <ITileSource>(tileSources)[0];
            }
            return(tileSource);
        }
Beispiel #10
0
        public void TestParsingWmtsCapabilitiesMarsWithDoubleValues()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts-capabilities-mars.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                Assert.AreEqual(1, tileSources.Count());
            }
        }
Beispiel #11
0
        public static ITileSource Create()
        {
            var url      = "https://api.lantmateriet.se/open/topowebb-ccby/v1/wmts/token/7cdfdab81eba86d0bc4fbb328165e9a/?request=GetCapabilities&version=1.1.1&service=wmts";
            var request  = WebRequest.Create(new Uri(url));
            var response = request.GetResponseAsync();

            using (var stream = response.Result.GetResponseStream())
            {
                var tileSources = WmtsParser.Parse(stream);
                return(tileSources.First(s => s.Name.ToLower() == "topowebb" && s.Schema.Srs.Contains("3857")));
            }
        }
Beispiel #12
0
        public void TestParsingWmtsCapabilitiesRayaBasemapServer()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts-capabilities-raya-basemap-server.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                Assert.AreEqual(3, tileSources.Count());
            }
        }
Beispiel #13
0
        public void TestParsingWmtsCapabilitiesKvp()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wmts", "wmts-capabilities-pdok.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                Assert.NotNull(tileSources);
            }
        }
Beispiel #14
0
        public static ILayer CreateLayer()
        {
            using var httpClient = new HttpClient();
            // When testing today (20-10-2021) tile 0,0,0 returned a 500. Perhaps this should be fixed in the xml.
            using var response = httpClient.GetStreamAsync("https://bertt.github.io/wmts/capabilities/michelin.xml").Result;
            var tileSource = WmtsParser.Parse(response).First();

            return(new TileLayer(tileSource)
            {
                Name = tileSource.Name
            });
        }
Beispiel #15
0
 public static ILayer CreateLayer()
 {
     using (var httpClient = new HttpClient())
         using (var response = httpClient.GetStreamAsync("https://bertt.github.io/wmts/capabilities/michelin.xml").Result)
         {
             var tileSource = WmtsParser.Parse(response).First();
             return(new TileLayer(tileSource)
             {
                 Name = tileSource.Name
             });
         }
 }
Beispiel #16
0
 public ILayer CreateWmtsLayer()
 {
     using (var httpClient = new HttpClient())
         using (var response = httpClient.GetStreamAsync("http://geodata.nationaalgeoregister.nl/wmts?VERSION=1.0.0&request=GetCapabilities").Result)
         {
             var tileSources = WmtsParser.Parse(response).ToList();
             var natura2000  = tileSources.First(t => t.Name.ToLower().Contains("natura2000"));
             return(new TileLayer(natura2000)
             {
                 Name = "Natura2000"
             });
         }
 }
Beispiel #17
0
 public static ILayer CreateLayer()
 {
     using (var httpClient = new HttpClient())
         using (var response = httpClient.GetStreamAsync("http://geodata.nationaalgeoregister.nl/wmts/top10nl?VERSION=1.0.0&request=GetCapabilities").Result)
         {
             var tileSources          = WmtsParser.Parse(response);
             var nature2000TileSource = tileSources.First(t => t.Name == "natura2000");
             return(new TileLayer(nature2000TileSource)
             {
                 Name = nature2000TileSource.Name
             });
         }
 }
Beispiel #18
0
        public void TestParsingWmtsGlobalCRS84Scale()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wmts", "wmts-capabilities-pdok.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                var tileSource = tileSources.First(s => s.Name == "non-existing-GlobalCRS84Scale-layer");
                Assert.True(Math.Abs(tileSource.Schema.Extent.Area - new Extent(-180, -90, 180, 90).Area) < 1.0);
            }
        }
Beispiel #19
0
        public void TestParsingWmtsCapabilities(string xml)
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wmts", xml)))
            {
                // act
                IEnumerable <ITileSource> tileSources = null;
                Assert.DoesNotThrow(() => tileSources = WmtsParser.Parse(stream));

                // assert
                Assert.NotNull(tileSources);
                Assert.Greater(tileSources.Count(), 0);
            }
        }
Beispiel #20
0
        public void TestParsingWmtsWhereUpperBoundAndLowerBoundLackOwsPrefix()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts_capabilities_where_upperbound_and_lowerbound_lack_ows_prefix.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                var tileSource = tileSources.First(s => s.Name.ToLower() == "topowebb");
                var tileSchema = (WmtsTileSchema)tileSource.Schema;
                Assert.NotNull(tileSchema.Extent);
            }
        }
Beispiel #21
0
        /// <summary>
        /// Create tile source
        /// </summary>
        /// <param name="config"></param>
        /// <returns></returns>
        private ITileSource createTileSource(WMTSInfo config)
        {
            Uri uri = new Uri(string.Format("{0}{1}", config.url, "?request=getCapabilities"));

            var         req  = WebRequest.Create(uri);
            var         resp = req.GetResponseAsync();
            ITileSource tileSource;

            using (var stream = resp.Result.GetResponseStream())
            {
                IEnumerable <ITileSource> tileSources = WmtsParser.Parse(stream);
                tileSource = tileSources.FirstOrDefault();
            }
            return(tileSource);
        }
        public ITileSource GetTileSource()
        {
            var ser = new XmlSerializer(typeof(Capabilities));

            Stream mstream = new MemoryStream();

            ser.Serialize(mstream, capabilities);
            mstream.Seek(0, 0);

            var sources = WmtsParser.Parse(mstream);
            var source  = sources.Single(s => s.Title == layer.WMSLayer);

            source = GetLayers(capabilities, sources.Select(s => s.Schema).ToList(), layer.DimensionsDict, layer.Username, layer.Password).Single(s => s.Title == layer.WMSLayer);
            return(source);
        }
Beispiel #23
0
        public void TestPersistentCacheCanBeSet()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine(Paths.AssemblyDirectory, "Resources", "Wmts", "wmts-capabilities-dlr.xml")))
            {
                IEnumerable <HttpTileSource> tileSources = null;
                Assert.DoesNotThrow(() => tileSources = WmtsParser.Parse(stream));
                var tileSource = tileSources.First();

                // act
                tileSource.PersistentCache = new NullCache();

                // assert
                Assert.NotNull(tileSource.PersistentCache);
            }
        }
Beispiel #24
0
        public static ITileSource Create()
        {
            Uri uri =
                new Uri(
                    "https://api.lantmateriet.se/open/topowebb-ccby/v1/wmts/token/7cdfdab81eba86d0bc4fbb328165e9a/?request=GetCapabilities&version=1.1.1&service=wmts");
            var         req  = WebRequest.Create(uri);
            var         resp = req.GetResponseAsync();
            ITileSource tileSource;

            using (var stream = resp.Result.GetResponseStream())
            {
                var tileSources = WmtsParser.Parse(stream);
                tileSource = tileSources.First(s => s.Name.ToLower() == "topowebb");
            }
            return(tileSource);
        }
Beispiel #25
0
        public static BruTileLayer GetWmtsLayer(IApplication _application, string format, string capabilitiesUrl, string LayerName, string LayerId)
        {
            var httpClient  = new HttpClient();
            var stream      = httpClient.GetStreamAsync(capabilitiesUrl).Result;
            var tileSources = WmtsParser.Parse(stream);
            var tileSource  = (from a in tileSources where ((WmtsTileSchema)a.Schema).Layer == LayerId select a).FirstOrDefault();

            tileSource.Schema.Format = format;

            var brutileLayer = new BruTileLayer(_application, tileSource)
            {
                Name    = LayerName,
                Visible = true
            };

            return(brutileLayer);
        }
Beispiel #26
0
        private void FillTree(WmsConnectionInfo connectionInfo)
        {
            lvwWmtsLayers.Items.Clear();

            //Trying to get more information about layers to display

            XDocument doc;
            var       req = (HttpWebRequest)WebRequest.Create(connectionInfo.Url);

            if (!string.IsNullOrEmpty(connectionInfo.Username))
            {
                req.Credentials = new NetworkCredential(connectionInfo.Username, connectionInfo.Password);
            }

            if (!string.IsNullOrEmpty(connectionInfo.Referrer))
            {
                req.Referer = connectionInfo.Referrer;
            }

            var tileSources = new List <ITileSource>();

            using (var resp = req.GetResponse())
            {
                using (var s = resp.GetResponseStream())
                {
                    tileSources.AddRange(WmtsParser.Parse(s));
                }
            }

            foreach (var tileSource in tileSources)
            {
                var tmp = (WmtsTileSchema)tileSource.Schema;

                var n = lvwWmtsLayers.Items.Add(tmp.Identifier);

                n.SubItems.Add(tmp.Format);
                n.SubItems.Add(tmp.Style);
                n.SubItems.Add(tileSource.Name);
                n.SubItems.Add(tmp.Abstract);
                n.SubItems.Add(tmp.Name);
                n.SubItems.Add(tmp.Srs);

                n.Tag = tileSource;
            }
        }
Beispiel #27
0
        public static async Task <ILayer> CreateLayerAsync()
        {
            var url = "http://geodata.nationaalgeoregister.nl/wmts/top10nl?VERSION=1.0.0&request=GetCapabilities";

            using var response = await(DefaultCache as IUrlPersistentCache).UrlCachedStreamAsync(url);
            var tileSources          = WmtsParser.Parse(response);
            var nature2000TileSource = tileSources.First(t => t.Name == "natura2000");

            if (DefaultCache != null)
            {
                nature2000TileSource.PersistentCache = DefaultCache;
            }

            return(new TileLayer(nature2000TileSource)
            {
                Name = nature2000TileSource.Name
            });
        }
Beispiel #28
0
        public IEnumerable <ILayer> GetPdokWmtsLayers()
        {
            var          result = new List <TileLayer>();
            const string url    = "http://geodata.nationaalgeoregister.nl/wmts?VERSION=1.0.0&request=GetCapabilities";

            using (var httpClient = new HttpClient())
                using (var response = httpClient.GetStreamAsync(url).Result)
                {
                    var tileSources = WmtsParser.Parse(response)
                                      .Where(t => t.Schema.Format == "image/png" && t.Schema.Srs.Contains("3857"));

                    result.AddRange(tileSources.Select(tileSource => new TileLayer(tileSource)
                    {
                        Name = tileSource.Name
                    }));
                    return(result);
                }
        }
Beispiel #29
0
        public void TestParsingWmtsCapabilitiesKvpAndRestful()
        {
            // arrange
            using (var stream = File.OpenRead(Path.Combine("Resources", "Wmts", "wmts-capabilities-arcgis-server-doggersbank.xml")))
            {
                // act
                var tileSources = WmtsParser.Parse(stream);

                // assert
                var tileSource = tileSources.First(s => s.Name.ToLower() == "public_doggersbank");
                var tileSchema = tileSource.Schema as WmtsTileSchema;
                Assert.AreEqual(15, tileSource.Schema.Resolutions.Count);
                Assert.NotNull(tileSchema);
                Assert.AreEqual("public_doggersbank", tileSchema.Title);
                Assert.AreEqual("public_doggersbank", tileSchema.Layer);
                Assert.AreEqual("default028mm", tileSchema.TileMatrixSet);
            }
        }
Beispiel #30
0
        public static async Task <ILayer> CreateLayerAsync()
        {
            using var httpClient = new HttpClient();
            // When testing today (20-10-2021) tile 0,0,0 returned a 500. Perhaps this should be fixed in the xml.
            using var response = await httpClient.GetStreamAsync("https://bertt.github.io/wmts/capabilities/michelin.xml");

            var tileSource = WmtsParser.Parse(response).First();

            if (Michelin.DefaultCache != null)
            {
                tileSource.PersistentCache = Michelin.DefaultCache;
            }

            return(new TileLayer(tileSource)
            {
                Name = tileSource.Name
            });
        }