private void tsbtnLocalization_Click(object sender, EventArgs e) { if (this.current_fingerprint == null) return; FormLocalizationSetting fls = new FormLocalizationSetting(); if (this.current_dbpath != null) fls.DBpath = this.current_dbpath; if (fls.ShowDialog() == System.Windows.Forms.DialogResult.OK) { System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); FileStream fs = new FileStream(fls.DBpath, FileMode.Open, FileAccess.Read, FileShare.Read); FingerprintDataBase fdb = (FingerprintDataBase)formatter.Deserialize(fs); fs.Close(); FingerprintDataBase.Match_Strategy match_strategy = fls.MatchStrategy; double[] args = fls.Args; PointF loc = (new FingerprintDataBase(fdb.loc_fingerprint_dict, fdb.map)).MatchLocation(this.current_fingerprint[this.FingerprintName], match_strategy, args); this.current_dbpath = fls.DBpath; Point pt_real = new Point(); foreach (Transmitter trans in this.viz_rps.Map.Transmitters) pt_real = trans.Location; lbxLocResult.Items.Add("真实\t" + pt_real.ToString()); lbxLocResult.Items.Add("估计\t" + loc.ToString()); double err_pxl = new MathUtils.MathUtility().point_dist(pt_real, loc); lbxLocResult.Items.Add("误差(p)\t" + err_pxl.ToString("0.00")); lbxLocResult.Items.Add("误差(m)\t" + (err_pxl * this.viz_rps.Map.MeterPixelRatio).ToString("0.00")); lbxLocResult.Items.Add("--------------"); lbxLocResult.SelectedIndex = lbxLocResult.Items.Count - 1; } }