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; // 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()); } }