Example #1
0
        /// <summary>
        /// 修正按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnWaveFix_Click(object sender, EventArgs e)
        {
            btnWaveFix.Enabled = false;
            float superelevation        = float.Parse(txtSuperelevation.Text);
            float gage                  = float.Parse(txtGage.Text);
            float LProf                 = float.Parse(txtL_Prof.Text);
            float RProf                 = float.Parse(txtR_Prof.Text);
            int   fixedCount            = int.Parse(txtOriginalPointCount.Text);
            int   targetCount           = int.Parse(txtTargetPointCount.Text);
            IntelligentMilestoneFix fix = new IntelligentMilestoneFix();

            fix.FixedSamplingCount  = fixedCount;
            fix.TargetSamplingCount = targetCount;
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "Gage", ThreShold = gage, Priority = 1
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "Superelevation", ThreShold = superelevation, Priority = 0
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "L_Prof_SC", ThreShold = LProf, Priority = 2
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "R_Prof_SC", ThreShold = RProf, Priority = 3
            });
            fix.InitFixData(_maker.WaveformDataList[0].CitFilePath);
            Task task = Task.Factory.StartNew(() =>
            {
                foreach (string path in lstCitFiles.Items)
                {
                    fix.RunMilestoneFix(path);
                }
            });

            task.ContinueWith((t) =>
            {
                if (t.IsFaulted || t.Exception != null)
                {
                    foreach (var error in t.Exception.InnerExceptions)
                    {
                        MyLogger.logger.Error("运行智能里程失败:" + t.Exception.InnerException.Message);
                    }
                    MessageBox.Show("处理中出现错误:" + t.Exception.InnerExceptions[0].Message);
                }
                else if (t.IsCompleted)
                {
                    MessageBox.Show("处理完成!");
                }
                this.Invoke(new Action(() => { btnWaveFix.Enabled = true; }));
            });
        }
Example #2
0
        public void TestMethod1()
        {
            IntelligentMilestoneFix fix = new IntelligentMilestoneFix();

            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "Gage", ThreShold = 0.8f, Priority = 1
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "Superelevation", ThreShold = 0.8f, Priority = 0
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "L_Prof_SC", ThreShold = 0.8f, Priority = 2
            });
            fix.FixParams.Add(new FixParam()
            {
                ChannelName = "R_Prof_SC", ThreShold = 0.8f, Priority = 3
            });
            fix.InitFixData(@"D:\cit\gjhx-beijing-shanghai-22012015-052640-1-(0-406).cit");
            fix.CheckData(@"D:\cit\gjhx-beijing-shanghai-27062014-221903.cit");
            fix.SaveToFile(@"D:\cit\gjhx-beijing-shanghai-27062014-221903.cit");
        }
        public string Correction(string json)
        {
            //公共方法
            ResultInfo resultInfo = new ResultInfo();

            try
            {
                JObject obj = (JObject)JsonConvert.DeserializeObject(json);
                //修正后的cit文件路径
                string citFile = Convert.ToString(obj["citFile"]);
                //修正后的idf文件路径
                string idfFile = Convert.ToString(obj["idfFile"]);

                //要处理的cit文件路径的集合
                string[] lstCitFiles = JsonConvert.DeserializeObject <string[]>(obj["lstCitFiles"].ToString());
                //超高门阚值
                float superelevation = Convert.ToSingle(obj["superelevation"].ToString());
                //轨距门阚值
                float gage = Convert.ToSingle(obj["gage"].ToString());
                //左高低门阚值
                float LProf = Convert.ToSingle(obj["LProf"].ToString());
                //右高低门阚值
                float RProf = Convert.ToSingle(obj["RProf"].ToString());
                //原始数据点
                int fixedCount = Convert.ToInt32(obj["fixedCount"].ToString());
                //目标数据点
                int targetCount = Convert.ToInt32(obj["targetCount"].ToString());

                IntelligentMilestoneFix fix = new IntelligentMilestoneFix();

                fix.FixedSamplingCount  = fixedCount;
                fix.TargetSamplingCount = targetCount;

                fix.FixParams.Add(new FixParam()
                {
                    ChannelName = "Gage", ThreShold = gage, Priority = 1
                });
                fix.FixParams.Add(new FixParam()
                {
                    ChannelName = "Superelevation", ThreShold = superelevation, Priority = 0
                });
                fix.FixParams.Add(new FixParam()
                {
                    ChannelName = "L_Prof_SC", ThreShold = LProf, Priority = 2
                });
                fix.FixParams.Add(new FixParam()
                {
                    ChannelName = "R_Prof_SC", ThreShold = RProf, Priority = 3
                });

                fix.InitFixData(citFile, idfFile, true);

                try
                {
                    /*
                     * foreach (string path in lstCitFiles)
                     * {
                     *  bool exec=fix.RunMilestoneFix(path, true);
                     *  break;
                     * }
                     */
                    List <string> successlist = new List <string>();
                    List <string> faillist    = new List <string>();
                    foreach (string path in lstCitFiles)
                    {
                        //string path = lstCitFiles[0];
                        bool   exec      = fix.RunMilestoneFix(path, true);
                        string targetIdf = path.Replace(".cit", "_MileageFix.idf");
                        if (exec)
                        {
                            successlist.Add(targetIdf);
                        }
                        else
                        {
                            faillist.Add(path);
                        }
                    }

                    if (faillist.Count > 0)
                    {
                        resultInfo.flag = 1;
                        resultInfo.msg  = "修正失败:" + JsonConvert.SerializeObject(faillist);
                        resultInfo.data = JsonConvert.SerializeObject(successlist);
                    }
                    else
                    {
                        resultInfo.flag = 1;
                        resultInfo.msg  = "";
                        resultInfo.data = JsonConvert.SerializeObject(successlist);
                    }
                }
                catch (Exception ex)
                {
                    resultInfo.flag = 0;
                    resultInfo.msg  = ex.ToString();
                    return(JsonConvert.SerializeObject(resultInfo));
                }
            }
            catch (Exception ex)
            {
                resultInfo.flag = 0;
                resultInfo.msg  = ex.Message;
                return(JsonConvert.SerializeObject(resultInfo));
            }

            return(JsonConvert.SerializeObject(resultInfo));
        }