def test_insert_osrm_routestep(): with test_db_session() as session: route_hash = OSRMRoute.hash_route(1) route = OSRMRoute(route_hash=route_hash, start_lat=2, start_lon=3, end_lat=4, end_lon=5, duration=6, nsteps=7) session.add(route) node1 = OSRMNode(1, 1, 2, True, False) node2 = OSRMNode(2, 3, 4, False, False) node3 = OSRMNode(3, 5, 6, False, False) session.add(node1) session.add(node2) session.add(node3) edge1 = OSRMEdge(1, 2, 5, 0.3, True) edge2 = OSRMEdge(2, 3, 6, 0.3, True) session.add(edge1) session.add(edge2) step1 = OSRMRouteStep(route_hash=route_hash, step_idx=0, edge_id=OSRMEdge.hash_edge(1, 2), forward=OSRMEdge.is_forward(1, 2)) step2 = OSRMRouteStep(route_hash=route_hash, step_idx=1, edge_id=OSRMEdge.hash_edge(3, 2), forward=OSRMEdge.is_forward(3, 2)) session.add(step1) session.add(step2) session.commit() result = session.query(OSRMRoute).filter( OSRMRoute.route_hash == route_hash).all() eq_(len(result), 1) eq_(result[0].start_lat, 2) eq_(result[0].nsteps, 7) steps = session.query(OSRMRouteStep).all() eq_(steps[0].edge_id, OSRMEdge.hash_edge(1, 2)) eq_(steps[0].edge_id, OSRMEdge.hash_edge(2, 1)) # commutes eq_(steps[0].step_idx, 0) eq_(steps[0].forward, True) eq_(steps[1].step_idx, 1) eq_(steps[1].forward, False) eq_(steps[0].edge.source_node.lon, 2) eq_(steps[0].edge.source_node.lat, 1)
def test_insert_osrm_routestep(): with test_db_session() as session: route_hash = OSRMRoute.hash_route(1) route = OSRMRoute(route_hash=route_hash, start_lat=2, start_lon=3, end_lat=4, end_lon=5, duration=6, nsteps=7) session.add(route) node1 = OSRMNode(1, 1, 2, True, False) node2 = OSRMNode(2, 3, 4, False, False) node3 = OSRMNode(3, 5, 6, False, False) session.add(node1) session.add(node2) session.add(node3) edge1 = OSRMEdge(1, 2, 5, 0.3, True) edge2 = OSRMEdge(2, 3, 6, 0.3, True) session.add(edge1) session.add(edge2) step1 = OSRMRouteStep(route_hash=route_hash, step_idx=0, edge_id=OSRMEdge.hash_edge(1, 2), forward=OSRMEdge.is_forward(1, 2)) step2 = OSRMRouteStep(route_hash=route_hash, step_idx=1, edge_id=OSRMEdge.hash_edge(3, 2), forward=OSRMEdge.is_forward(3, 2)) session.add(step1) session.add(step2) session.commit() result = session.query(OSRMRoute).filter( OSRMRoute.route_hash == route_hash).all() eq_(len(result), 1) eq_(result[0].start_lat, 2) eq_(result[0].nsteps, 7) steps = session.query(OSRMRouteStep).all() eq_(steps[0].edge_id, OSRMEdge.hash_edge(1, 2)) eq_(steps[0].edge_id, OSRMEdge.hash_edge(2, 1)) # commutes eq_(steps[0].step_idx, 0) eq_(steps[0].forward, True) eq_(steps[1].step_idx, 1) eq_(steps[1].forward, False) eq_(steps[0].edge.source_node.lon, 2) eq_(steps[0].edge.source_node.lat, 1)
def query_data(session): """Query the database to get the essential graph info Generates a list of tuples of (start_node, end_node, frequency) """ query = session.query( OSRMEdge.source, OSRMEdge.sink, OSRMEdgeFrequencies.freq, OSRMEdgeFrequencies.forward).join(OSRMEdgeFrequencies) for start, end, freq, forward in query: natural_order = OSRMEdge.is_forward(start, end) # There is a smarter to way to do this, but my brain is bent. if forward and natural_order: yield (start, end, freq) elif forward and not natural_order: yield (end, start, freq) elif not forward and natural_order: yield (end, start, freq) else: yield (start, end, freq)
def query_data(session): """Query the database to get the essential graph info Generates a list of tuples of (start_node, end_node, frequency) """ query = session.query(OSRMEdge.source, OSRMEdge.sink, OSRMEdgeFrequencies.freq, OSRMEdgeFrequencies.forward).join( OSRMEdgeFrequencies ) for start, end, freq, forward in query: natural_order = OSRMEdge.is_forward(start, end) # There is a smarter to way to do this, but my brain is bent. if forward and natural_order: yield (start, end, freq) elif forward and not natural_order: yield (end, start, freq) elif not forward and natural_order: yield (end, start, freq) else: yield (start, end, freq)