private void AddPanelMeasurements(ManualGaugingDischargeSection dischargeSection)
        {
            var channels = _ehsn.MidsecMeas?.DischargeMeasurement?.Channels ?? new Channel[0];

            if (!channels.Any())
            {
                return;
            }

            var(edges, panels) = MergeAllChannels(channels.ToList());

            var startingEdge = edges.First();
            var endingEdge   = edges.Last();

            dischargeSection.StartPoint = GetMappedEnum(startingEdge.LeftOrRight, KnownStartPointTypes);

            var meters = (_ehsn.MidsecMeas?.DischargeMeasurement?.MmtInitAndSummary?.MetersUsed ?? new Meter[0])
                         .Select(CreateMeterCalibration)
                         .ToList();

            var edgeMeter = FindMeter(meters);

            AddVertical(dischargeSection.Verticals, CreateEdgeVertical(startingEdge, VerticalType.StartEdgeNoWaterBefore, edgeMeter));

            foreach (var panel in panels)
            {
                AddVertical(dischargeSection.Verticals, CreatePanelVertical(panel, FindMeter(meters, panel.MeterNumber)));
            }

            AddVertical(dischargeSection.Verticals, CreateEdgeVertical(endingEdge, VerticalType.EndEdgeNoWaterAfter, edgeMeter));

            dischargeSection.VelocityObservationMethod = FindMostCommonVelocityMethod(dischargeSection.Verticals);
        }
        private void SetVerticals(ManualGaugingDischargeSection dischargeSection)
        {
            var verticals = new VerticalMapper(_parsedData, _visitInterval.Start).GetVerticals();

            foreach (var vertical in verticals)
            {
                dischargeSection.Verticals.Add(vertical);
            }
        }
        private void SetMappedVerticals(ManualGaugingDischargeSection manualGaugingDischarge, MeterCalibration meterCalibration,
                                        XmlRootSummaryStation[] stations)
        {
            var verticals = new VerticalMapper(GetMeasurementPeriod(), meterCalibration).MapAll(stations);

            foreach (var vertical in verticals)
            {
                manualGaugingDischarge.Verticals.Add(vertical);
            }
        }
        private void UpdateDischargeSectionWithVerticals(ManualGaugingDischargeSection dischargeSection, GaugingSummaryItem summaryItem)
        {
            var verticals = _verticalMapper.Map(summaryItem, dischargeSection.DeploymentMethod);

            foreach (var vertical in verticals)
            {
                dischargeSection.Verticals.Add(vertical);
            }

            dischargeSection.WidthValue = CalculateTotalWidth(verticals);
        }
        private static void UpdateDischargeSectionWithDerivedValues(ManualGaugingDischargeSection dischargeSection, GaugingSummaryItem summaryItem)
        {
            dischargeSection.DischargeMethod           = MapDischargeMethod(summaryItem.FlowCalculationMethod);
            dischargeSection.StartPoint                = MapStartPoint(summaryItem.StartBank);
            dischargeSection.VelocityObservationMethod = DetermineVelocityObservationMethod(summaryItem);

            var meterSuspensionAndDeploymentMethod = MapMeterSuspensionAndDeploymentMethod(summaryItem);

            dischargeSection.MeterSuspension  = meterSuspensionAndDeploymentMethod.MeterSuspension;
            dischargeSection.DeploymentMethod = meterSuspensionAndDeploymentMethod.DeploymentMethod;
        }
Exemple #6
0
        private void SetChannelObservations(ManualGaugingDischargeSection dischargeSection, DischargeMeasurementSummary summary,
                                            UnitSystem unitSystem)
        {
            //River area:
            dischargeSection.AreaUnitId = unitSystem.AreaUnitId;
            dischargeSection.AreaValue  = summary.Area;

            //Width:
            dischargeSection.WidthValue = summary.Width;

            //Velocity:
            dischargeSection.VelocityUnitId       = unitSystem.VelocityUnitId;
            dischargeSection.VelocityAverageValue = summary.MeanVelocity;
        }
Exemple #7
0
        private void AdjustUnknownTotalDischargePortion(ManualGaugingDischargeSection manualGauging)
        {
            var totalDischarge = manualGauging.Discharge.Value;

            foreach (var vertical in manualGauging.Verticals)
            {
                if (!double.IsNaN(vertical.Segment.TotalDischargePortion) || double.IsNaN(vertical.Segment.Discharge))
                {
                    continue;
                }

                vertical.Segment.TotalDischargePortion = 100 * vertical.Segment.Discharge / totalDischarge;
            }
        }
        private void SetChannelObservations(ManualGaugingDischargeSection dischargeSection, SxSSummary sxsSummary,
                                            UnitSystem unitSystem)
        {
            //River area:
            dischargeSection.AreaUnitId = unitSystem.AreaUnitId;
            dischargeSection.AreaValue  = sxsSummary.Meas_Area.AsDouble();

            //Width:
            dischargeSection.WidthValue = sxsSummary.Meas_Width.AsDouble();

            //Velocity:
            dischargeSection.VelocityUnitId       = unitSystem.VelocityUnitId;
            dischargeSection.VelocityAverageValue = sxsSummary.Mean_Vel.AsDouble();
        }
        private void SetChannelObservations(ManualGaugingDischargeSection dischargeSection, UnitSystem unitSystem)
        {
            //Width:
            dischargeSection.WidthValue     = _parsedData.TotalWidth;
            dischargeSection.DistanceUnitId = unitSystem.DistanceUnitId;

            //River area:
            dischargeSection.AreaValue  = _parsedData.TotalArea;
            dischargeSection.AreaUnitId = unitSystem.AreaUnitId;

            //Velocity:
            dischargeSection.VelocityAverageValue = _parsedData.MeanVelocity;
            dischargeSection.VelocityUnitId       = unitSystem.VelocityUnitId;
        }
        private void SetTechnologyInfo(ManualGaugingDischargeSection dischargeSection)
        {
            //Primary Current Meter: will be inferred from verticals.

            //Deployment method:
            dischargeSection.DeploymentMethod =
                CommonMapper.GetDeploymentMethodBySoundingWeight(_parsedData.SoundingWeight);

            //Meter Suspension:
            if (dischargeSection.DeploymentMethod == DeploymentMethodType.Wading)
            {
                dischargeSection.MeterSuspension = MeterSuspensionType.RoundRod;
            }

            //Suspension weight: in vertical's OpenWaterData.
        }
        private void SetDischargeCalculationTechnique(ManualGaugingDischargeSection dischargeSection)
        {
            //Starting Point:
            switch (_parsedData.StartMode)
            {
            case "LEW":
                dischargeSection.StartPoint = StartPointType.LeftEdgeOfWater;
                break;

            case "REW":
                dischargeSection.StartPoint = StartPointType.RightEdgeOfWater;
                break;

            default:
                throw new ArgumentException($"Unknown start point:'{_parsedData.StartMode}'");
            }

            //Other fields in the Technique section on UI will be inferred from the input.
        }
Exemple #12
0
        private void SetMappedVerticals(ManualGaugingDischargeSection dischargeSection, DischargeMeasurementSummary summary)
        {
            if (summary.Verticals.Any())
            {
                dischargeSection.NumberOfVerticals = null;
            }

            var verticals = new VerticalMapper(GetMeasurementPeriod(), dischargeSection.MeterCalibration)
                            .MapAll(summary);

            var verticalTypes = new Dictionary <PointVelocityObservationType, int>();

            foreach (var vertical in verticals)
            {
                dischargeSection.Verticals.Add(vertical);

                if (vertical.VelocityObservation.VelocityObservationMethod.HasValue)
                {
                    var verticalType = vertical.VelocityObservation.VelocityObservationMethod.Value;

                    if (!verticalTypes.TryGetValue(verticalType, out var count))
                    {
                        count = 0;
                    }

                    verticalTypes[verticalType] = 1 + count;
                }
            }

            if (verticalTypes.Any())
            {
                dischargeSection.VelocityObservationMethod = verticalTypes
                                                             .OrderByDescending(kvp => kvp.Value)
                                                             .First()
                                                             .Key;
            }
        }
 private IEnumerable <DateTimeOffset> ManualGaugingTimes(ManualGaugingDischargeSection manualGauging)
 {
     return(manualGauging
            .Verticals
            .Select(v => v.MeasurementTime ?? DateTimeOffset.MinValue));
 }
Exemple #14
0
 private static void AssertDischargeSectionHasExpectedSuspensionAndDeploymentType(ManualGaugingDischargeSection dischargeSection,
                                                                                  MeterSuspensionType meterSuspensionType, DeploymentMethodType expectedMeterAndDeploymentType)
 {
     Assert.That(dischargeSection.MeterSuspension, Is.EqualTo(meterSuspensionType));
     Assert.That(dischargeSection.DeploymentMethod, Is.EqualTo(expectedMeterAndDeploymentType));
 }