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)); }
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); }