#21 improved grouping algorithm
All checks were successful
Amarillo/amarillo-gitea/amarillo-enhancer/pipeline/head This commit looks good

This commit is contained in:
Csaba 2024-01-12 15:40:24 +01:00
parent 652780b702
commit 5cc0b1d520

View file

@ -86,17 +86,21 @@ class GtfsExport:
ungrouped_trips = dict(trips) ungrouped_trips = dict(trips)
route_groups = list() route_groups = list()
current_route_id = 1 current_route_id = 1
for trip_id, trip in trips.items():
if len(ungrouped_trips) == 0: break
#find trips whose start and end stops are within a specified distance of the current trip while len(ungrouped_trips) > 0:
group = {key: value for key, value in ungrouped_trips.items() if self.trips_are_close(trip, value)} trip_id, current_trip = ungrouped_trips.popitem()
route_groups.append(group) current_group = {trip_id: current_trip}
for key, grouped_trip in group.items(): current_trip.route_id = current_route_id
grouped_trip.route_id = str(current_route_id)
ungrouped_trips.pop(key)
for other_id, other_trip in list(ungrouped_trips.items()):
# if an ungrouped trip is close to any of the grouped trips, add it to the route group
if (any(self.trips_are_close(other_trip, grouped_trip) for grouped_trip in current_group.values())):
current_group[other_id] = ungrouped_trips.pop(other_id)
current_group[other_id].route_id = current_route_id
route_groups.append(current_group)
current_route_id += 1 current_route_id += 1
return route_groups, trips return route_groups, trips
@ -108,7 +112,8 @@ class GtfsExport:
trip2_start = trip2.path.coordinates[0] trip2_start = trip2.path.coordinates[0]
trip2_end = trip2.path.coordinates[-1] trip2_end = trip2.path.coordinates[-1]
return self.within_range(trip1_start, trip2_start) and self.within_range(trip1_end, trip2_end) res = self.within_range(trip1_start, trip2_start) and self.within_range(trip1_end, trip2_end)
return res
def within_range(self, stop1, stop2): def within_range(self, stop1, stop2):
MERGE_RANGE_M = 500 MERGE_RANGE_M = 500