public SemanticDetailWindowViewModel(SemanticLink link, TripDirection direction) { this.SemanticLink = link; this.TripDirection = direction; Initialize(); }
public DetailTripDetailPageViewModel(SemanticLink link, TripDirection direction, InvokeScript script) { this.SemanticLink = link; this.TripDirection = direction; this.invokeScript = script; Initialize(); }
public DetailHeatMapPageViewModel(SemanticLink semanticLink, TripDirection direction, List<Driver> drivers, List<Car> cars, List<Sensor> sensors) { this.semantciLink = semanticLink; this.direction = direction; this.drivers = drivers; this.cars = cars; this.sensors = sensors; this.ProgressBarVisibility = System.Windows.Visibility.Visible; createPlotModel(); }
private void showCompareDialog(SemanticLink semanticLink) { var dialog = new MainPageCompareDialog { Message = { Text = semanticLink.Semantics }, TripDirection = this.TripDirection, SelectedSemanticLinks = this.SelectedSemanticLinks.ToList(), SemanticLink = semanticLink, ViewModel = this }; DialogHost.Show(dialog, "RootDialog"); }
private void showDetailDialog(SemanticLink semanticLink) { var dialog = new MainPageShowDetailDialog { Message = { Text = semanticLink.Semantics }, TripDirection = this.TripDirection, SemanticLink = semanticLink, ViewModel = this }; DialogHost.Show(dialog, "RootDialog"); }
public static SemanticHistogramDatum GetTimeInstance(SemanticLink semanticLink, TripDirection direction) { SemanticHistogramDatum datum = new SemanticHistogramDatum(); datum.SemanticLink = semanticLink; datum.Direction = direction; DataTable table = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeHistogramOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')"); datum.HistogramData = new List<LevelAndValue>(); foreach (DataRow row in table.Rows) { datum.HistogramData.Add(new LevelAndValue() { Level = row.Field<int>("Level"), Value = row.Field<int>("Number") }); } datum.MaxLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMaxOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Max")) .ElementAt(0); datum.MinLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMinOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Min")) .ElementAt(0); datum.MedianLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMedianOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Median")) .ElementAt(0); datum.AvgLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeAvgOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Avg")) .ElementAt(0); datum.ModeLevel = datum.HistogramData.First(v => v.Value.Equals(datum.HistogramData.Select(m => m.Value).Max())).Level; datum.HistogramData.Max(x => x.Level); datum.ClassWidth = (int) ( (datum.MaxLevel - datum.MinLevel) / 10 ); datum.UnderModeData = datum.HistogramData .Where(v => v.Value <= datum.HistogramData.Max(x => x.Value) * 0.75) .Where(v => v.Level < datum.ModeLevel) .ToList(); datum.ModeData = datum.HistogramData .Where(v => v.Value >= datum.HistogramData.Max(x => x.Value) * 0.75) .ToList(); datum.UpperModeData = datum.HistogramData .Where(v => v.Value <= datum.HistogramData.Max(x => x.Value) * 0.75) .Where(v => v.Level > datum.ModeLevel) .ToList(); datum.DistUnderMode = datum.UnderModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.DistMode = datum.ModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.DistUpperMode = datum.UpperModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.CompMinMax = datum.MaxLevel * 100 / datum.MinLevel; datum.CompMinMode = datum.ModeLevel * 100 / datum.MinLevel; datum.CompModeMax = datum.MaxLevel * 100 / datum.ModeLevel; return datum; }
public static int GetTimeMinTripID(SemanticLink semanticLink, TripDirection direction) { return DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMinOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("TripID")) .ElementAt(0); }
public static SemanticHistogramDatum GetEnergyInstance(SemanticLink semanticLink, TripDirection direction, int sensorID) { SemanticHistogramDatum datum = new SemanticHistogramDatum(); datum.SemanticLink = semanticLink; datum.Direction = direction; string query = "WITH SelectedSemanticLink "; query += "AS ( "; query += " SELECT * "; query += " FROM SEMANTIC_LINKS "; query += " WHERE SEMANTIC_LINK_ID = " + semanticLink.SemanticLinkId; query += " ) "; query += " ,ExtractedTrips "; query += "AS ( "; query += " SELECT Sensor" + sensorID + ".TRIP_ID "; query += " FROM TRIPS Sensor12 "; query += " INNER JOIN TRIPS Sensor24 ON DATEPART(YEAR, Sensor12.START_TIME) = DATEPART(YEAR, Sensor24.START_TIME) "; query += " AND DATEPART(MONTH, Sensor12.START_TIME) = DATEPART(MONTH, Sensor24.START_TIME) "; query += " AND DATEPART(DAYOFYEAR, Sensor12.START_TIME) = DATEPART(DAYOFYEAR, Sensor24.START_TIME) "; query += " AND DATEPART(HOUR, Sensor12.START_TIME) = DATEPART(HOUR, Sensor24.START_TIME) "; query += " AND DATEPART(MINUTE, Sensor12.START_TIME) = DATEPART(MINUTE, Sensor24.START_TIME) "; query += " WHERE Sensor12.SENSOR_ID = 12 "; query += " AND Sensor24.SENSOR_ID = 24 "; query += " ) "; query += " ,ExtractedEcolog "; query += "AS ( "; query += " SELECT ECOLOG.TRIP_ID "; query += " ,SUM(LOST_ENERGY) AS SumLostEnergy "; query += " FROM ECOLOG "; query += " INNER JOIN ExtractedTrips ON ECOLOG.TRIP_ID = ExtractedTrips.TRIP_ID "; query += " INNER JOIN SelectedSemanticLink ON ECOLOG.LINK_ID = SelectedSemanticLink.LINK_ID "; query += " WHERE ECOLOG.DRIVER_ID = 1 "; query += " AND TRIP_DIRECTION = '" + direction.Direction + "' "; query += " AND (SENSOR_ID = " + sensorID + ") "; query += " GROUP BY ECOLOG.TRIP_ID "; query += " ) "; /* query += " ,NormalizedEcolog "; query += "AS ( "; query += " SELECT SumLostEnergy "; query += " FROM ExtractedEcolog "; query += " WHERE SumLostEnergy <= Q3 + 1.5 * (Q3 - Q1) "; query += " AND SumLostEnergy >= Q1 - 1.5 * (Q3 - Q1) "; query += " ) "; query += " ,NormalizedEcologClassWidth "; query += "AS ( "; query += " SELECT (MAX(SumLostEnergy) - MIN(SumLostEnergy)) / 10 AS ClassWidth "; query += " FROM NormalizedEcolog "; query += " ) "; */ query += "SELECT TOP 100 CEILING(SumLostEnergy / 0.003564219668623985) * 0.003564219668623985 AS LEVEL "; query += " ,COUNT(*) AS Number "; query += "FROM ExtractedEcolog "; // query += " ,NormalizedEcologClassWidth "; query += "GROUP BY CEILING(SumLostEnergy / 0.003564219668623985) * 0.003564219668623985 "; query += "ORDER BY CEILING(SumLostEnergy / 0.003564219668623985) * 0.003564219668623985 "; DataTable table = DatabaseAccesserEcolog.GetResult(query); datum.HistogramData = new List<LevelAndValue>(); foreach (DataRow row in table.Rows) { datum.HistogramData.Add(new LevelAndValue() { Level = row.Field<double>("Level"), Value = row.Field<int>("Number") }); } /* query = null; query = "WITH SelectedSemanticLink "; query += "AS ( "; query += " SELECT * "; query += " FROM SEMANTIC_LINKS "; query += " WHERE SEMANTIC_LINK_ID = " + semanticLink.SemanticLinkId; query += " ) "; query += " ,ExtractedTrips "; query += "AS ( "; query += " SELECT Sensor" + sensorID + ".TRIP_ID "; query += " FROM TRIPS Sensor12 "; query += " INNER JOIN TRIPS Sensor24 ON DATEPART(YEAR, Sensor12.START_TIME) = DATEPART(YEAR, Sensor24.START_TIME) "; query += " AND DATEPART(MONTH, Sensor12.START_TIME) = DATEPART(MONTH, Sensor24.START_TIME) "; query += " AND DATEPART(DAYOFYEAR, Sensor12.START_TIME) = DATEPART(DAYOFYEAR, Sensor24.START_TIME) "; query += " AND DATEPART(HOUR, Sensor12.START_TIME) = DATEPART(HOUR, Sensor24.START_TIME) "; query += " AND DATEPART(MINUTE, Sensor12.START_TIME) = DATEPART(MINUTE, Sensor24.START_TIME) "; query += " WHERE Sensor12.SENSOR_ID = 12 "; query += " AND Sensor24.SENSOR_ID = 24 "; query += " ) "; query += " ,ExtractedEcolog "; query += "AS ( "; query += " SELECT ECOLOG.TRIP_ID "; query += " ,SUM(LOST_ENERGY) AS SumLostEnergy "; query += " ,PERCENTILE_DISC(0.25) WITHIN "; query += " GROUP ( "; query += " ORDER BY SUM(LOST_ENERGY) "; query += " ) OVER (PARTITION BY NULL) AS Q1 "; query += " ,PERCENTILE_DISC(0.75) WITHIN "; query += " GROUP ( "; query += " ORDER BY SUM(LOST_ENERGY) "; query += " ) OVER (PARTITION BY NULL) AS Q3 "; query += " FROM ECOLOG "; query += " INNER JOIN ExtractedTrips ON ECOLOG.TRIP_ID = ExtractedTrips.TRIP_ID "; query += " INNER JOIN SelectedSemanticLink ON ECOLOG.LINK_ID = SelectedSemanticLink.LINK_ID "; query += " WHERE ECOLOG.DRIVER_ID = 1 "; query += " AND TRIP_DIRECTION = '" + direction.Direction + "' "; query += " AND SENSOR_ID = " + sensorID; query += " GROUP BY ECOLOG.TRIP_ID "; query += " ) "; query += "SELECT TRIP_ID AS TripID "; query += " ,SumLostEnergy AS Min "; query += "FROM ExtractedEcolog "; query += "WHERE SumLostEnergy = ( "; query += " SELECT MIN(SumLostEnergy) AS Min "; query += " FROM ExtractedEcolog "; query += " WHERE SumLostEnergy >= Q1 - 1.5 * (Q3 - Q1) "; query += " ) "; datum.MinLevel = DatabaseAccesserEcolog.GetResult(query) .AsEnumerable() .Select(x => x.Field<double>("Min")) .ElementAt(0); query = null; query = "WITH SelectedSemanticLink "; query += "AS ( "; query += " SELECT * "; query += " FROM SEMANTIC_LINKS "; query += " WHERE SEMANTIC_LINK_ID = " + semanticLink.SemanticLinkId; query += " ) "; query += " ,ExtractedTrips "; query += "AS ( "; query += " SELECT Sensor" + sensorID + ".TRIP_ID "; query += " FROM TRIPS Sensor12 "; query += " INNER JOIN TRIPS Sensor24 ON DATEPART(YEAR, Sensor12.START_TIME) = DATEPART(YEAR, Sensor24.START_TIME) "; query += " AND DATEPART(MONTH, Sensor12.START_TIME) = DATEPART(MONTH, Sensor24.START_TIME) "; query += " AND DATEPART(DAYOFYEAR, Sensor12.START_TIME) = DATEPART(DAYOFYEAR, Sensor24.START_TIME) "; query += " AND DATEPART(HOUR, Sensor12.START_TIME) = DATEPART(HOUR, Sensor24.START_TIME) "; query += " AND DATEPART(MINUTE, Sensor12.START_TIME) = DATEPART(MINUTE, Sensor24.START_TIME) "; query += " WHERE Sensor12.SENSOR_ID = 12 "; query += " AND Sensor24.SENSOR_ID = 24 "; query += " ) "; query += " ,ExtractedEcolog "; query += "AS ( "; query += " SELECT ECOLOG.TRIP_ID "; query += " ,SUM(LOST_ENERGY) AS SumLostEnergy "; query += " ,PERCENTILE_DISC(0.25) WITHIN "; query += " GROUP ( "; query += " ORDER BY SUM(LOST_ENERGY) "; query += " ) OVER (PARTITION BY NULL) AS Q1 "; query += " ,PERCENTILE_DISC(0.75) WITHIN "; query += " GROUP ( "; query += " ORDER BY SUM(LOST_ENERGY) "; query += " ) OVER (PARTITION BY NULL) AS Q3 "; query += " FROM ECOLOG "; query += " INNER JOIN ExtractedTrips ON ECOLOG.TRIP_ID = ExtractedTrips.TRIP_ID "; query += " INNER JOIN SelectedSemanticLink ON ECOLOG.LINK_ID = SelectedSemanticLink.LINK_ID "; query += " WHERE ECOLOG.DRIVER_ID = 1 "; query += " AND TRIP_DIRECTION = '" + direction.Direction + "' "; query += " AND SENSOR_ID = " + sensorID; query += " GROUP BY ECOLOG.TRIP_ID "; query += " ) "; query += "SELECT TRIP_ID AS TripID "; query += " ,SumLostEnergy AS Max "; query += "FROM ExtractedEcolog "; query += "WHERE SumLostEnergy = ( "; query += " SELECT MAX(SumLostEnergy) AS Max "; query += " FROM ExtractedEcolog "; query += " WHERE SumLostEnergy <= Q3 + 1.5 * (Q3 - Q1) "; query += " ) "; datum.MaxLevel = DatabaseAccesserEcolog.GetResult(query) .AsEnumerable() .Select(x => x.Field<double>("Max")) .ElementAt(0); */ /* datum.MedianLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedEnergyMedianOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<double>("Median")) .ElementAt(0); datum.AvgLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedEnergyAvgOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<double>("Avg")) .ElementAt(0); */ // datum.ModeLevel = datum.HistogramData.First(v => v.Value.Equals(datum.HistogramData.Select(m => m.Value).Max())).Level; // datum.HistogramData.Max(x => x.Level); // datum.ClassWidth = (datum.MaxLevel - datum.MinLevel) / 10; datum.ClassWidth = 0.003564219668623985; /* datum.UnderModeData = datum.HistogramData .Where(v => v.Value <= datum.HistogramData.Max(x => x.Value) * 0.75) .Where(v => v.Level < datum.ModeLevel) .ToList(); datum.ModeData = datum.HistogramData .Where(v => v.Value >= datum.HistogramData.Max(x => x.Value) * 0.75) .ToList(); datum.UpperModeData = datum.HistogramData .Where(v => v.Value <= datum.HistogramData.Max(x => x.Value) * 0.75) .Where(v => v.Level > datum.ModeLevel) .ToList(); datum.DistUnderMode = datum.UnderModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.DistMode = datum.ModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.DistUpperMode = datum.UpperModeData.Sum(x => x.Value) * 100 / datum.HistogramData.Sum(x => x.Value); datum.CompMinMax = datum.MaxLevel * 100 / datum.MinLevel; datum.CompMinMode = datum.ModeLevel * 100 / datum.MinLevel; datum.CompModeMax = datum.MaxLevel * 100 / datum.ModeLevel; */ return datum; }
public static SemanticHistogramDatum GetStackedTimeInstance(SemanticLink semanticLink, TripDirection direction) { SemanticHistogramDatum datum = new SemanticHistogramDatum(); datum.SemanticLink = semanticLink; datum.Direction = direction; DataTable table = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeStackOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')"); datum.HistogramData = new List<LevelAndValue>(); foreach (DataRow row in table.Rows) { datum.HistogramData.Add(new LevelAndValue() { Level = row.Field<int>("Level"), Value = row.Field<int>("Stack") }); } datum.Sum = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeSumOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Sum")) .ElementAt(0); datum.Number = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeNumberOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Number")) .ElementAt(0); datum.MaxLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMaxOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Max")) .ElementAt(0); datum.MinLevel = DatabaseAccesserEcolog.GetResult("SELECT * FROM funcNormalizedTimeMinOfSemanticLink(" + semanticLink.SemanticLinkId + ", '" + direction.Direction + "')") .AsEnumerable() .Select(x => x.Field<int>("Min")) .ElementAt(0); datum.ClassWidth = (int) ( (datum.MaxLevel - datum.MinLevel) / 10 ); return datum; }
public static List<Ecolog> ExtractEcolog(int tripId, SemanticLink semanticLink) { var ret = new List<Ecolog>(); DataTable ecologTable = new DataTable(); StringBuilder query = new StringBuilder(); query.AppendLine("WITH SelectedSemanticLink"); query.AppendLine("AS ("); query.AppendLine(" SELECT *"); query.AppendLine(" FROM SEMANTIC_LINKS"); query.AppendLine(" WHERE SEMANTIC_LINK_ID = " + semanticLink.SemanticLinkId); query.AppendLine(" )"); query.AppendLine("SELECT *"); query.AppendLine("FROM ecolog"); query.AppendLine("INNER JOIN SelectedSemanticLink ON ecolog.link_id = SelectedSemanticLink.link_id"); query.AppendLine("WHERE trip_id = " + tripId); query.AppendLine("ORDER BY jst ASC"); ecologTable = DatabaseAccesserEcolog.GetResult(query.ToString()); for (int i = 0; i < ecologTable.Rows.Count; i++) { ret.Add(new Ecolog() { TripId = (int)ecologTable.Rows[i]["trip_id"], DriverId = (int)ecologTable.Rows[i]["driver_id"], CarId = (int)ecologTable.Rows[i]["car_id"], SensorId = (int)ecologTable.Rows[i]["sensor_id"], Jst = (DateTime)ecologTable.Rows[i]["jst"], Latitude = (double)ecologTable.Rows[i]["latitude"], Longitude = (double)ecologTable.Rows[i]["longitude"], Speed = (float)ecologTable.Rows[i]["speed"], Heading = (float)ecologTable.Rows[i]["heading"], DistanceDifference = (float)ecologTable.Rows[i]["distance_difference"], TerrainAltitude = (float)ecologTable.Rows[i]["terrain_altitude"], TerrainAltitudeDifference = (float)ecologTable.Rows[i]["terrain_altitude_difference"], LongitudinalAcc = (ecologTable.Rows[i]["longitudinal_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["longitudinal_acc"]), LateralAcc = (ecologTable.Rows[i]["lateral_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["lateral_acc"]), VerticalAcc = (ecologTable.Rows[i]["vertical_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["vertical_acc"]), EnergyByAirResistance = (float)ecologTable.Rows[i]["energy_by_air_resistance"], EnergyByRollingResistance = (float)ecologTable.Rows[i]["energy_by_rolling_resistance"], EnergyByClimbingResistance = (float)ecologTable.Rows[i]["energy_by_climbing_resistance"], EnergyByAccResistance = (ecologTable.Rows[i]["energy_by_acc_resistance"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_acc_resistance"]), ConvertLoss = (float)ecologTable.Rows[i]["convert_loss"], RegeneLoss = (float)ecologTable.Rows[i]["regene_loss"], RegeneEnergy = (float)ecologTable.Rows[i]["regene_energy"], LostEnergy = (float)ecologTable.Rows[i]["lost_energy"], Efficiency = (float)ecologTable.Rows[i]["efficiency"], ConsumedElectricEnergy = (float)ecologTable.Rows[i]["consumed_electric_energy"], LostEnergyByWellToWheel = (ecologTable.Rows[i]["lost_energy_by_well_to_wheel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["lost_energy_by_well_to_wheel"]), ConsumedFuel = (ecologTable.Rows[i]["consumed_fuel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["consumed_fuel"]), ConsumedFuelByWellToWheel = (ecologTable.Rows[i]["consumed_fuel_by_well_to_wheel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["consumed_fuel_by_well_to_wheel"]), EnergyByEquipment = (ecologTable.Rows[i]["energy_by_equipment"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_equipment"]), EnergyByCooling = (ecologTable.Rows[i]["energy_by_cooling"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_cooling"]), EnergyByHeating = (ecologTable.Rows[i]["energy_by_heating"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_heating"]), TripDirection = (ecologTable.Rows[i]["trip_direction"] == DBNull.Value ? null : (string)ecologTable.Rows[i]["trip_direction"]), MeshId = (ecologTable.Rows[i]["mesh_id"] == DBNull.Value ? -1 : (int)ecologTable.Rows[i]["mesh_id"]), LinkId = (ecologTable.Rows[i]["link_id"] == DBNull.Value ? null : (string)ecologTable.Rows[i]["link_id"]), RoadTheta = (ecologTable.Rows[i]["road_theta"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["road_theta"]) }); } return ret; }
public DetailComparePageViewModel(SemanticLink link, TripDirection direction) { this.SelectedSemanticLink = link; this.TripDirection = direction; Initialize(); }
public static List <Ecolog> ExtractEcolog(int tripId, SemanticLink semanticLink) { var ret = new List <Ecolog>(); DataTable ecologTable = new DataTable(); StringBuilder query = new StringBuilder(); query.AppendLine("WITH SelectedSemanticLink"); query.AppendLine("AS ("); query.AppendLine(" SELECT *"); query.AppendLine(" FROM SEMANTIC_LINKS"); query.AppendLine(" WHERE SEMANTIC_LINK_ID = "+ semanticLink.SemanticLinkId); query.AppendLine(" )"); query.AppendLine("SELECT *"); query.AppendLine("FROM ecolog"); query.AppendLine("INNER JOIN SelectedSemanticLink ON ecolog.link_id = SelectedSemanticLink.link_id"); query.AppendLine("WHERE trip_id = " + tripId); query.AppendLine("ORDER BY jst ASC"); ecologTable = DatabaseAccesserEcolog.GetResult(query.ToString()); for (int i = 0; i < ecologTable.Rows.Count; i++) { ret.Add(new Ecolog() { TripId = (int)ecologTable.Rows[i]["trip_id"], DriverId = (int)ecologTable.Rows[i]["driver_id"], CarId = (int)ecologTable.Rows[i]["car_id"], SensorId = (int)ecologTable.Rows[i]["sensor_id"], Jst = (DateTime)ecologTable.Rows[i]["jst"], Latitude = (double)ecologTable.Rows[i]["latitude"], Longitude = (double)ecologTable.Rows[i]["longitude"], Speed = (float)ecologTable.Rows[i]["speed"], Heading = (float)ecologTable.Rows[i]["heading"], DistanceDifference = (float)ecologTable.Rows[i]["distance_difference"], TerrainAltitude = (float)ecologTable.Rows[i]["terrain_altitude"], TerrainAltitudeDifference = (float)ecologTable.Rows[i]["terrain_altitude_difference"], LongitudinalAcc = (ecologTable.Rows[i]["longitudinal_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["longitudinal_acc"]), LateralAcc = (ecologTable.Rows[i]["lateral_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["lateral_acc"]), VerticalAcc = (ecologTable.Rows[i]["vertical_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["vertical_acc"]), EnergyByAirResistance = (float)ecologTable.Rows[i]["energy_by_air_resistance"], EnergyByRollingResistance = (float)ecologTable.Rows[i]["energy_by_rolling_resistance"], EnergyByClimbingResistance = (float)ecologTable.Rows[i]["energy_by_climbing_resistance"], EnergyByAccResistance = (ecologTable.Rows[i]["energy_by_acc_resistance"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_acc_resistance"]), ConvertLoss = (float)ecologTable.Rows[i]["convert_loss"], RegeneLoss = (float)ecologTable.Rows[i]["regene_loss"], RegeneEnergy = (float)ecologTable.Rows[i]["regene_energy"], LostEnergy = (float)ecologTable.Rows[i]["lost_energy"], Efficiency = (float)ecologTable.Rows[i]["efficiency"], ConsumedElectricEnergy = (float)ecologTable.Rows[i]["consumed_electric_energy"], LostEnergyByWellToWheel = (ecologTable.Rows[i]["lost_energy_by_well_to_wheel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["lost_energy_by_well_to_wheel"]), ConsumedFuel = (ecologTable.Rows[i]["consumed_fuel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["consumed_fuel"]), ConsumedFuelByWellToWheel = (ecologTable.Rows[i]["consumed_fuel_by_well_to_wheel"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["consumed_fuel_by_well_to_wheel"]), EnergyByEquipment = (ecologTable.Rows[i]["energy_by_equipment"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_equipment"]), EnergyByCooling = (ecologTable.Rows[i]["energy_by_cooling"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_cooling"]), EnergyByHeating = (ecologTable.Rows[i]["energy_by_heating"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_heating"]), TripDirection = (ecologTable.Rows[i]["trip_direction"] == DBNull.Value ? null : (string)ecologTable.Rows[i]["trip_direction"]), MeshId = (ecologTable.Rows[i]["mesh_id"] == DBNull.Value ? -1 : (int)ecologTable.Rows[i]["mesh_id"]), LinkId = (ecologTable.Rows[i]["link_id"] == DBNull.Value ? null : (string)ecologTable.Rows[i]["link_id"]), RoadTheta = (ecologTable.Rows[i]["road_theta"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["road_theta"]) }); } return(ret); }
public DetailEnergyPageViewModel(SemanticLink link, TripDirection direction) { this.SemanticLink = link; this.TripDirection = direction; Initialize(); }
public static List<GraphEcolog> ExtractGraphEcolog(int tripId, SemanticLink link) { var ret = new List<GraphEcolog>(); DataTable ecologTable = new DataTable(); StringBuilder query = new StringBuilder(); query.AppendLine("SELECT"); query.AppendLine(" jst,"); query.AppendLine(" latitude,"); query.AppendLine(" longitude,"); query.AppendLine(" speed,"); query.AppendLine(" terrain_altitude,"); query.AppendLine(" longitudinal_acc,"); query.AppendLine(" CASE WHEN consumed_electric_energy > 0 THEN energy_by_air_resistance * 3600 ELSE 0 END AS energy_by_air_resistance_plus,"); query.AppendLine(" CASE WHEN consumed_electric_energy <= 0 THEN energy_by_air_resistance * 3600 ELSE 0 END AS energy_by_air_resistance_minus,"); query.AppendLine(" CASE WHEN consumed_electric_energy > 0 THEN energy_by_rolling_resistance * 3600 ELSE 0 END AS energy_by_rolling_resistance_plus,"); query.AppendLine(" CASE WHEN consumed_electric_energy <= 0 THEN energy_by_rolling_resistance * 3600 ELSE 0 END AS energy_by_rolling_resistance_minus,"); query.AppendLine(" CASE WHEN energy_by_climbing_resistance > 0 THEN energy_by_climbing_resistance * 3600 ELSE 0 END AS energy_by_climbing_resistance,"); query.AppendLine(" CASE WHEN consumed_electric_energy > 0 THEN energy_by_acc_resistance * 3600 ELSE 0 END AS energy_by_acc_resistance,"); query.AppendLine(" convert_loss * 3600 AS convert_loss,"); query.AppendLine(" CASE WHEN consumed_electric_energy <= 0 THEN regene_loss * 3600 ELSE 0 END AS regene_loss,"); query.AppendLine(" CASE WHEN consumed_electric_energy <= 0 THEN regene_energy * 3600 ELSE 0 END AS regene_energy,"); query.AppendLine(" lost_energy * 3600 AS lost_energy,"); query.AppendLine(" consumed_electric_energy * 3600 AS consumed_electric_energy,"); query.AppendLine(" ecolog.link_id"); query.AppendLine("FROM ecolog"); query.AppendLine("INNER JOIN semantic_links"); query.AppendLine(" ON ecolog.link_id = semantic_links.link_id"); query.AppendLine("WHERE trip_id = " + tripId); query.AppendLine(" AND semantic_link_id = " + link.SemanticLinkId); query.AppendLine("ORDER BY jst ASC"); ecologTable = DatabaseAccesserEcolog.GetResult(query.ToString()); for (int i = 0; i < ecologTable.Rows.Count; i++) { ret.Add(new GraphEcolog() { Jst = (DateTime)ecologTable.Rows[i]["jst"], Latitude = (double)ecologTable.Rows[i]["latitude"], Longitude = (double)ecologTable.Rows[i]["longitude"], Speed = (float)ecologTable.Rows[i]["speed"], TerrainAltitude = (float)ecologTable.Rows[i]["terrain_altitude"], LongitudinalAcc = (ecologTable.Rows[i]["longitudinal_acc"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["longitudinal_acc"]), EnergyByAirResistancePlus = (float)ecologTable.Rows[i]["energy_by_air_resistance_plus"], EnergyByAirResistanceMinus = (float)ecologTable.Rows[i]["energy_by_air_resistance_minus"], EnergyByRollingResistancePlus = (float)ecologTable.Rows[i]["energy_by_rolling_resistance_plus"], EnergyByRollingResistanceMinus = (float)ecologTable.Rows[i]["energy_by_rolling_resistance_minus"], EnergyByClimbingResistance = (float)ecologTable.Rows[i]["energy_by_climbing_resistance"], EnergyByAccResistance = (ecologTable.Rows[i]["energy_by_acc_resistance"] == DBNull.Value ? -1 : (float)ecologTable.Rows[i]["energy_by_acc_resistance"]), ConvertLoss = (float)ecologTable.Rows[i]["convert_loss"], RegeneLoss = (float)ecologTable.Rows[i]["regene_loss"], RegeneEnergy = (float)ecologTable.Rows[i]["regene_energy"], LostEnergy = (float)ecologTable.Rows[i]["lost_energy"], ConsumedElectricEnergy = (float)ecologTable.Rows[i]["consumed_electric_energy"], LinkId = (ecologTable.Rows[i]["link_id"] == DBNull.Value ? null : (string)ecologTable.Rows[i]["link_id"]), }); } return ret; }