public MIDASData(String midasIdentifier, DateTime publicationTime, SiteMeasurements midasData) { this.midasIdentifier = midasIdentifier; this.publicationTime = publicationTime; this.midasData = midasData; }
public override void processMessage(D2LogicalModel d2LogicalModel) { if (logWrapper.isDebug()) { logWrapper.Debug("ANPR Update"); } MeasuredDataPublication measuredDataPublication = (MeasuredDataPublication)d2LogicalModel.payloadPublication; if (measuredDataPublication != null) { DateTime publicationTime = measuredDataPublication.publicationTime; SiteMeasurements[] siteMeasurementsList = measuredDataPublication.siteMeasurements; if (logWrapper.isDebug()) { logWrapper.Debug("ANPR Update(" + siteMeasurementsList.Length + " objects)"); } for (int siteMeasurementsListPos = 0; siteMeasurementsListPos < siteMeasurementsList.Length; siteMeasurementsListPos++) { SiteMeasurements siteMeasurements = siteMeasurementsList[siteMeasurementsListPos]; processSituation(siteMeasurements, publicationTime); } } if (logWrapper.isDebug()) { logWrapper.Debug("ANPR Update Complete"); } }
public ModelUpdateNotificationData(String anprIdentifier, DateTime publicationTime, SiteMeasurements anprData) { this.anprIdentifier = anprIdentifier; this.publicationTime = publicationTime; this.anprData = anprData; }
private void extractTrafficDataFromSiteMeasurements(SiteMeasurements measurementsForSite) { String siteGUID = measurementsForSite.measurementSiteReference.id; log.Info("TMU site ID: " + siteGUID); log.Info("Number of measurements for TMU site: " + measurementsForSite.measuredValue.Length); // There can be a number of measured values reported for the site foreach (_SiteMeasurementsIndexMeasuredValue measuredValue in measurementsForSite.measuredValue) { MeasuredValue mv = measuredValue.measuredValue; BasicData basicData = mv.basicData; // The index number of the site measurement is important - as this // relates the data // to the NTIS reference model, which adds context to the value // (e.g. lane information, // or vehicle characteristics) int index = measuredValue.index; // Determine what class (type) of traffic data is contained in the // basic data if (basicData.GetType() == typeof(TrafficFlow)) { TrafficFlow flow = (TrafficFlow)basicData; log.Info("[Measurement Index : " + index + "] Vehicle Flow Rate: " + flow.vehicleFlow.vehicleFlowRate); if (flow.vehicleFlow.dataError) { MultilingualStringValue[] errorReason = flow.vehicleFlow.reasonForDataError.values; foreach (MultilingualStringValue value in errorReason) { log.Info(" Data in error. Reason: \"" + value.Value + "\""); } } } else if (basicData.GetType() == typeof(TrafficSpeed)) { TrafficSpeed speed = (TrafficSpeed)basicData; log.Info("[Measurement Index : " + index + "] Average Speed: " + speed.averageVehicleSpeed.speed); } else if (basicData.GetType() == typeof(TrafficHeadway)) { TrafficHeadway headway = (TrafficHeadway)basicData; log.Info("[Measurement Index : " + index + "] Average Headway: " + headway.averageTimeHeadway.duration); } else if (basicData.GetType() == typeof(TrafficConcentration)) { TrafficConcentration concentration = (TrafficConcentration)basicData; log.Info("[Measurement Index : " + index + "] Traffic Occupancy (%): " + concentration.occupancy.percentage); } else { log.Error("Unexpected traffic data type contained in publication: " + basicData.GetType().Name.ToString()); } } }
private void extractTravelTimesFromSiteMeasurements(SiteMeasurements siteMeasurements) { String anprRouteId = siteMeasurements.measurementSiteReference.id; // Should only be one travel time value per SiteMeasurements // element (index=0) MeasuredValue value = siteMeasurements.measuredValue[0].measuredValue; if (value.basicData.GetType() == typeof(TravelTimeData)) { TravelTimeData ttData = (TravelTimeData)value.basicData; log.Info("Travel Time for ANPR Route " + anprRouteId + " : " + ttData.travelTime.duration + "s"); } }
private void extractTrafficDataFromSiteMeasurements(SiteMeasurements measurementsForSite) { String siteGUID = measurementsForSite.measurementSiteReference.id; log.Info("TMU site ID: " + siteGUID); log.Info("Number of measurements for TMU site: " + measurementsForSite.measuredValue.Length); // There can be a number of measured values reported for the site foreach (_SiteMeasurementsIndexMeasuredValue measuredValue in measurementsForSite.measuredValue) { MeasuredValue mv = measuredValue.measuredValue; BasicData basicData = mv.basicData; // The index number of the site measurement is important - as this // relates the data // to the NTIS reference model, which adds context to the value // (e.g. lane information, // or vehicle characteristics) int index = measuredValue.index; // Determine what class (type) of traffic data is contained in the // basic data if (basicData.GetType() == typeof(TrafficFlow)) { TrafficFlow flow = (TrafficFlow) basicData; log.Info("[Measurement Index : " + index + "] Vehicle Flow Rate: " + flow.vehicleFlow.vehicleFlowRate); if (flow.vehicleFlow.dataError) { MultilingualStringValue[] errorReason = flow.vehicleFlow.reasonForDataError.values; foreach (MultilingualStringValue value in errorReason) { log.Info(" Data in error. Reason: \"" + value.Value + "\""); } } } else if (basicData.GetType() == typeof(TrafficSpeed)) { TrafficSpeed speed = (TrafficSpeed) basicData; log.Info("[Measurement Index : " + index + "] Average Speed: " + speed.averageVehicleSpeed.speed); } else if (basicData.GetType() == typeof(TrafficHeadway)) { TrafficHeadway headway = (TrafficHeadway) basicData; log.Info("[Measurement Index : " + index + "] Average Headway: " + headway.averageTimeHeadway.duration); } else if (basicData.GetType() == typeof(TrafficConcentration)) { TrafficConcentration concentration = (TrafficConcentration) basicData; log.Info("[Measurement Index : " + index + "] Traffic Occupancy (%): " + concentration.occupancy.percentage); } else { log.Error("Unexpected traffic data type contained in publication: " + basicData.GetType().Name.ToString()); } } }
private void processSituation(SiteMeasurements siteMeasurements, DateTime publicationTime) { String midasIdentifier = siteMeasurements.measurementSiteReference.id; if (logWrapper.isTrace()) { logWrapper.Trace("Processing MIDAS Identifier(" + midasIdentifier + ")"); } MIDASData midasData = new MIDASData(midasIdentifier, publicationTime, siteMeasurements); midasDataStore.updateData(midasData); }
private void processSituation(SiteMeasurements siteMeasurements, DateTime publicationTime) { String anprIdentifier = siteMeasurements.measurementSiteReference.id; if (logWrapper.isDebug()) { logWrapper.Debug("Processing ANPR Identifier(" + anprIdentifier + ")"); } ANPRData anprData = (ANPRData)anprDataStore.getData(anprIdentifier); if (anprData == null) { anprData = anprData = new ANPRData(anprIdentifier, publicationTime); } anprData.addSiteMeasurements(siteMeasurements); anprDataStore.updateData(anprData); }
public override void processMessage(D2LogicalModel d2LogicalModel) { if (logWrapper.isInfo()) { logWrapper.Info("TMU Update"); } MeasuredDataPublication measuredDataPublication = (MeasuredDataPublication)d2LogicalModel.payloadPublication; if (measuredDataPublication != null) { DateTime publicationTime = measuredDataPublication.publicationTime; SiteMeasurements[] siteMeasurementsList = measuredDataPublication.siteMeasurements; if (logWrapper.isDebug()) { logWrapper.Debug("TMU Update(" + siteMeasurementsList.Length + " objects)"); } Dictionary <String, LinkedList <SiteMeasurements> > siteMeasurementsIndex = new Dictionary <String, LinkedList <SiteMeasurements> >(); for (int siteMeasurementsListPos = 0; siteMeasurementsListPos < siteMeasurementsList.Length; siteMeasurementsListPos++) { SiteMeasurements siteMeasurements = siteMeasurementsList[siteMeasurementsListPos]; processSituation(siteMeasurements, publicationTime, siteMeasurementsIndex); } foreach (String tmuIdentifier in siteMeasurementsIndex.Keys) { TMUData tmuData = new TMUData(tmuIdentifier, publicationTime, siteMeasurementsIndex[tmuIdentifier]); tmuDataStore.updateData(tmuData); } } if (logWrapper.isDebug()) { logWrapper.Debug("TMU Update Complete"); } }
private void processSituation(SiteMeasurements siteMeasurements, DateTime publicationTime, Dictionary <String, LinkedList <SiteMeasurements> > siteMeasurementsIndex) { String tmuIdentifier = siteMeasurements.measurementSiteReference.id; if (logWrapper.isDebug()) { logWrapper.Debug("Processing TMU Identifier(" + tmuIdentifier + ")"); } LinkedList <SiteMeasurements> siteMeasurementsList; if (siteMeasurementsIndex.ContainsKey(tmuIdentifier)) { siteMeasurementsList = siteMeasurementsIndex[tmuIdentifier]; } else { siteMeasurementsList = new LinkedList <SiteMeasurements>(); siteMeasurementsIndex.Add(tmuIdentifier, siteMeasurementsList); } siteMeasurementsList.AddLast(siteMeasurements); }
public void addSiteMeasurements(SiteMeasurements siteMeasurements) { anprData.Add(siteMeasurements); }