Пример #1
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
                });
            }
        }
Пример #2
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
                });
            }
        }