/// <summary> /// Calculates an elevation sub grid for a designated sub grid on this design /// </summary> public (IClientHeightLeafSubGrid designHeights, DesignProfilerRequestResult errorCode) GetDesignHeightsViaLocalCompute( ISiteModelBase siteModel, double offset, SubGridCellAddress originCellAddress, double cellSize) { var heightsResult = _designElevationCalculator.Execute(siteModel, new DesignOffset(DesignDescriptor.DesignID, offset), cellSize, originCellAddress.X, originCellAddress.Y, out var calcResult); return(heightsResult, calcResult); }
public CalculateDesignElevationPatchResponse Invoke(CalculateDesignElevationPatchArgument args) { try { // Log.LogInformation($"CalculateDesignElevationPatchComputeFunc: Arg = {arg}"); var Executor = new CalculateDesignElevationPatch(); var heightsResult = Executor.Execute(DIContext.ObtainRequired <ISiteModels>().GetSiteModel(args.ProjectID), args.ReferenceDesign, args.CellSize, args.OriginX, args.OriginY, out var calcResult); return(new CalculateDesignElevationPatchResponse { CalcResult = calcResult, Heights = heightsResult }); } catch (Exception e) { _log.LogError(e, "Exception calculating design elevation patch"); return(new CalculateDesignElevationPatchResponse { Heights = null, CalcResult = Models.DesignProfilerRequestResult.UnknownError }); } }
public DesignFilterSubGridMaskResponse Invoke(DesignSubGridFilterMaskArgument args) { try { // Calculate an elevation patch for the requested location and convert it into a bitmask detailing which cells have non-null values var executor = new CalculateDesignElevationPatch(); var patch = executor.Execute(DIContext.ObtainRequired <ISiteModels>().GetSiteModel(args.ProjectID), args.ReferenceDesign, args.CellSize, args.OriginX, args.OriginY, out var calcResult); var result = new DesignFilterSubGridMaskResponse(); if (patch == null) { _log.LogWarning($"Request for design elevation patch that does not exist: Project: {args.ProjectID}, design {args.ReferenceDesign}, location {args.OriginX}:{args.OriginY}, calcResult: {calcResult}"); result.Bits = null; // Requestors should not ask for sub grids that don't exist in the design. result.RequestResult = calcResult; return(result); } result.RequestResult = calcResult; result.Bits = new SubGridTreeBitmapSubGridBits(SubGridBitsCreationOptions.Unfilled); var patchCells = patch.Cells; for (byte i = 0; i < SubGridTreeConsts.SubGridTreeDimension; i++) { for (byte j = 0; j < SubGridTreeConsts.SubGridTreeDimension; j++) { result.Bits[i, j] = !patchCells[i, j].Equals(Common.Consts.NullHeight); } } return(result); } catch (Exception e) { _log.LogError(e, "Exception calculating design filter sub grid mask"); return(new DesignFilterSubGridMaskResponse { Bits = null, RequestResult = Models.DesignProfilerRequestResult.UnknownError }); } }