Example #1
0
        public void OverlayTilesReturnsTileForEmptyList()
        {
            var mapParameters = new MapParameters {
                mapWidth = 4, mapHeight = 4
            };
            var result = TileServiceUtils.OverlayTiles(mapParameters, new Dictionary <TileOverlayType, byte[]>());

            byte[] expectedResult = null;
            using (Image <Rgba32> bitmap = new Image <Rgba32>(mapParameters.mapWidth, mapParameters.mapHeight))
            {
                expectedResult = bitmap.BitmapToByteArray();
            }

            for (int i = 0; i < expectedResult.Length; i++)
            {
                Assert.Equal(expectedResult[i], result[i]);
            }
        }
Example #2
0
        /// <summary>
        /// Gets a single tile with various types of data overlayed on it according to what is requested.
        /// </summary>
        /// <param name="request">The tile request</param>
        /// <returns>A TileResult</returns>
        public async Task <byte[]> GetMapData(TileGenerationRequest request)
        {
            log.LogInformation("Getting map tile");
            log.LogDebug("TileGenerationRequest: " + JsonConvert.SerializeObject(request));

            log.LogDebug("Awaiting tiles to be completed");

            var overlays = await Task.WhenAll(request.overlays.Select(overlay => RequestTile(request, overlay)));

            log.LogDebug($"Tiles completed: {overlays.Count()} overlays");

            var overlayTile =
                TileServiceUtils.OverlayTiles(request.mapParameters, overlays.ToDictionary(k => k.Item1, v => v.Item2));

            log.LogDebug("Tiles overlaid");
            overlayTile = ScaleTile(request, overlayTile);
            log.LogDebug("Tiles scaled");
            return(overlayTile);
        }
Example #3
0
        /// <summary>
        /// Gets a map tile with DXF linework on it.
        /// </summary>
        /// <param name="parameters">Map parameters such as bounding box, tile size, zoom level etc.</param>
        /// <param name="dxfFiles">The list of DXF files to overlay tiles for</param>
        /// <returns>A bitmap</returns>
        public async Task <byte[]> GetDxfBitmap(MapParameters parameters, IEnumerable <FileData> dxfFiles)
        {
            log.LogInformation("GetDxfBitmap");

            byte[] overlayData = null;

            if (dxfFiles != null && dxfFiles.Any())
            {
                List <byte[]> tileList = new List <byte[]>();
                foreach (var dxfFile in dxfFiles)
                {
                    if (dxfFile.ImportedFileType == ImportedFileType.Linework)
                    {
                        tileList.Add(await JoinDxfTiles(parameters, dxfFile));
                    }
                }

                log.LogDebug("Overlaying DXF bitmaps");
                overlayData = TileServiceUtils.OverlayTiles(parameters, tileList);
            }

            return(overlayData);
        }