Automatic HPA* Pipeline for Satellite Imagery
- To use HPA*, we need to create multiple, in this case 2, hierarchies of graphs. The first is a set of intra-tile graphs and the second is a large inter-tile graph. The inter-tile graph is used to find the general route from point A to point B across tiles. The intra-tile graphs are then used to pick out the fastest route for each tile along that general route. The benefit of this is that it scales very well and should work on extremely large tile-sets.
To create an intra-tile graph:
- Load image and thin all roads to a uniform 1 pixel thickness
- Identify all intersections and endpoints as nodes
- Uniquely label connected components
- Connect all nodes with same label
To create inter-tile graph:
- Create an empty graph to store everything
- Load and merge all tiles in a column
- Create an empty graph
- Load a simplified intra-tile graph with only tile entrances and exits
- Merge new graph with the combined column graph
- Repeat
- Merge column graph with the combined graph
- Repeat for all columns
Merging graphs is done by keeping track of the nodes along the leading edges of the combined graph. When a new tile is being merged, overlapping nodes on the leading edge are combined. Connections to the deleted node are then updated to reflect the new node_id.
multi_tile_processor.py is used to create the combined graph and visualization for testing tile_processor.py has Class definitions and creates the inter-tile graphs
Implement HPA* on the generated graphs