Exemplo n.º 1
0
        private ManualGaugingDischargeSection CreateDischargeSectionWithDescription(DischargeActivity dischargeActivity,
                                                                                    DischargeMeasurementSummary summary, UnitSystem unitSystem)
        {
            var factory          = new ManualGaugingDischargeSectionFactory(unitSystem);
            var dischargeSection = factory.CreateManualGaugingDischargeSection(
                dischargeActivity.MeasurementPeriod, summary.Discharge ?? throw new ArgumentNullException(nameof(summary.Discharge)));

            //Party:
            dischargeSection.Party    = dischargeActivity.Party;
            dischargeSection.Comments = dischargeActivity.Comments;

            //Discharge method default to mid-section:
            var dischargeMethod = "MID".Equals(summary.DischargeMeasurementMethod, StringComparison.InvariantCultureIgnoreCase)
                ? DischargeMethodType.MidSection
                : DischargeMethodType.MeanSection;

            dischargeSection.DischargeMethod = dischargeMethod;
            dischargeSection.StartPoint      = "RIGHT".Equals(summary.StartEdge, StringComparison.InvariantCultureIgnoreCase)
                ? StartPointType.RightEdgeOfWater
                : StartPointType.LeftEdgeOfWater;

            dischargeSection.DeploymentMethod = DeploymentMethodType.Unspecified;

            return(dischargeSection);
        }
 public IEnumerable <Calibration> Map(DischargeMeasurementSummary summary)
 {
     if (summary.MeanTemp.HasValue)
     {
         yield return(new Calibration(Parameters.WaterTemp, Units.Celcius, summary.MeanTemp.Value)
         {
             DateTimeOffset = FieldVisitInfo.StartDate
         });
     }
 }
Exemplo n.º 3
0
        private void SetDischargeSection(DischargeActivity dischargeActivity, DischargeMeasurementSummary summary, UnitSystem unitSystem)
        {
            var dischargeSection = CreateDischargeSectionWithDescription(dischargeActivity, summary, unitSystem);

            dischargeActivity.ChannelMeasurements.Add(dischargeSection);

            dischargeSection.MeterCalibration = new MeterCalibrationMapper()
                                                .Map(summary);

            SetMappedVerticals(dischargeSection, summary);

            SetChannelObservations(dischargeSection, summary, unitSystem);
        }
Exemplo n.º 4
0
 public MeterCalibration Map(DischargeMeasurementSummary summary)
 {
     return(new MeterCalibration
     {
         Manufacturer = "OTT",                // Required
         SerialNumber = summary.SerialNumber, // Required
         Model = summary.Instrument,          // Required
         FirmwareVersion = summary.SoftwareVersion,
         MeterType = MeterType.Adcp,
         SoftwareVersion = summary.SoftwareVersion,
         Configuration = ComposeConfiguration(summary)
     });
 }
Exemplo n.º 5
0
        public DischargeActivity Map(DischargeMeasurementSummary summary)
        {
            IsMetric = summary.IsMetric;

            var unitSystem = IsMetric
                ? Units.MetricUnitSystem
                : Units.ImperialUnitSystem;

            var dischargeActivity = CreateDischargeActivityWithSummary(summary, unitSystem);

            SetDischargeSection(dischargeActivity, summary, unitSystem);

            return(dischargeActivity);
        }
Exemplo n.º 6
0
        public IEnumerable <Vertical> MapAll(DischargeMeasurementSummary summary)
        {
            if (!summary.Verticals.Any())
            {
                yield break;
            }

            ObservationSeconds = summary.AveragingTime ?? 20;

            foreach (var vertical in summary.Verticals.Select(Map))
            {
                yield return(vertical);
            }
        }
Exemplo n.º 7
0
        private DischargeActivity CreateDischargeActivityWithSummary(DischargeMeasurementSummary summary,
                                                                     UnitSystem unitSystem)
        {
            var factory = new DischargeActivityFactory(unitSystem);

            var totalDischarge = summary.Discharge ??
                                 throw new ArgumentException("No total discharge amount provided");

            //Discharge summary:
            var measurementPeriod = GetMeasurementPeriod();
            var dischargeActivity = factory.CreateDischargeActivity(measurementPeriod, totalDischarge);

            dischargeActivity.Comments = string.Join("\n", summary.Notes);
            dischargeActivity.Party    = summary.Operator;

            if (!Config.IgnoreMeasurementId)
            {
                dischargeActivity.MeasurementId = summary.MeasurementNumber;
            }

            dischargeActivity.QuantitativeUncertainty = summary.UncertaintyPercentage;
            dischargeActivity.ActiveUncertaintyType   = dischargeActivity.QuantitativeUncertainty.HasValue
                ? UncertaintyType.Quantitative
                : UncertaintyType.None;

            var notes = new List <string>(summary.DepthSensorNotes);

            if (summary.QualityThresholdNotes.Any())
            {
                if (notes.Any())
                {
                    notes.Add("");
                }

                notes.AddRange(summary.QualityThresholdNotes);
            }

            if (summary.FieldQualityNotes.Any())
            {
                if (notes.Any())
                {
                    notes.Add("");
                }

                notes.AddRange(summary.FieldQualityNotes);
            }

            dischargeActivity.QualityAssuranceComments = string.Join("\n", notes);

            if (!string.IsNullOrEmpty(summary.Quality) && Config.Grades.Any())
            {
                if (!Config.Grades.TryGetValue(summary.Quality, out var gradeText))
                {
                    gradeText = summary.Quality;
                }

                dischargeActivity.MeasurementGrade = int.TryParse(gradeText, out var gradeCode)
                    ? Grade.FromCode(gradeCode)
                    : Grade.FromDisplayName(gradeText);
            }

            AddMeanGageHeight(dischargeActivity, summary.GageStart, FieldVisitInfo.StartDate, unitSystem);
            AddMeanGageHeight(dischargeActivity, summary.GageEnd, FieldVisitInfo.EndDate, unitSystem);

            return(dischargeActivity);
        }
Exemplo n.º 8
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;
            }
        }
Exemplo n.º 9
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;
        }
Exemplo n.º 10
0
 private string ComposeConfiguration(DischargeMeasurementSummary summary)
 {
     return($"OTT/{summary.Instrument}/{summary.SerialNumber}");
 }
        public FieldVisitMapper(DischargeMeasurementSummary channel, LocationInfo location)
        {
            Summary = channel ?? throw new ArgumentNullException(nameof(channel));

            UtcOffset = location.UtcOffset;
        }