| | |
| | | areaMap := AreaMap{cameraId: cameraId, areaId: polygon.Id, areaJson: polygon.Polygon, triggerLine: polygon.TriggerLine, directionLine: polygon.DirectionLine} |
| | | // 为每个摄像机区域填充数据 |
| | | areaMap.CountAreaObjs(arg) |
| | | log.Println("-------areaMap的内容",areaMap) |
| | | arg.AreaMapList = append(arg.AreaMapList, areaMap) |
| | | log.Println("-------AreaMapList的内容",arg.AreaMapList) |
| | | } |
| | | } |
| | | |
| | |
| | | // 先过完条件规则 |
| | | for j := 0; j < len(groupRule.Rules); j++ { |
| | | for _, sdkData := range args.Sdkdata { |
| | | if sdkData.SdkId == "812b674b-2375-4589-919a-5c1c3278a975" { |
| | | log.Println("入侵的算法数据", sdkData) |
| | | } |
| | | for _, areaMap := range sdkData.AreaMapList { |
| | | ruleResult := filterRule(groupRule.Rules[j], &areaMap) |
| | | if ruleResult.Result != "" { |
| | |
| | | completeFormula = completeFormula + va.Result |
| | | } |
| | | if completeFormula != "" { |
| | | log.Println("看看公式-----------:", completeFormula) |
| | | expression, _ := govaluate.NewEvaluableExpression(completeFormula) |
| | | result, _ := expression.Evaluate(nil) // 得到数学公式的结果 |
| | | if result.(bool) { |
| | |
| | | // 这步要备齐表达式里所需要的所有参数 |
| | | a.targetNum++ |
| | | arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.SdkName, obj.ThftRes, obj.Liker} |
| | | log.Println("放进去的arg:-------", arg1) |
| | | //log.Println("放进去的arg:-------", arg1) |
| | | a.args = append(a.args, arg1) |
| | | a.filterData = append(a.filterData, arg1) |
| | | } |
| | |
| | | } |
| | | func timeRuleResult(rule *protomsg.Rule, am *AreaMap) LittleRuleResult { |
| | | if rule.PolygonId == am.areaId { // 首先规则所对应的区域id要跟区域数据的id对的上 |
| | | if rule.SdkArgAlias == "time" { // 判断是否符合时间规则 |
| | | if rule.SdkArgAlias == "time_rule" { // 判断是否符合时间规则 |
| | | // 根据放值字段里存的时间规则的id去另一个表里查需要比对的时间段(比如当前时间是周三,应根据区域id查出其周三的几个布防时间段,数组) |
| | | //fmt.Println("时间规则的测试") |
| | | now := time.Now() |