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);*/ }); }
public ValuesNetGMap(ValuesNet net, GMapControl mapView) { this.net = net; this.mapView = mapView; setUpMap(mapView); InvalidateVisual(); }
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(); }
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(); }
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; }
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); }); }
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); }); }
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(); }
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); }