Example #1
0
        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;
            }
        }