diff options
| author | Zog | 2018-03-26 17:04:55 +0200 |
|---|---|---|
| committer | Zog | 2018-03-26 17:04:55 +0200 |
| commit | b183db0b268d581cd06131f5094deff820e03483 (patch) | |
| tree | 447c5fefef971cbeca4f87df28e72c0eab302646 /app/models/chouette/vehicle_journey.rb | |
| parent | dd4768576baed54f9b0f40efa645b85d5a2fd273 (diff) | |
| download | chouette-core-b183db0b268d581cd06131f5094deff820e03483.tar.bz2 | |
Refs #6217; Add a method to fill blanks in journeys passing times
When a passing time at a border can be extrapolated from other values.
Diffstat (limited to 'app/models/chouette/vehicle_journey.rb')
| -rw-r--r-- | app/models/chouette/vehicle_journey.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app/models/chouette/vehicle_journey.rb b/app/models/chouette/vehicle_journey.rb index 525036077..be05d4053 100644 --- a/app/models/chouette/vehicle_journey.rb +++ b/app/models/chouette/vehicle_journey.rb @@ -346,6 +346,33 @@ module Chouette end end + def fill_passing_time_at_borders + encountered_borders = [] + previous_stop = nil + vehicle_journey_at_stops.each do |vjas| + sp = vjas.stop_point + if sp.stop_area.area_type == "border" + encountered_borders << vjas + else + if encountered_borders.any? + before_cost = journey_pattern.costs_between previous_stop.stop_point, encountered_borders.first.stop_point + after_cost = journey_pattern.costs_between encountered_borders.last.stop_point, sp + if before_cost && before_cost[:distance] && after_cost && after_cost[:distance] + before_distance = before_cost[:distance].to_f + after_distance = after_cost[:distance].to_f + time = previous_stop.departure_time + before_distance / (before_distance+after_distance) * (vjas.arrival_time - previous_stop.departure_time) + encountered_borders.each do |b| + b.update_attribute :arrival_time, time + b.update_attribute :departure_time, time + end + end + encountered_borders = [] + end + previous_stop = vjas + end + end + end + def self.matrix(vehicle_journeys) Hash[*VehicleJourneyAtStop.where(vehicle_journey_id: vehicle_journeys.pluck(:id)).map do |vjas| [ "#{vjas.vehicle_journey_id}-#{vjas.stop_point_id}", vjas] |
