public MIDASData(String midasIdentifier, DateTime publicationTime,
                  SiteMeasurements midasData)
 {
     this.midasIdentifier = midasIdentifier;
     this.publicationTime = publicationTime;
     this.midasData       = midasData;
 }
Example #2
0
        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");
            }
        }
Example #3
0
 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 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 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);
        }
Example #9
0
        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);
        }
Example #12
0
 public void addSiteMeasurements(SiteMeasurements siteMeasurements)
 {
     anprData.Add(siteMeasurements);
 }