---
panlei
2019-07-10 061ed89b29f2c0808770208e8d6c85d2c06f0929
ruleserver/ruleToformula.go
@@ -163,22 +163,9 @@
// 根据摄像机id拿到摄像机所有区域
func GetPolygons(cameraId string) []protomsg.CameraPolygon {
   //var api dbapi.CameraApi
   //data := api.FindAllPolygons()
   ////logger.Info("查到的所有区域:", data)
   //// 根据id从map中拿到区域
   var cameraPolygons []protomsg.CameraPolygon
   //for _, item := range data {
   //   if item.CameraId == cameraId && item.Type != "line" {
   //      // 需要根据比例把前台画的区域的坐标转化为相应摄像机拍摄的图像的大小   x坐标分别*image.width/页面区域宽  y坐标分别*image.height/页面区域高
   //      // 前台宽高固定
   //      //logger.Println("------------符合条件的区域:",item)
   //      cameraPolygons = append(cameraPolygons, item)
   //   }
   //}
   cameraPolygons = cache.GetPolygonsByCameraId(cameraId)
   //logger.Println("根据摄像机id查到的区域", cameraPolygons, "--区域数量为:", len(cameraPolygons))
   return cameraPolygons
}
@@ -256,11 +243,12 @@
      logger.Info("没有配置对比底库参数")
      return
   }
   logger.Info("============================================进入compare")
   for j := 0; j < len(groupRule.Rules); j++ {
      // 只有是人脸对比并且配置的参数是对比底库才走(若配的对比阈值则不走)
      if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
         for _, sdkData := range args.Sdkdata {
            if sdkData.IpcId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 搜索到人脸检测的sdkdata 现在关于人脸的只有他一个sdk,全找他
            logger.Info("============================================第一关")
               for _, areaMap := range sdkData.AreaMapList {
                  // 拿区域中每个人脸特征值去对比,填充其liker
                  if groupRule.Rules[j].PolygonId == areaMap.areaId {
@@ -273,6 +261,7 @@
                              logger.Error("getBaseInfo解压错误", err1)
                           }
                           for key, val := range m {
                              logger.Info("_______________________________________对比库的返回值",key,val)
                              baseinfo, err1 := esutil.Dbpersoninfosbyid(key)
                              if err1 != nil {
                                 logger.Error("查询底库人员信息出错", err1)
@@ -538,12 +527,6 @@
   areaPoints := Json2points(a.areaJson)
   widthScale := float64(arg.ImageWidth / 960)
   heigthScale := float64(arg.ImageHeight / 540)
   // for _, sdkInfo := range arg.SdkMessage.Tasklab.Sdkinfos {
   //    if sdkInfo.Sdktype == "yolo" {
   //       //sdkInfo.Sdkdata.
   //    }
   // }
   for _, obj := range arg.Photo {
      //logger.Info("------------------看看sdkData:", arg.SdkName, "的Photo数据----------------", obj, "----顺便看看占比-----:", PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale))
      if threshold <= obj.Score && size <= float64(obj.Rects.Width*obj.Rects.Height) && intersectionper <= PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) {
@@ -581,17 +564,6 @@
// 以摄像机id查出跟其相关的所有任务下的所有规则组
func GetRuleGroup(cameraId string) []*protomsg.TaskGroupArgs {
   // 查询数据库
   // 第一步查出跟这个摄像机相关的group_id(大规则)
   //var api dbapi.CameraTaskArgsApi
   //
   ////logger.Info("所有规则:", all)
   //var taskArgs []*protomsg.TaskGroupArgs
   //for _, camArg := range all {
   //   if camArg.CameraId == cameraId {
   //      taskArgs = camArg.TaskArgs
   //   }
   //}
   all := cache.GetCameraTaskRulesByCameraId(cameraId)
   return all
}
@@ -739,7 +711,7 @@
                  }
                  // 先清空过滤后的数据,再往里塞本次过滤后的数据
                  am.filterData = am.filterData[0:0]
                  logger.Info("-----------------------人脸过滤的args:", args)
                  //logger.Info("-----------------------人脸过滤的args:", args)
                  for _, arg := range args {
                     var formula string
                     if rule.SdkArgAlias == "score" {
@@ -846,21 +818,6 @@
      }
   }
}
//// 冗余拼接一个目标数量大于0
//func splice1(am *AreaMap) string {
//   var num int = 0
//   for _, data := range am.filterData {
//      if data.isYolo {
//         num++
//      }
//   }
//   logger.Println("看看区域内符合条件的目标数量:----------", num)
//   formula := strconv.Itoa(num) + " " + ">" + "0"
//   expression, _ := govaluate.NewEvaluableExpression(formula) // 得到数学公式
//   result, _ := expression.Evaluate(nil)                      // 得到数学公式的结果
//   return strconv.FormatBool(result.(bool))
//}
// 给数据库的规则表达式代参 args: 一条子规则,区域数据
func transferParameters(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
@@ -977,14 +934,6 @@
// 取出某个时间规则的第几天的规则段集合
func GetTimeById(id string, index int) []TimeRange {
   //var cameraTimeRule protomsg.CameraTimerule
   //var api dbapi.CameraApi
   //_, rules := api.FindAllTimeRules()
   //for _, rule := range rules {
   //   if rule.Id == id {
   //      cameraTimeRule = rule
   //   }
   //}
   _, cameraTimeRule := cache.GetTimeRuleById(id)
   var timeRangeList []day
   err := json.Unmarshal([]byte(cameraTimeRule.TimeRule), &timeRangeList)