Ejemplo n.º 1
0
        private SfChart GeneratePositionsMagneticFieldChart()
        {
            var magneticFieldData = LocaleData.Where(data => data.SignalType == SignalType.Magnetometer).ToList();

            MagneticFieldData = new ObservableCollection <PositionSignalData>(magneticFieldData);
            return(ChartsFactory.CreatePositionSignalDataScatterChart(
                       AppResources.Magnetic_field,
                       AppResources.Magnetic_Y_Intensity,
                       AppResources.Magnetic_Z_Intensity,
                       MagneticFieldData,
                       "Z", "Y", "StandardDeviationZ", "StandardDeviationX",
                       ErrorBarMode.Both
                       ));
        }
Ejemplo n.º 2
0
 private void AddPositionsSignalsCharts(StackLayout stackLayout)
 {
     SignalNames.ForEach(signalName =>
     {
         var signalData  = LocaleData.Where(data => data.SignalId == signalName).ToList();
         var minimum     = signalData.Min(signalData => signalData.Strength - signalData.StandardDeviation);
         var maximum     = signalData.Max(signalData => signalData.Strength + signalData.StandardDeviation);
         var primaryAxis = new CategoryAxis()
         {
             Title = new ChartAxisTitle()
             {
                 Text = AppResources.Position
             }
         };
         var secondaryAxis = new NumericalAxis()
         {
             Minimum    = minimum,
             Maximum    = maximum,
             LabelStyle = new ChartAxisLabelStyle()
             {
                 LabelFormat = "##"
             },
             Title = new ChartAxisTitle()
             {
                 Text = AppResources.RSSI_dB
             }
         };
         var chart = ChartsFactory.CreatePositionSignalDataScatterChart(
             signalName,
             AppResources.RSSI_dB,
             AppResources.Position,
             signalData,
             "PositionId",
             "Strength",
             "",
             "StandardDeviation",
             ErrorBarMode.Vertical,
             primaryAxis,
             secondaryAxis,
             height: 400 + ((int)Math.Floor(signalData.Count / 2.0) * 30));
         stackLayout.Children.Add(chart);
     });
 }
Ejemplo n.º 3
0
        private void AggregateData()
        {
            Locale.Zones?.ForEach(zone =>
                                  zone.Positions?.ForEach(position =>
            {
                position.Zone = zone;
                position.PositionSignalData?.ForEach(data =>
                {
                    data.Position = position;
                    LocaleData.Add(data);
                });
            }));

            SignalNames = LocaleData
                          .Where(data => data.SignalType != SignalType.Magnetometer && !string.IsNullOrEmpty(data.SignalId))
                          .GroupBy(data => data.SignalId)
                          .Select(data => new { SignalId = data.Key, Samples = data.Sum(positionSignalData => positionSignalData.Samples) })
                          .OrderByDescending(signal => signal.Samples)
                          .Select(signal => signal.SignalId)
                          .ToHashSet();
        }