def get_waypoints_between_multiple_bus_stops(self, bus_stops=None, bus_stop_names=None): """ Find the waypoints of all possible routes between multiple bus_stops, based on their names. bus_stop_document: {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}} :param bus_stops: [{'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}] :param bus_stop_names: string :return response: [{ 'starting_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}, 'ending_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}, 'waypoints': [[{'_id', 'starting_node': {'osm_id', 'point': {'longitude', 'latitude'}}, 'ending_node': {'osm_id', 'point': {'longitude', 'latitude'}}, 'max_speed', 'road_type', 'way_id', 'traffic_density'}]]}] """ response = [] if bus_stops is None and bus_stop_names is not None: bus_stops = self.get_bus_stops(names=bus_stop_names) edges_dictionary = self.get_edges_dictionary() for i in range(0, len(bus_stops) - 1): starting_bus_stop = bus_stops[i] ending_bus_stop = bus_stops[i + 1] waypoints = find_waypoints_between_two_nodes( starting_node_osm_id=starting_bus_stop.get('osm_id'), ending_node_osm_id=ending_bus_stop.get('osm_id'), edges_dictionary=edges_dictionary ) intermediate_response = { 'starting_bus_stop': starting_bus_stop, 'ending_bus_stop': ending_bus_stop, 'waypoints': waypoints } response.append(intermediate_response) return response
def get_waypoints_between_two_bus_stops(self, starting_bus_stop=None, ending_bus_stop=None, starting_bus_stop_name=None, ending_bus_stop_name=None): """ Find the waypoints of all possible routes between two bus_stops, based on their names. bus_stop_document: {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}} :param starting_bus_stop: bus_stop_document :param ending_bus_stop: bus_stop_document :param starting_bus_stop_name: string :param ending_bus_stop_name: string :return response: { 'starting_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}, 'ending_bus_stop': {'_id', 'osm_id', 'name', 'point': {'longitude', 'latitude'}}, 'waypoints': [[{'_id', 'starting_node': {'osm_id', 'point': {'longitude', 'latitude'}}, 'ending_node': {'osm_id', 'point': {'longitude', 'latitude'}}, 'max_speed', 'road_type', 'way_id', 'traffic_density'}]]} """ if starting_bus_stop is None and starting_bus_stop_name is not None: starting_bus_stop = self.get_bus_stop(name=starting_bus_stop_name) if ending_bus_stop is None and ending_bus_stop_name is not None: ending_bus_stop = self.get_bus_stop(name=ending_bus_stop_name) edges_dictionary = self.get_edges_dictionary() waypoints = find_waypoints_between_two_nodes( starting_node_osm_id=starting_bus_stop.get('osm_id'), ending_node_osm_id=ending_bus_stop.get('osm_id'), edges_dictionary=edges_dictionary ) response = { 'starting_bus_stop': starting_bus_stop, 'ending_bus_stop': ending_bus_stop, 'waypoints': waypoints } return response