From cd9b765f63ffd584b640898f745947f2a8b39365 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 09 十二月 2019 15:55:46 +0800
Subject: [PATCH] ---
---
ruleserver/pushPolygonForTrack.go | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 116 insertions(+), 0 deletions(-)
diff --git a/ruleserver/pushPolygonForTrack.go b/ruleserver/pushPolygonForTrack.go
new file mode 100644
index 0000000..1ddadb5
--- /dev/null
+++ b/ruleserver/pushPolygonForTrack.go
@@ -0,0 +1,116 @@
+package ruleserver
+
+import (
+ "basic.com/pubsub/protomsg.git"
+ "ruleprocess/cache"
+ "basic.com/valib/logger.git"
+ "ruleprocess/structure"
+ "github.com/kirinlabs/HttpRequest"
+ "strconv"
+)
+
+type CameraPolygon struct {
+ CameraId string
+ CameraAddr string
+ Rtsp string
+ Area []Polygon
+}
+type Polygon struct {
+ CameraId string
+ CameraAddr string
+ Polygon []structure.Point
+}
+var camps []CameraPolygon
+
+func Handle () {
+ taskRules := cache.GetCameraTaskRulesAll()
+ for _,taskRule := range taskRules {
+ for _,groupRule := range taskRule.GroupRules {
+ for _,rule := range groupRule.Rules {
+ camp := GetCameraPolygon(rule,groupRule)
+ camps = append(camps,*camp)
+ }
+ }
+ }
+}
+
+func GetCameraPolygon(rule *protomsg.Rule,groupRule *protomsg.GroupRule) *CameraPolygon{
+ if rule.SdkId == "鏍囧畾绠楁硶鐨刬d" {
+ // 寰楀埌鏍囧畾绠楁硶鐨勫尯鍩�
+ cameraPolygon := new(CameraPolygon)
+ polygon := cache.GetPolygonsById(rule.PolygonId)
+ cameraPolygon.CameraId = rule.CameraId
+ camera,err := cache.GetCameraById(rule.CameraId)
+ if err != nil {
+ logger.Error("鏌ヨ鎽勫儚鏈轰俊鎭け璐ワ紒",err)
+ }
+ cameraPolygon.CameraAddr = camera.Addr
+ cameraPolygon.Rtsp = camera.Rtsp
+ if rule.SdkArgAlias == "鍏ㄦ櫙鎽勫儚鏈�" { // 濉炵殑鏄嚜宸辩殑鍖哄煙
+ polygon1 := new(Polygon)
+ polygon1.Polygon = Json2points(polygon.Polygon)
+ polygon1.CameraId = rule.CameraId
+ polygon1.CameraAddr = camera.Addr
+ cameraPolygon.Area = append(cameraPolygon.Area,*polygon1)
+ } else { // 濉炵殑鏄笌涔嬬浉鍏崇殑鍏ㄦ櫙鎽勫儚鏈虹殑鍖哄煙
+ for _,rule := range groupRule.Rules {
+ if rule.SdkArgAlias == "鍏ㄦ櫙鎽勫儚鏈�" {
+ polygon1 := new(Polygon)
+ polygon1.Polygon = Json2points(polygon.Polygon)
+ polygon1.CameraId = rule.CameraId
+ polygon1.CameraAddr = camera.Addr
+ cameraPolygon.Area = append(cameraPolygon.Area,*polygon1)
+ }
+ }
+ }
+ return cameraPolygon
+ } else {
+ return nil
+ }
+}
+
+func Struct2JsonString(camps []CameraPolygon) string{
+ str := "["
+ for index,cam := range camps {
+ str1 := "{\"CameraId\":\""+cam.CameraId+"\",\"CameraAddr\":"+cam.CameraAddr+"\",\"Rtsp\":\""+cam.Rtsp+"\",\"Area\":\"["
+ for j,ar := range cam.Area {
+ str2 := "{\""+ar.CameraId+"\": {\"area\": ["
+ for i,point := range ar.Polygon {
+ str3 := ""
+ if i < len(ar.Polygon) - 1 {
+ str3 = "{\"coordinate\": {\"x\": \""+strconv.FormatFloat(point.X, 'f', -1, 64)+"\",\"y\": \""+strconv.FormatFloat(point.Y, 'f', -1, 64)+"\"}},"
+ } else { // 鏈�鍚庝竴涓粨鏋勪綋涓嶅姞閫楀彿
+ str3 = "{\"coordinate\": {\"x\": \""+strconv.FormatFloat(point.X, 'f', -1, 64)+"\",\"y\": \""+strconv.FormatFloat(point.Y, 'f', -1, 64)+"\"}}"
+ }
+ str2 += str3
+ }
+ if j < len(cam.Area) - 1{
+ str2 += "]}},"
+ } else {
+ str2 += "]}}"
+ }
+ str1 += str2
+ }
+ str += str1
+ if index < len(camps) - 1{
+ str += "]},"
+ } else {
+ str += "]}"
+ }
+ }
+ str += "]"
+ return str
+}
+
+func PushPolygon() string{
+ Handle()
+ param := Struct2JsonString(camps)
+ req := HttpRequest.NewRequest()
+ res,err := req.JSON().Post("http://192.168.20.109:7011/tracking/get_region",param)
+ body,err := res.Body()
+ if err != nil {
+ return "璇锋眰澶辫触"+err.Error()
+ }
+ return string(body)
+}
+
--
Gitblit v1.8.0