From 7ced773cab28ae27d2088e566e8890ed3314b158 Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Fri, 23 Jul 2021 10:01:19 +0200 Subject: [PATCH] update handling of passenger count - sitting / standing --- .../DeclarationDataAdapterCompletedBusSpecific.cs | 11 +++++++---- .../Models/Declaration/CompletedBusSegments.cs | 11 +++++------ .../VectoCore/Models/Declaration/DeclarationData.cs | 4 ++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index 3ed44c3045..99b0390305 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -402,21 +402,24 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter #endregion - protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengers, + protected double GetNumberOfPassengers(Mission mission, Meter length, Meter width, double registeredPassengerSeats, double registeredPassengersStanding, LoadingType loading) { var busFloorArea = DeclarationData.BusAuxiliaries.CalculateBusFloorSurfaceArea(length, width); var passengerCountRef = busFloorArea * (loading == LoadingType.LowLoading ? mission.BusParameter.PassengerDensityLow : mission.BusParameter.PassengerDensityRef); - //var passengerCountDecl = completedVehicle.NuberOfPassengersUpperDeck + completedVehicle.NumberOfPassengersLowerDeck; + if (loading != LoadingType.ReferenceLoad && loading != LoadingType.LowLoading) { throw new VectoException("Unhandled loading type: {0}", loading); } + var passengerCount = registeredPassengerSeats + + (mission.MissionType == MissionType.Coach ? 0 : registeredPassengersStanding); + return loading == LoadingType.ReferenceLoad - ? VectoMath.Min(passengerCountRef, registeredPassengers) - : VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), registeredPassengers); + ? VectoMath.Min(passengerCountRef, passengerCount) + : VectoMath.Min(passengerCountRef * mission.MissionType.GetLowLoadFactorBus(), passengerCount); } diff --git a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs index bbd03585ca..bb15f5da9e 100644 --- a/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs +++ b/VectoCore/VectoCore/Models/Declaration/CompletedBusSegments.cs @@ -24,23 +24,22 @@ namespace TUGraz.VectoCore.Models.Declaration protected override string ErrorMessage => "ERROR: Could not find the declaration segment for vehicle. numberOfAxles: {0}, vehicleCode: {1}, registrationClass: {2}, " + - "passengersLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}"; + "passengerSeatsLowerDeck: {3}, bodyHeight: {4} , lowEntry: {5}"; protected override void ParseData(DataTable table) { _segmentTable = table.Copy(); } - public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry) + public override Segment Lookup(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry) { - return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengersLowerDeck, bodyHeight, lowEntry); + return LookupCompletedBusVehicle(numberOfAxles, vehicleCode, registrationClass, passengerSeatsLowerDeck, bodyHeight, lowEntry); } - #endregion - private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengersLowerDeck, Meter bodyHeight, bool? lowEntry) + private Segment LookupCompletedBusVehicle(int numberOfAxles, VehicleCode? vehicleCode, RegistrationClass? registrationClass, int? passengerSeatsLowerDeck, Meter bodyHeight, bool? lowEntry) { var rows = _segmentTable.AsEnumerable().Where( r => { @@ -60,7 +59,7 @@ namespace TUGraz.VectoCore.Models.Declaration rows = rows.Where( r => { var limits = r.Field<string>("passengerslowerdeck").Split('-'); - return ((int)passengersLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt()); + return ((int)passengerSeatsLowerDeck).IsBetween(limits[0].ToInt(), limits[1].ToInt()); }).ToList(); } else if (rows.Any(r => r.Field<string>("bodyheight") != "-")) { rows = rows.Where( diff --git a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs index 615ef139d8..d0a44a5fd4 100644 --- a/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs +++ b/VectoCore/VectoCore/Models/Declaration/DeclarationData.cs @@ -260,7 +260,7 @@ namespace TUGraz.VectoCore.Models.Declaration } - public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassLowFloor) + public static Meter CalculateInternalLength(Meter vehicleLength, VehicleCode? vehicleCode, double numPassSeatsLowerDeck) { if (vehicleCode.GetFloorType() == FloorType.LowFloor) { return vehicleCode.IsDoubleDeckerBus() ? 2 * vehicleLength : vehicleLength; @@ -268,7 +268,7 @@ namespace TUGraz.VectoCore.Models.Declaration if (vehicleCode.GetFloorType() == FloorType.HighFloor) { if (vehicleCode.IsDoubleDeckerBus()) { - return numPassLowFloor > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>(); + return numPassSeatsLowerDeck > 6 ? 1.5 * vehicleLength : vehicleLength + 2.4.SI<Meter>(); } return vehicleLength; -- GitLab