Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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
                });
            }
        }
Ejemplo n.º 3
0
        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
                });
            }
        }