def test_export_nodes(): with test_db_session() as session: g = igraph.Graph(directed=True) # two boxes g.add_vertices(6) g.vs["osm_id"] = range(6) # the outer rectange g.add_edges([ (1, 0), (0, 5), (2, 1), (2, 3), (4, 3), (4, 5), ]) g.es["weight"] = [x + 1 for x in range(6)] g.vs["redundant"] = [False for _ in range(6)] for i in range(6): new_node = OSRMNode(i, 3400000, 11800000, False, False) session.add(new_node) session.commit() export_nodes(g, session) results = session.query(OSRMRouteNode).filter_by(osm_id=4).all() eq_(gt.output_weights(g, 4), [5, 6]) eq_(results[0].n_outputs, 2) eq_(results[0].sum_out, 5 + 6) eq_(results[0].product_out, 5 * 6) assert_almost_equal(results[0].log_sum_out, math.log(5) + math.log(6))
def main(args): parser = argparse.ArgumentParser() parser.add_argument('input', metavar='graph.pickle', help='Input graph file') parser.add_argument( '--connection', default='postgresql://*****:*****@localhost/osrm', help='Postgres connection string. Default %(default)s' ) parser.add_argument('--verbose', action='store_true', help='Increase logging level') args = parser.parse_args() logging.basicConfig( level=logging.INFO if args.verbose else logging.WARNING) log.info("Creating DB engine") engine = create_engine(args.connection, echo=False) log.info("Creating DB session") Session = sessionmaker(bind=engine) session = Session() log.info("Creating OSRM tables") models.Base.metadata.create_all(engine) session.query(models.OSRMRouteNode).delete() g = igraph.read(args.input) export_nodes(g, session)