Esempio n. 1
0
        public List <string> ProcessSubGrid(ClientCellProfileLeafSubgrid lastPassSubGrid)
        {
            var rows = new List <string>();

            if (RecordCountLimitReached())
            {
                return(rows);
            }

            int runningIndexLLHCoords = 0;

            if (_requestArgument.CoordType == CoordType.LatLon)
            {
                _llhCoords = SetupLLPositions(_siteModel.CSIB(), lastPassSubGrid);
            }

            lastPassSubGrid.CalculateWorldOrigin(out var subGridWorldOriginX, out var subGridWorldOriginY);

            SubGridUtilities.SubGridDimensionalIterator((x, y) =>
            {
                if (RecordCountLimitReached())
                {
                    return;
                }

                var cell = lastPassSubGrid.Cells[x, y];
                if (cell.PassCount == 0) // Nothing for us to do, as cell is empty
                {
                    return;
                }

                var easting  = subGridWorldOriginX + (x + 0.5) * lastPassSubGrid.CellSize;
                var northing = subGridWorldOriginY + (y + 0.5) * lastPassSubGrid.CellSize;
                rows.Add(FormatADataRow(cell, easting, northing, runningIndexLLHCoords));
                runningIndexLLHCoords++;
                _totalRowCountSoFar++;
            });

            return(rows);
        }
Esempio n. 2
0
        private StationOffsetRow ExtractRequiredValues(IDesignWrapper cutFillDesignWrapper, StationOffsetPoint point, ClientCellProfileLeafSubgrid clientGrid, int cellX, int cellY)
        {
            clientGrid.CalculateWorldOrigin(out double subgridWorldOriginX, out double subgridWorldOriginY);
            var cell = clientGrid.Cells[cellX, cellY];

            var result = new StationOffsetRow(point.Station, point.Offset, cell.CellYOffset + subgridWorldOriginY, cell.CellXOffset + subgridWorldOriginX);

            (IClientHeightLeafSubGrid designHeights, DesignProfilerRequestResult errorCode)getDesignHeightsResult = (null, DesignProfilerRequestResult.UnknownError);

            if (requestArgument.ReferenceDesign != null && requestArgument.ReferenceDesign.DesignID != Guid.Empty)
            {
                getDesignHeightsResult = cutFillDesignWrapper.Design.GetDesignHeightsViaLocalCompute(siteModel, cutFillDesignWrapper.Offset, clientGrid.OriginAsCellAddress(), clientGrid.CellSize);

                if (getDesignHeightsResult.errorCode != DesignProfilerRequestResult.OK || getDesignHeightsResult.designHeights == null)
                {
                    string errorMessage;
                    if (getDesignHeightsResult.errorCode == DesignProfilerRequestResult.NoElevationsInRequestedPatch)
                    {
                        errorMessage = "StationOffset Report. Call to RequestDesignElevationPatch failed due to no elevations in requested patch.";
                        Log.LogInformation(errorMessage);
                    }
                    else
                    {
                        errorMessage = $"StationOffset Report. Call to RequestDesignElevationPatch failed due to no TDesignProfilerRequestResult return code {getDesignHeightsResult.errorCode}.";
                        Log.LogWarning(errorMessage);
                    }
                }
            }

            if (cell.PassCount == 0) // Nothing for us to do, as cell is not in our areaControlSet...
            {
                return(result);
            }

            result.Elevation = requestArgument.ReportElevation ? cell.Height : Consts.NullHeight;
            result.CutFill   = (requestArgument.ReportCutFill && (getDesignHeightsResult.designHeights != null) &&
                                getDesignHeightsResult.designHeights.Cells[cellX, cellY] != Consts.NullHeight)
        ? cell.Height - getDesignHeightsResult.designHeights.Cells[cellX, cellY]
        : Consts.NullHeight;

            // CCV is equiv to CMV in this instance
            result.Cmv         = (short)(requestArgument.ReportCmv ? cell.LastPassValidCCV : CellPassConsts.NullCCV);
            result.Mdp         = (short)(requestArgument.ReportMdp ? cell.LastPassValidMDP : CellPassConsts.NullMDP);
            result.PassCount   = (short)(requestArgument.ReportPassCount ? cell.PassCount : CellPassConsts.NullPassCountValue);
            result.Temperature = (short)(requestArgument.ReportTemperature ? cell.LastPassValidTemperature : CellPassConsts.NullMaterialTemperatureValue);

            return(result);
        }
Esempio n. 3
0
        private List <GriddedReportDataRow> ExtractRequiredValues(GriddedReportRequestArgument griddedReportRequestArgument, ClientCellProfileLeafSubgrid subGrid)
        {
            var result = new List <GriddedReportDataRow>();

            (IClientHeightLeafSubGrid designHeights, DesignProfilerRequestResult errorCode)getDesignHeightsResult = (null, DesignProfilerRequestResult.UnknownError);

            if (_griddedReportRequestArgument.ReferenceDesign != null && _griddedReportRequestArgument.ReferenceDesign.DesignID != Guid.Empty)
            {
                var cutFillDesign = _siteModel.Designs.Locate(_griddedReportRequestArgument.ReferenceDesign.DesignID);
                if (cutFillDesign == null)
                {
                    throw new ArgumentException($"Design {_griddedReportRequestArgument.ReferenceDesign.DesignID} not a recognized design in project {_griddedReportRequestArgument.ProjectID}");
                }

                getDesignHeightsResult = cutFillDesign.GetDesignHeightsViaLocalCompute(_siteModel, _griddedReportRequestArgument.ReferenceDesign.Offset,
                                                                                       subGrid.OriginAsCellAddress(), subGrid.CellSize);

                if (getDesignHeightsResult.errorCode != DesignProfilerRequestResult.OK || getDesignHeightsResult.designHeights == null)
                {
                    string errorMessage;
                    if (getDesignHeightsResult.errorCode == DesignProfilerRequestResult.NoElevationsInRequestedPatch)
                    {
                        errorMessage = "Gridded Report. Call to RequestDesignElevationPatch failed due to no elevations in requested patch.";
                        Log.LogInformation(errorMessage);
                    }
                    else
                    {
                        errorMessage = $"Gridded Report. Call to RequestDesignElevationPatch failed due to no TDesignProfilerRequestResult return code {getDesignHeightsResult.errorCode}.";
                        Log.LogWarning(errorMessage);
                    }
                }
            }

            subGrid.CalculateWorldOrigin(out double subGridWorldOriginX, out double subGridWorldOriginY);
            SubGridUtilities.SubGridDimensionalIterator((x, y) =>
            {
                var cell = subGrid.Cells[x, y];

                if (cell.PassCount == 0) // Nothing for us to do, as cell is not in our areaControlSet...
                {
                    return;
                }

                result.Add(new GriddedReportDataRow
                {
                    Easting   = cell.CellXOffset + subGridWorldOriginX,
                    Northing  = cell.CellYOffset + subGridWorldOriginY,
                    Elevation = griddedReportRequestArgument.ReportElevation ? cell.Height : Consts.NullHeight,
                    CutFill   = griddedReportRequestArgument.ReportCutFill && getDesignHeightsResult.designHeights != null && getDesignHeightsResult.designHeights.Cells[x, y] != Consts.NullHeight
            ? cell.Height - getDesignHeightsResult.designHeights.Cells[x, y]
            : Consts.NullHeight,

                    // CCV is equiv to CMV in this instance
                    Cmv         = griddedReportRequestArgument.ReportCmv ? cell.LastPassValidCCV : CellPassConsts.NullCCV,
                    Mdp         = griddedReportRequestArgument.ReportMdp ? cell.LastPassValidMDP : CellPassConsts.NullMDP,
                    PassCount   = (short)(griddedReportRequestArgument.ReportPassCount ? cell.PassCount : CellPassConsts.NullPassCountValue),
                    Temperature = (short)(griddedReportRequestArgument.ReportTemperature ? cell.LastPassValidTemperature : CellPassConsts.NullMaterialTemperatureValue)
                });
            });

            return(result);
        }