/// <summary> /// Calculates the densities for the dataset /// </summary> /// <param name="dataset">The dataset to calculate from</param> /// <returns>The list of densities</returns> public static IEnumerable<DensitySeries> CalculateDensity(Dataset dataset) { var densitySeries = new List<DensitySeries>(); foreach (var sensor in dataset.Sensors.Where(x => x.SensorType == "Water_Temperature")) { var series = new DensitySeries(sensor.Elevation); foreach (var value in sensor.CurrentState.Values) { var density = (1 - (((value.Value + 288.9414) / (508929.2 * (value.Value + 68.12963))) * Math.Pow((value.Value - 3.9863), 2))) * 1000; series.AddValue(value.Key, density); } densitySeries.Add(series); } return densitySeries.ToArray(); }
/// <summary> /// Calculates the densities for the dataset /// </summary> /// <param name="dataset">The dataset to calculate from</param> /// <returns>The list of densities</returns> public static IEnumerable <DensitySeries> CalculateDensity(Dataset dataset) { var densitySeries = new List <DensitySeries>(); foreach (var sensor in dataset.Sensors.Where(x => x.SensorType == "Water_Temperature")) { var series = new DensitySeries(sensor.Elevation); foreach (var value in sensor.CurrentState.Values) { var density = (1 - (((value.Value + 288.9414) / (508929.2 * (value.Value + 68.12963))) * Math.Pow((value.Value - 3.9863), 2))) * 1000; series.AddValue(value.Key, density); } densitySeries.Add(series); } return(densitySeries.ToArray()); }
private static Dictionary<DateTime, Dictionary<float, double>> GenerateDensityColumns(DensitySeries[] densities) { var densityColumns = new Dictionary<DateTime, Dictionary<float, double>>(); var timestamps = densities.SelectMany(x => x.Density.Keys).Distinct().OrderBy(x => x).ToArray(); foreach (var timestamp in timestamps) { var column = new Dictionary<float, double>(); var t = timestamp; foreach (var series in densities.Where(x => x.Density.ContainsKey(t))) { column[series.Depth] = series.Density[timestamp]; } densityColumns[timestamp] = column; } return densityColumns; }