Esempio n. 1
0
        public async Task <FileResult> GetMapTileDataRaw(
            [FromQuery] Guid projectUid,
            [FromQuery] Guid?filterUid,
            [FromQuery] Guid?designUid,
            [FromQuery] Guid?cutfillDesignUid,
            [FromQuery] MapDisplayType type,
            [FromQuery] DisplayMode mode,
            [FromQuery] ushort width,
            [FromQuery] ushort height,
            [FromQuery] string bbox)
        {
            var result = await GetMapTileData(projectUid, filterUid, designUid, cutfillDesignUid, type, mode, width, height, bbox);

            return(new FileStreamResult(new MemoryStream(result.TileData), ContentTypeConstants.ImagePng));
        }
Esempio n. 2
0
        public async Task <TileResult> GetMapTileData(
            [FromQuery] Guid projectUid,
            [FromQuery] Guid?filterUid,
            [FromQuery] Guid?designUid,
            [FromQuery] Guid?cutfillDesignUid,
            [FromQuery] MapDisplayType type,
            [FromQuery] DisplayMode mode,
            [FromQuery] ushort width,
            [FromQuery] ushort height,
            [FromQuery] string bbox)
        {
            var projectId       = ((RaptorPrincipal)User).GetLegacyProjectId(projectUid);
            var projectSettings = GetProjectSettingsTargets(projectUid);
            var filter          = GetCompactionFilter(projectUid, filterUid);

            Task <CompactionProjectSettingsColors> projectSettingsColors;
            Task <DesignDescriptor> design        = null;
            Task <DesignDescriptor> cutFillDesign = null;

            if (type == MapDisplayType.DesignMap)
            {
                design = GetAndValidateDesignDescriptor(projectUid, designUid);

                projectSettingsColors = GetGreyScaleHeightColors();

                await Task.WhenAll(projectId, projectSettings, filter, design, projectSettingsColors);

                mode = DisplayMode.Design3D;
            }
            else if (type == MapDisplayType.HeightMap)
            {
                projectSettingsColors = GetGreyScaleHeightColors();

                await Task.WhenAll(projectId, projectSettings, filter, projectSettingsColors);

                mode = DisplayMode.Height; // The height map must be of type height....
            }
            else if (type == MapDisplayType.Texture)
            {
                // Only used in texture mode
                cutFillDesign = GetAndValidateDesignDescriptor(projectUid, cutfillDesignUid);

                projectSettingsColors = GetProjectSettingsColors(projectUid);

                await Task.WhenAll(projectId, projectSettings, filter, cutFillDesign, projectSettingsColors);
            }
            else
            {
                throw new NotImplementedException();
            }

            var tileResult = await WithServiceExceptionTryExecuteAsync(() =>
                                                                       tileService.GetProductionDataTile(
                                                                           projectSettings.Result,
                                                                           projectSettingsColors.Result,
                                                                           filter.Result,
                                                                           projectId.Result,
                                                                           projectUid,
                                                                           mode,
                                                                           width,
                                                                           height,
                                                                           boundingBoxHelper.GetBoundingBox(bbox),
                                                                           design?.Result ?? cutFillDesign?.Result, // If we have a design, it means we are asking for the design height map - otherwise we may have a cut fill design to determine the texture
                                                                           null,
                                                                           null,
                                                                           null,
                                                                           null,
                                                                           CustomHeaders,
                                                                           GetUserId(),
                                                                           false));

            Response.Headers.Add("X-Warning", tileResult.TileOutsideProjectExtents.ToString());

            return(tileResult);
        }