Example #1
0
 public FusedSensorOnlyData(String fusedSensorOnlyIdentifier, DateTime publicationTime, DateTime timeDefault,
                            ElaboratedData elaboratedData)
 {
     this.fusedSensorOnlyIdentifier = fusedSensorOnlyIdentifier;
     this.publicationTime           = publicationTime;
     this.timeDefault    = timeDefault;
     this.elaboratedData = elaboratedData;
 }
        private void processSituation(ElaboratedData elaboratedData, DateTime publicationTime, DateTime timeDefault)
        {
            LocationByReference locationByReference = null;
            BasicData           basicData           = elaboratedData.basicData;



            if (basicData.GetType() == typeof(TrafficHeadway))
            {
                TrafficHeadway data = (TrafficHeadway)basicData;
                locationByReference = (LocationByReference)data.pertinentLocation;
            }
            else if (basicData.GetType() == typeof(TrafficFlow))
            {
                TrafficFlow data = (TrafficFlow)basicData;
                locationByReference = (LocationByReference)data.pertinentLocation;
            }
            else if (basicData.GetType() == typeof(TrafficConcentration))
            {
                TrafficConcentration data = (TrafficConcentration)basicData;
                locationByReference = (LocationByReference)data.pertinentLocation;
            }
            else if (basicData.GetType() == typeof(TrafficSpeed))
            {
                TrafficSpeed data = (TrafficSpeed)basicData;
                locationByReference = (LocationByReference)data.pertinentLocation;
            }
            else if (basicData.GetType() == typeof(TravelTimeData))
            {
                TravelTimeData data = (TravelTimeData)basicData;
                locationByReference = (LocationByReference)data.pertinentLocation;
            }
            else
            {
                logWrapper.Warning("basicData instance of -" + basicData.GetType().ToString());
            }

            String linkIdentifier = null;

            if (locationByReference != null)
            {
                linkIdentifier = basicData.GetType().ToString() + locationByReference.predefinedLocationReference.id;

                if (logWrapper.isTrace())
                {
                    logWrapper.Trace("Processing Fused Sensor Only Identifier(" + linkIdentifier + ")");
                }

                FusedSensorOnlyData fusedSensorOnlyData = new FusedSensorOnlyData(linkIdentifier, publicationTime, timeDefault, elaboratedData);
                fusedSensorOnlyDataStore.updateData(fusedSensorOnlyData);
            }
            else
            {
                logWrapper.Error("Failed to Process elaboratedData, " + elaboratedData.ToString());
            }
        }
        private void extractTrafficDataFromElaboratedData(ElaboratedData dataItem)
        {

            // Location is always specified as LocationByReference (referenced to a
            // single Network Link)
            LocationByReference location = (LocationByReference) dataItem.basicData.pertinentLocation;
            log.Info("Data for Network Link: " + location.predefinedLocationReference.id);

            BasicData basicData = dataItem.basicData;

            // Determine what class (type) of traffic data is contained in the basic
            // data
            if (basicData.GetType() == typeof(TrafficSpeed))
            {

                TrafficSpeed speed = (TrafficSpeed) basicData;
                log.Info("Average Speed: " + speed.averageVehicleSpeed.speed);

            }
            else if (basicData.GetType() == typeof(TravelTimeData))
            {

                TravelTimeData travelTimeData = (TravelTimeData) basicData;
                log.Info("Travel Time: " + travelTimeData.travelTime.duration);
                log.Info("Free Flow Travel Time: " + travelTimeData.freeFlowTravelTime.duration);
                log.Info("Normally Expected Travel Time: " + travelTimeData.normallyExpectedTravelTime.duration);

            }
            else if (basicData.GetType() == typeof(TrafficFlow))
            {

                TrafficFlow flow = (TrafficFlow) basicData;
                log.Info("Traffic Flow: " + flow.vehicleFlow.vehicleFlowRate);

            }
            else if (basicData.GetType() == typeof(TrafficConcentration))
            {

                TrafficConcentration concentration = (TrafficConcentration) basicData;
                log.Info("Occupancy (%age): " + concentration.occupancy.percentage);

            }
            else if (basicData.GetType() == typeof(TrafficHeadway))
            {

                TrafficHeadway headway = (TrafficHeadway) basicData;
                log.Info("Headway: " + headway.averageTimeHeadway.duration);

            }
            else
            {
                log.Error("Unexpected traffic data type contained in publication: " + dataItem.GetType().ToString());
            }
    
        }
        private void extractTrafficDataFromElaboratedData(ElaboratedData dataItem)
        {

            // Location is always specified as LocationByReference (referenced to a
            // single Network Link)
            LocationByReference location = (LocationByReference) dataItem.basicData.pertinentLocation;
            log.Info("Data for Network Link: " + location.predefinedLocationReference.id);
        
            BasicData basicData = dataItem.basicData;

            // Determine what class (type) of traffic data is contained in the basic data
            if (basicData.GetType() == typeof (TrafficSpeed))
            {

                TrafficSpeed speed = (TrafficSpeed)basicData;
            
                // There are 2 types of speed data - current and forecast, determined by 
                // whether a measurementOrCalculationTime element exists in the data item.
                if (speed.measurementOrCalculationTime == null)
                {
                    log.Info("Fused Average Speed: " + speed.averageVehicleSpeed.speed);
                    log.Info("FVD-Only Average Speed: " + speed.trafficSpeedExtension.speedFvdOnly.speed);
                } else
                {
                    log.Info("Fused Average Speed (forecast for " + speed.measurementOrCalculationTime.ToString() + "): " + speed.averageVehicleSpeed.speed);
                }
            
            }
            else if (basicData.GetType() == typeof (TravelTimeData))
            {

                TravelTimeData travelTimeData = (TravelTimeData)basicData;

                // There are 2 types of travel time data - current and forecast,
                // determined by whether a measurementOrCalculationTime element
                // exists in the data item.
                if (travelTimeData.measurementOrCalculationTime == null)
                {
                    log.Info("Travel Time: " + travelTimeData.travelTime.duration);
                    log.Info("Free Flow Travel Time: " + travelTimeData.freeFlowTravelTime.duration);
                    log.Info("Normally Expected Travel Time: " + travelTimeData.normallyExpectedTravelTime.duration);
                } else
                {
                    log.Info("Travel Time (forecast for " + travelTimeData.measurementOrCalculationTime.ToString() + "): " + travelTimeData.travelTime.duration);
                }

            }
            else
            {
                log.Error("Unexpected traffic data type contained in publication: " + dataItem.GetType().ToString());
            }

        }
        private void extractTrafficDataFromElaboratedData(ElaboratedData dataItem)
        {
            // Location is always specified as LocationByReference (referenced to a
            // single Network Link)
            LocationByReference location = (LocationByReference)dataItem.basicData.pertinentLocation;

            log.Info("Data for Network Link: " + location.predefinedLocationReference.id);

            BasicData basicData = dataItem.basicData;

            // Determine what class (type) of traffic data is contained in the basic data
            if (basicData.GetType() == typeof(TrafficSpeed))
            {
                TrafficSpeed speed = (TrafficSpeed)basicData;

                // There are 2 types of speed data - current and forecast, determined by
                // whether a measurementOrCalculationTime element exists in the data item.
                if (speed.measurementOrCalculationTime == null)
                {
                    log.Info("Fused Average Speed: " + speed.averageVehicleSpeed.speed);
                    log.Info("FVD-Only Average Speed: " + speed.trafficSpeedExtension.speedFvdOnly.speed);
                }
                else
                {
                    log.Info("Fused Average Speed (forecast for " + speed.measurementOrCalculationTime.ToString() + "): " + speed.averageVehicleSpeed.speed);
                }
            }
            else if (basicData.GetType() == typeof(TravelTimeData))
            {
                TravelTimeData travelTimeData = (TravelTimeData)basicData;

                // There are 2 types of travel time data - current and forecast,
                // determined by whether a measurementOrCalculationTime element
                // exists in the data item.
                if (travelTimeData.measurementOrCalculationTime == null)
                {
                    log.Info("Travel Time: " + travelTimeData.travelTime.duration);
                    log.Info("Free Flow Travel Time: " + travelTimeData.freeFlowTravelTime.duration);
                    log.Info("Normally Expected Travel Time: " + travelTimeData.normallyExpectedTravelTime.duration);
                }
                else
                {
                    log.Info("Travel Time (forecast for " + travelTimeData.measurementOrCalculationTime.ToString() + "): " + travelTimeData.travelTime.duration);
                }
            }
            else
            {
                log.Error("Unexpected traffic data type contained in publication: " + dataItem.GetType().ToString());
            }
        }
        private void extractTrafficDataFromElaboratedData(ElaboratedData dataItem)
        {
            // Location is always specified as LocationByReference (referenced to a
            // single Network Link)
            LocationByReference location = (LocationByReference)dataItem.basicData.pertinentLocation;

            log.Info("Data for Network Link: " + location.predefinedLocationReference.id);

            BasicData basicData = dataItem.basicData;

            // Determine what class (type) of traffic data is contained in the basic
            // data
            if (basicData.GetType() == typeof(TrafficSpeed))
            {
                TrafficSpeed speed = (TrafficSpeed)basicData;
                log.Info("Average Speed: " + speed.averageVehicleSpeed.speed);
            }
            else if (basicData.GetType() == typeof(TravelTimeData))
            {
                TravelTimeData travelTimeData = (TravelTimeData)basicData;
                log.Info("Travel Time: " + travelTimeData.travelTime.duration);
                log.Info("Free Flow Travel Time: " + travelTimeData.freeFlowTravelTime.duration);
                log.Info("Normally Expected Travel Time: " + travelTimeData.normallyExpectedTravelTime.duration);
            }
            else if (basicData.GetType() == typeof(TrafficFlow))
            {
                TrafficFlow flow = (TrafficFlow)basicData;
                log.Info("Traffic Flow: " + flow.vehicleFlow.vehicleFlowRate);
            }
            else if (basicData.GetType() == typeof(TrafficConcentration))
            {
                TrafficConcentration concentration = (TrafficConcentration)basicData;
                log.Info("Occupancy (%age): " + concentration.occupancy.percentage);
            }
            else if (basicData.GetType() == typeof(TrafficHeadway))
            {
                TrafficHeadway headway = (TrafficHeadway)basicData;
                log.Info("Headway: " + headway.averageTimeHeadway.duration);
            }
            else
            {
                log.Error("Unexpected traffic data type contained in publication: " + dataItem.GetType().ToString());
            }
        }