示例#1
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            TrafficSpeed TrafficSpeed = db.TrafficSpeeds.Single(r => r.TrafficSpeedID == id);

            db.TrafficSpeeds.DeleteOnSubmit(TrafficSpeed);
            db.SubmitChanges();
            return(RedirectToAction("Index"));
        }
        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(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());
            }
        }
示例#4
0
        //
        // GET: /AdminArea/Freeways/Edit/5

        public ActionResult Edit(Guid id)
        {
            TrafficSpeed TrafficSpeed = db.TrafficSpeeds.Single(r => r.TrafficSpeedID == id);

            if (TrafficSpeed == null)
            {
                return(HttpNotFound());
            }
            return(View(TrafficSpeed));
        }
        private void UpdateTrafficChart()
        {
            long maxSpeedValue = 0;

            rawInboundPoints.Clear();
            rawOutboundPoints.Clear();
            kcpInboundPoints.Clear();
            kcpOutboundPoints.Clear();
            foreach (TrafficLog item in controller.trafficLogList)
            {
                rawInboundPoints.Add(item.rawSpeed.inbound);
                rawOutboundPoints.Add(item.rawSpeed.outbound);
                kcpInboundPoints.Add(item.kcpSpeed.inbound);
                kcpOutboundPoints.Add(item.kcpSpeed.outbound);

                maxSpeedValue = Math.Max(maxSpeedValue,
                                         Math.Max(
                                             Math.Max(item.rawSpeed.inbound, item.rawSpeed.outbound),
                                             Math.Max(item.kcpSpeed.inbound, item.kcpSpeed.outbound)
                                             )
                                         );
            }

            TrafficSpeed maxSpeed = new TrafficSpeed(maxSpeedValue);
            TrafficLog   last     = controller.trafficLogList.Last.Value;

            SpeedStatusLabel.Text             = SpeedStatusLabel.ToolTipText
                                              = string.Format(I18N.GetString("Raw: [In {0}, Out {1}], KCP: [In {2}, Out {3}]"),
                                                              new TrafficSpeed(last.rawSpeed.inbound),
                                                              new TrafficSpeed(last.rawSpeed.outbound),
                                                              new TrafficSpeed(last.kcpSpeed.inbound),
                                                              new TrafficSpeed(last.kcpSpeed.outbound));

            for (int i = 0; i < rawInboundPoints.Count; i++)
            {
                rawInboundPoints[i]  /= maxSpeed.scale;
                rawOutboundPoints[i] /= maxSpeed.scale;
                kcpInboundPoints[i]  /= maxSpeed.scale;
                kcpOutboundPoints[i] /= maxSpeed.scale;
            }

            TrafficChart.Series[0].Points.DataBindY(rawInboundPoints);
            TrafficChart.Series[1].Points.DataBindY(rawOutboundPoints);
            TrafficChart.Series[2].Points.DataBindY(kcpInboundPoints);
            TrafficChart.Series[3].Points.DataBindY(kcpOutboundPoints);
            TrafficChart.Series[0].ToolTip = "#SERIESNAME #VALY{F2} " + maxSpeed.unit;
            TrafficChart.Series[1].ToolTip = "#SERIESNAME #VALY{F2} " + maxSpeed.unit;
            TrafficChart.Series[2].ToolTip = "#SERIESNAME #VALY{F2} " + maxSpeed.unit;
            TrafficChart.Series[3].ToolTip = "#SERIESNAME #VALY{F2} " + maxSpeed.unit;
            TrafficChart.ChartAreas[0].AxisY.LabelStyle.Format = "{0:0.##} " + maxSpeed.unit;
        }
        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());
            }
        }
示例#7
0
        public ActionResult Create(TrafficSpeed TrafficSpeed)
        {
            if (ModelState.IsValid)
            {
                if (!db.TrafficSpeeds.Any(p => p.TrafficSpeed1 == TrafficSpeed.TrafficSpeed1))
                {
                    //if TrafficSpeed does not exist yet
                    TrafficSpeed.TrafficSpeedID = Guid.NewGuid();
                    db.TrafficSpeeds.InsertOnSubmit(TrafficSpeed);
                    db.SubmitChanges();
                }

                return(RedirectToAction("Index"));
            }

            return(View(TrafficSpeed));
        }
        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());
            }
        }
示例#9
0
        public ActionResult Edit(TrafficSpeed TrafficSpeed)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.TrafficSpeeds.Attach(TrafficSpeed);
                    db.Refresh(RefreshMode.KeepCurrentValues, TrafficSpeed);
                    db.SubmitChanges();

                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }

            return(View(TrafficSpeed));
        }