示例#1
0
        /// <summary>
        /// 接收到流量数据事件函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FlowReceivedHandler(object sender, WebSocketReceivedEventArges e)
        {
            string json = Encoding.UTF8.GetString(e.Packet.ToArray());

            if (_clients.TryGetValue(e.Uri.Authority, out Item item))
            {
                try
                {
                    var v = JsonConvert.DeserializeObject <FlowAdapterData>(json);
                    foreach (LaneAdapterData laneData in v.Data)
                    {
                        LaneFlow laneFlow = new LaneFlow
                        {
                            DataId           = $"{laneData.ChannelId}_{laneData.LaneId}",
                            DateTime         = laneData.DateTime,
                            Bikes            = laneData.Bikes,
                            Tricycles        = laneData.Tricycles,
                            Persons          = laneData.Persons,
                            Cars             = laneData.Cars,
                            Motorcycles      = laneData.Motorcycles,
                            Buss             = laneData.Buss,
                            Trucks           = laneData.Trucks,
                            Vans             = laneData.Vans,
                            AverageSpeedData = laneData.AverageSpeed,
                            HeadDistance     = laneData.HeadDistance,
                            TimeOccupancy    = laneData.TimeOccupancy,
                            Occupancy        = laneData.Occupancy,
                            TrafficStatus    = laneData.TrafficStatus,
                            Count            = 1
                        };
                        item.FlowSuccess += 1;
                        _flowBranchBlock.Post(laneFlow);
                    }
                }
                catch (Exception ex)
                {
                    item.FlowFailed += 1;
                    _logger.LogError((int)LogEvent.数据适配, ex, "流量数据解析异常");
                }
            }
            else
            {
                _logger.LogWarning((int)LogEvent.数据适配, $"未知的数据项 {e.Uri.Authority}");
            }
        }
示例#2
0
        /// <summary>
        /// 接收数据处理函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ReceiveHandler(object sender, WebSocketReceivedEventArges e)
        {
            string json = Encoding.UTF8.GetString(e.Packet.ToArray());

            if (_clients.TryGetValue(e.Uri.Authority, out Item item))
            {
                try
                {
                    var v = JsonConvert.DeserializeObject <DensityAdapterData>(json);
                    if (v.type == "car_count")
                    {
                        _densityBranchBlock.Post(new TrafficDensity
                        {
                            MatchId  = $"{e.Uri.Host}_{v.data.channel_id}_{v.data.region_id}",
                            DateTime =
                                DateTime.ParseExact(v.data.record_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture),
                            Value = v.data.count
                        });
                        item.DensitySuccess += 1;
                    }
                    else if (v.type == "crowd_data")
                    {
                        _eventBranchBlock.Post(new TrafficEvent
                        {
                            MatchId  = $"{e.Uri.Host}_{v.data.channel_id}_{v.data.region_id}",
                            DateTime = DateTime.ParseExact(v.data.record_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture)
                        });
                        item.EventSuccess += 1;
                    }
                }
                catch (Exception ex)
                {
                    item.Failed += 1;
                    _logger.LogError((int)LogEvent.数据适配, ex, "密度数据解析异常");
                }
            }
            else
            {
                _logger.LogWarning((int)LogEvent.数据适配, $"未知的数据项 {e.Uri.Authority}");
            }
        }
示例#3
0
        /// <summary>
        /// 接收到视频结构化数据事件函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void VideoReceivedHandler(object sender, WebSocketReceivedEventArges e)
        {
            string json = Encoding.UTF8.GetString(e.Packet.ToArray());

            if (_clients.TryGetValue(e.Uri.Authority, out Item item))
            {
                try
                {
                    var data = JsonConvert.DeserializeObject <VideoStructAdapterData>(json);
                    if (data.VideoStructType == VideoStructType.机动车)
                    {
                        VideoVehicle videoVehicle = new VideoVehicle
                        {
                            DataId     = $"{data.ChannelId}_{ data.LaneId}",
                            DateTime   = data.DateTime,
                            Image      = string.IsNullOrEmpty(data.Image) ? string.Empty : data.Image,
                            Feature    = string.IsNullOrEmpty(data.Feature) ? string.Empty : data.Feature,
                            CountIndex = data.CountIndex,
                            CarBrand   = string.IsNullOrEmpty(data.CarBrand) ? string.Empty : data.CarBrand,
                            //为避免出现0
                            CarType     = data.CarType + 1,
                            CarColor    = data.CarColor,
                            PlateType   = data.PlateType,
                            PlateNumber = string.IsNullOrEmpty(data.PlateNumber) ? string.Empty : data.PlateNumber
                        };
                        item.VideoSuccess += 1;
                        _videoBranchBlock.Post(videoVehicle);
                    }
                    else if (data.VideoStructType == VideoStructType.非机动车)
                    {
                        VideoBike videoBike = new VideoBike
                        {
                            DataId     = $"{data.ChannelId}_{ data.LaneId}",
                            DateTime   = data.DateTime,
                            Image      = data.Image,
                            Feature    = data.Feature,
                            CountIndex = data.CountIndex,
                            BikeType   = data.BikeType
                        };
                        item.VideoSuccess += 1;
                        _videoBranchBlock.Post(videoBike);
                    }
                    else if (data.VideoStructType == VideoStructType.行人)
                    {
                        VideoPedestrain videoPedestrain = new VideoPedestrain
                        {
                            DataId     = $"{data.ChannelId}_{ data.LaneId}",
                            DateTime   = data.DateTime,
                            Image      = data.Image,
                            Feature    = data.Feature,
                            CountIndex = data.CountIndex,
                            Age        = data.Age,
                            Sex        = data.Sex,
                            UpperColor = data.UpperColor
                        };
                        item.VideoSuccess += 1;
                        _videoBranchBlock.Post(videoPedestrain);
                    }
                }
                catch (Exception ex)
                {
                    item.VideoFailed += 1;
                    _logger.LogError((int)LogEvent.数据适配, ex, "视频结构化数据解析异常");
                }
            }
            else
            {
                _logger.LogWarning((int)LogEvent.数据适配, $"未知的数据项 {e.Uri.Authority}");
            }
        }