根据算法规则进行匹配相似车辆

识别车牌的误差低于2位显示入场记录信息 高于2位不显示
识别规则 根据省份误差为1位+后面数字字母误差为1位
只要两者结合误差率为 <= 2 即可显示匹配的车牌入场记录
也就是说省份错误为1位 + 后面任何1位错误 就显示 匹配相似信息

例如:豫A BCDE9  豫A BCDE8  粤A BCDE9  粤B BCDE9 新能源一个道理

 
//获取相关车辆信息
public static List<CurrentParking> GetCurrentParkingByCode(string  strPlateCode)
        {
           
            List<CurrentParking> inparkSimilarlist = new List<CurrentParking>();
            using (parkingContext  db= new parkingContext())
            {
               
                
                string sqlstr = "select * from InParking where Type=0 AND (PlateNO!=NULL OR PlateNO!='' ) order by InRecordId desc";
                ObjectResult<CurrentParking> objresult = db.ExecuteStoreQuery<CurrentParking>(sqlstr);
                if (objresult != null)
                {
                    var parklist = objresult.ToList();
                    //
                    //遍历数据循环取车牌信息进行对  传递的过来的车牌信息循环比对
                    for (int i = 0; i < parklist.Count; i++)
                    {
                        string plateNO = parklist[i].PlateCode;
                        //误差率为 <= 2 小于等于2位的  即可显示匹配的车牌入场记录
                        if (SimilarPlateNO(plateNO, strPlateCode) <= 2)
                        {
                            //满足条件的值保存到list集合中
                            inparkSimilarlist.Add(parklist[i]);
                        }
                    }

                }


            }
            return inparkSimilarlist;
        }
        /// <summary>
        /// 根据获取的车牌号和传递的在线车牌号进行相似度比对
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        public static int SimilarPlateNO(string plateNO ,string strPlateCode )
        {
            int nRet = 0;
            do {
                if (plateNO == null || strPlateCode == null)
                {
                    break;
                }

                if (plateNO .Length != strPlateCode .Length)
                {
                    break;
                }

                for (int i = 0; i < plateNO.Length; i++)
                {
                    //str[i]代表串中的字符是否相似  
                    //用循环出来车牌长度和传递过来车牌的字符串进行比对  累计计算相似的长度数
                    if (plateNO[i] == strPlateCode[i])
                    {
                        nRet++;
                    }
                }
              }
            while (false);
            
            // 循环出来的车牌长度-相似长度=误差识别度
            return plateNO.Length - nRet;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值