コード例 #1
0
        public async Task GetTileWmtsAsync()
        {
            var expected000 = new TileDataStub(0, 0, 0);

            var r1 = await client.GetAsync("/wmts?layer=source1&tilematrixset=EPSG%3A3857&Service=WMTS&Request=GetTile&Version=1.0.0&TileMatrix=0&TileCol=0&TileRow=0");

            Assert.AreEqual(HttpStatusCode.OK, r1.StatusCode);
            var actual1 = new TileDataStub(await r1.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual1);

            var r2 = await client.GetAsync("/wmts?layer=source2&tilematrixset=EPSG%3A3857&Service=WMTS&Request=GetTile&Version=1.0.0&TileMatrix=0&TileCol=0&TileRow=0");

            Assert.AreEqual(HttpStatusCode.OK, r2.StatusCode);
            var actual2 = new TileDataStub(await r2.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual2);

            var expected312 = new TileDataStub(3, 1, 2);
            var r3          = await client.GetAsync("/wmts?layer=source3&tilematrixset=EPSG%3A3857&Service=WMTS&Request=GetTile&Version=1.0.0&TileMatrix=2&TileCol=3&TileRow=1");

            Assert.AreEqual(HttpStatusCode.OK, r3.StatusCode);
            var actual3 = new TileDataStub(await r3.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected312, actual3);

            var r4 = await client.GetAsync("/wmts?layer=source4&tilematrixset=EPSG%3A3857&Service=WMTS&Request=GetTile&Version=1.0.0&TileMatrix=0&TileCol=0&TileRow=0");

            Assert.AreEqual(HttpStatusCode.OK, r4.StatusCode);
            var actual4 = new TileDataStub(await r4.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual4);
        }
コード例 #2
0
        public async Task GetTileTmsAsync()
        {
            var expected000 = new TileDataStub(0, 0, 0);

            var r1 = await client.GetAsync("/tms/1.0.0/source1/0/0/0.png");

            Assert.AreEqual(HttpStatusCode.OK, r1.StatusCode);
            var actual1 = new TileDataStub(await r1.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual1);

            var r2 = await client.GetAsync("/tms/1.0.0/source2/0/0/0.jpg");

            Assert.AreEqual(HttpStatusCode.OK, r2.StatusCode);
            var actual2 = new TileDataStub(await r2.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual2);

            var expected312 = new TileDataStub(3, 1, 2);
            var r3          = await client.GetAsync("/tms/1.0.0/source3/2/3/2.png"); // TMS inverts Y axis

            Assert.AreEqual(HttpStatusCode.OK, r3.StatusCode);
            var actual3 = new TileDataStub(await r3.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected312, actual3);

            var r4 = await client.GetAsync("/tms/1.0.0/source4/0/0/0.png");

            Assert.AreEqual(HttpStatusCode.OK, r4.StatusCode);
            var actual4 = new TileDataStub(await r4.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual4);
        }
コード例 #3
0
        public async Task GetTileXyzAsync()
        {
            var expected000 = new TileDataStub(0, 0, 0);

            var r1 = await client.GetAsync("/xyz/source1?x=0&y=0&z=0");

            Assert.AreEqual(HttpStatusCode.OK, r1.StatusCode);
            var actual1 = new TileDataStub(await r1.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual1);

            var r2 = await client.GetAsync("/xyz/source2/0/0/0.jpg");

            Assert.AreEqual(HttpStatusCode.OK, r2.StatusCode);
            var actual2 = new TileDataStub(await r2.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual2);

            var expected312 = new TileDataStub(3, 1, 2);
            var r3          = await client.GetAsync("/xyz/source3/2/3/1.png");

            Assert.AreEqual(HttpStatusCode.OK, r3.StatusCode);
            var actual3 = new TileDataStub(await r3.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected312, actual3);

            var r4 = await client.GetAsync("/xyz/source4/?x=0&y=0&z=0");

            Assert.AreEqual(HttpStatusCode.OK, r4.StatusCode);
            var actual4 = new TileDataStub(await r4.Content.ReadAsByteArrayAsync());

            Assert.AreEqual(expected000, actual4);
        }
コード例 #4
0
 private static void CreateLocalTiles(SourceConfiguration tileSource)
 {
     // Create files Z\X\Y structure
     for (var z = tileSource.MinZoom.Value; z <= tileSource.MaxZoom.Value; z++)
     {
         Directory.CreateDirectory(Path.Join(LocalFilesPath, z.ToString(CultureInfo.InvariantCulture)));
         for (var x = 0; x < 1 << z; x++)
         {
             var zxPath = Path.Join(LocalFilesPath, z.ToString(CultureInfo.InvariantCulture), x.ToString(CultureInfo.InvariantCulture));
             Directory.CreateDirectory(zxPath);
             for (var y = 0; y < 1 << z; y++)
             {
                 var tilePath = Path.Join(zxPath, y.ToString(CultureInfo.InvariantCulture)) + "." + tileSource.Format;
                 var tile     = new TileDataStub(x, y, z);
                 File.WriteAllBytes(tilePath, tile.ToByteArray());
             }
         }
     }
 }
コード例 #5
0
        private static void PrepareTestData()
        {
            if (!Directory.Exists(TestDataPath))
            {
                Directory.CreateDirectory(TestDataPath);
            }

            // Create config file
            var tileSources = new[]
            {
                new TileSourceConfiguration
                {
                    Type     = TileSourceConfiguration.TypeMBTiles,
                    Id       = "source1",
                    Location = Mbtiles1FilePath,
                    MinZoom  = 0,
                    MaxZoom  = 18,
                },
                new TileSourceConfiguration
                {
                    Type     = TileSourceConfiguration.TypeMBTiles,
                    Id       = "source2",
                    Title    = "Tile Source 2",
                    Location = Mbtiles2FilePath,
                },
                new TileSourceConfiguration
                {
                    Type     = TileSourceConfiguration.TypeLocalFiles,
                    Id       = "source3",
                    Title    = "Tile Source 3",
                    Location = LocalFilesPath + "\\{z}\\{x}\\{y}.png",
                    MinZoom  = 0,
                    MaxZoom  = 2,
                    Format   = "png",
                    Tms      = false,
                },
                new TileSourceConfiguration // HTTP proxy to source1
                {
                    Type     = TileSourceConfiguration.TypeXyz,
                    Id       = "source4",
                    Title    = "Tile Source 4",
                    Location = BaseUrl + "/xyz/source1/{z}/{x}/{y}.png",
                    Format   = "png",
                    MinZoom  = 0,
                    MaxZoom  = 2,
                },
            };

            File.WriteAllText(SettingsFilePath, JsonSerializer.Serialize(new { TileSources = tileSources }));

            // TODO: more tiles into database
            // Create and fill MBTiles databases
            var db1 = MBT.Repository.CreateEmptyDatabase(Mbtiles1FilePath);

            db1.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyName, "World Countries"));
            db1.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyFormat, "png"));
            db1.AddTile(0, 0, 0, new TileDataStub(0, 0, 0).ToByteArray());

            var db2 = MBT.Repository.CreateEmptyDatabase(Mbtiles2FilePath);

            db2.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyName, "Satellite Imagery"));
            db2.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyFormat, "jpg"));
            db2.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyMinZoom, "0"));
            db2.AddMetadataItem(new MBT.MetadataItem(MBT.MetadataItem.KeyMaxZoom, "5"));
            db2.AddTile(0, 0, 0, new TileDataStub(0, 0, 0).ToByteArray());

            // Create files Z\X\Y structure
            for (var z = tileSources[2].MinZoom.Value; z <= tileSources[2].MaxZoom.Value; z++)
            {
                Directory.CreateDirectory(Path.Join(LocalFilesPath, z.ToString(CultureInfo.InvariantCulture)));
                for (var x = 0; x < 1 << z; x++)
                {
                    var zxPath = Path.Join(LocalFilesPath, z.ToString(CultureInfo.InvariantCulture), x.ToString(CultureInfo.InvariantCulture));
                    Directory.CreateDirectory(zxPath);
                    for (var y = 0; y < 1 << z; y++)
                    {
                        var tilePath = Path.Join(zxPath, y.ToString(CultureInfo.InvariantCulture)) + "." + tileSources[2].Format;
                        var tile     = new TileDataStub(x, y, z);
                        File.WriteAllBytes(tilePath, tile.ToByteArray());
                    }
                }
            }
        }