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 }); } }
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); }
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) }); }
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); }
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); } }
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); }
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 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; }
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; }