def flat_earth(filename = 'path_flat.kml'):
    """Test long path"""

    nodes, links = dijkstra.load_data()
    dijkstra.create_adjacency_lists(nodes, links)

    source = dijkstra.node_by_name(nodes, 'PASADENA', 'CA')
    destination = dijkstra.node_by_name(nodes, 'CAMBRIDGE', 'MA')
    ans = dijkstra.shortest_path(nodes,
                                 links,
                                 dijkstra.distance,
                                 source,
                                 destination)
    nhpn.Visualizer.toKML(ans, 'path_flat.kml')
    print "path_flat.kml created"
def curved_earth(filename = 'path_curved.kml'):
    """Test long path"""

    nodes, links = dijkstra.load_data()
    dijkstra.create_adjacency_lists(nodes, links)

    def distance(node1, node2):
        """Returns the distance between node1 and node2, including the
        Earth's curvature."""
        A = node1.latitude*pi/10**6/180
        B = node1.longitude*pi/10**6/180
        C = node2.latitude*pi/10**6/180
        D = node2.longitude*pi/10**6/180
        return acos(sin(A)*sin(C)+cos(A)*cos(C)*cos(B-D))

    source = dijkstra.node_by_name(nodes, 'PASADENA', 'CA')
    destination = dijkstra.node_by_name(nodes, 'CAMBRIDGE', 'MA')
    ans = dijkstra.shortest_path(nodes,
                                 links,
                                 distance,
                                 source,
                                 destination)
    nhpn.Visualizer.toKML(ans, 'path_curved.kml')
    print "path_curved.kml created"