예제 #1
0
        private void init(string folder)
        {
            net = new ValuesNet(maxDepth);
            ValuesNetManager.fillValuesNet(net, folder,
                                           (s, args) =>
            {
                updateActionProgress(args.ProgressPercentage);
            },
                                           (s, args) =>
            {
                vnetGMap = new ValuesNetGMap(net, mapView);
                mapView.OnMapZoomChanged += delegate
                {
                    Title = vnetGMap.visibleSquaresCount.ToString();
                };
                mapView.OnMapDrag += delegate
                {
                    Title = vnetGMap.visibleSquaresCount.ToString();
                };

                MainCanvas.Children.Clear();
                MainCanvas.Children.Add(vnetGMap);

                /*vnet = new ValuesNetElement(MainCanvas, net);
                 *
                 * MainCanvas.Children.Clear();
                 * MainCanvas.Children.Add(vnet);*/
            });
        }
예제 #2
0
        public ValuesNetGMap(ValuesNet net, GMapControl mapView)
        {
            this.net     = net;
            this.mapView = mapView;

            setUpMap(mapView);

            InvalidateVisual();
        }
예제 #3
0
        public static void fillValuesNet(
            ValuesNet emptyValuesMap,
            List <CPDataGeo> CPdata,
            ProgressChangedEventHandler processHandler,
            RunWorkerCompletedEventHandler completeHandler)
        {
            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress = true;
            bw.DoWork += (sender, e) =>
            {
                double counter    = 0;
                double totalCount = 0;
                //double averageValue = 0;
                foreach (CPDataGeo data in CPdata)
                {
                    //{
                    totalCount += data.geoData.Length;
                }

                /*Parallel.ForEach(data.geoData, tuplya =>
                 * {
                 *  foreach (double v in tuplya.values)
                 *      averageValue += Math.Abs(v);
                 * });
                 * }
                 * averageValue /= totalCount;*/

                Parallel.ForEach(CPdata, (data) =>
                {
                    int part        = 0;
                    int triggerPart = data.geoData.Length / 100;
                    Parallel.ForEach(data.geoData, tuplya =>
                    {
                        double value = 0;
                        foreach (double v in tuplya.values)
                        {
                            value += Math.Abs(v);
                        }

                        emptyValuesMap.putValue(tuplya.coordinate.Latitude, tuplya.coordinate.Longitude, value);
                        counter++;
                        part++;

                        if (part >= triggerPart)
                        {
                            part = 0;
                            bw.ReportProgress((int)(counter / totalCount * 100));
                        }
                    });
                });
            };
            bw.ProgressChanged    += processHandler;
            bw.RunWorkerCompleted += completeHandler;
            bw.RunWorkerAsync();
        }
예제 #4
0
        public static void fillValuesNet(
            ValuesNet emptyValuesMap,
            string folder,
            ProgressChangedEventHandler processHandler,
            RunWorkerCompletedEventHandler completeHandler)
        {
            List <string> directories = new List <string>();
            List <string> files       = new List <string>();

            foreach (string path in Directory.GetDirectories(folder))
            {
                if (Directory.Exists(path))
                {
                    directories.Add(path);
                }
                else if (File.Exists(path))
                {
                    files.Add(path);
                }
            }

            List <CPDataGeo> data = new List <CPDataGeo>();

            Dictionary <SensorType, CPData> CPdata;

            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress = true;
            bw.DoWork += (sender, e) =>
            {
                double i = 0;
                foreach (string path in directories)
                {
                    CPdata = CPData.fromDirectory(path);
                    if (CPdata.ContainsKey(SensorType.ACCELEROMETER) && CPdata.ContainsKey(SensorType.GPS))
                    {
                        data.Add(new CPDataGeo(CPdata[SensorType.ACCELEROMETER], CPdata[SensorType.GPS]));
                    }
                    i++;

                    bw.ReportProgress((int)(i / directories.Count * 100));
                }

                CPdata = CPData.fromDirectory(folder);
                if (CPdata.ContainsKey(SensorType.ACCELEROMETER) && CPdata.ContainsKey(SensorType.GPS))
                {
                    data.Add(new CPDataGeo(CPdata[SensorType.ACCELEROMETER], CPdata[SensorType.GPS]));
                }
            };
            bw.ProgressChanged    += processHandler;
            bw.RunWorkerCompleted += delegate
            {
                fillValuesNet(emptyValuesMap, data, processHandler, completeHandler);
            };
            bw.RunWorkerAsync();
        }
예제 #5
0
        public ValuesNetElement(Canvas canvas, ValuesNet net)
        {
            this.canvas = canvas;
            this.net    = net;

            matrix = new Matrix();
            matrix.Scale(4, -4);
            matrix.Translate(180, 90);

            SizeChanged       += ValuesNetElement_SizeChanged;
            canvas.MouseWheel += ValuesNetElement_MouseWheel;
            canvas.MouseMove  += Canvas_MouseMove;
            canvas.MouseDown  += Canvas_MouseDown;
        }
예제 #6
0
        private void init(List <CPDataGeo> CPdata)
        {
            net = new ValuesNet(maxDepth);

            ValuesNetManager.fillValuesNet(net, CPdata,
                                           (s, args) =>
            {
                updateActionProgress(args.ProgressPercentage);
            },
                                           (s, args) =>
            {
                vnet = new ValuesNetElement(MainCanvas, net);

                MainCanvas.Children.Clear();
                MainCanvas.Children.Add(vnet);
            });
        }
예제 #7
0
        public void init() //random initializer
        {
            net = new ValuesNet(maxDepth);
            Random rnd = new Random();

            ValuesNetManager.fillValuesNet(net, rnd, valuesCount,
                                           (s, args) =>
            {
                updateActionProgress(args.ProgressPercentage);
            },
                                           (s, args) =>
            {
                //vnet = new ValuesNetElement(MainCanvas, net);
                ValuesNetGMap vnetGMap = new ValuesNetGMap(net, mapView);

                MainCanvas.Children.Clear();
                MainCanvas.Children.Add(vnetGMap);
            });
        }
예제 #8
0
        public static void fillValuesNet(
            ValuesNet emptyValuesMap,
            Random rnd, long valuesCount,
            ProgressChangedEventHandler processHandler,
            RunWorkerCompletedEventHandler completeHandler)
        {
            BackgroundWorker bw = new BackgroundWorker();

            bw.WorkerReportsProgress = true;
            bw.DoWork += (sender, e) =>
            {
                for (int i = 0; i < valuesCount; i++)
                {
                    Point p = new Point(rnd.NextDouble() * 360 - 180, rnd.NextDouble() * 180 - 90);
                    emptyValuesMap.putValue(p.Y, p.X, 3);
                }
            };
            bw.ProgressChanged    += processHandler;
            bw.RunWorkerCompleted += completeHandler;
            bw.RunWorkerAsync();
        }
예제 #9
0
        private void MyWindow_Loaded(object sender, RoutedEventArgs e)
        {
            string folder;

            Application.Current.DispatcherUnhandledException += delegate
            {
                Properties.Settings.Default.LastFolder = "null";
            };

            KeyDown += MainWindow_KeyDown;
            buttonSelectFolder.Click += delegate
            {
                net    = new ValuesNet(maxDepth);
                folder = selectFolder();
                if (folder == "null")
                {
                    return;
                }
                init(folder);
            };

            //MyGrid.Children.Add(mapView);

            StringCollection cachedData = Properties.Settings.Default.CachedData;

            folder = Properties.Settings.Default.LastFolder;
            if (folder == "null")
            {
                folder = selectFolder();
                if (folder == "null")
                {
                    return;
                }
            }


            init(folder);
        }