zoukankan      html  css  js  c++  java
  • 根据算法规则进行匹配相似车辆

    识别车牌的误差低于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;
            }
  • 相关阅读:
    . net core的发布
    Using Redis Cache for session data storage in ASP.NET Core
    WCF之双工服务
    值得参考的.net core 的博客
    一、获取EF
    limit 基本实现方式
    Session机制详解及分布式中Session共享解决方案
    ASP.NET Core 中的基于角色的授权ASP.NET Core 中的基于角色的授权
    WCF之双工服务
    苹果公司的粉丝转抄
  • 原文地址:https://www.cnblogs.com/Warmsunshine/p/9552726.html
Copyright © 2011-2022 走看看