A user can choose between walking, bicycling, public transit, or driving for X minutes. Their current location is a latitude and longitude pair given by the HTML5 Geolocation API(wgs84). The (roughly 10000) points of interests' location(latitude and longitude pair from Google Geococding API(wgs84)) spread across North America is stored in Postgresql as a PostGIS geography data type.
I want a list of POIs, travel time, and the length of the route sorted by travel time ascending that the user can reach given the travel criteria. I don't need the route itself. Is using pgRouting the correct choice? If it is the right choice, how can I import a routable Open Street Map for the different travel methods? If not, I'm open to changing the software stack to accommodate for this, so long as the result is accurate and fast(< 100ms on zen2 and 64gb of RAM)
I initially thought of generating an isochrone map using OSRM or GraphHopper, and then using ST_Within
to find all POIs within the generated isochrone. However, I don't want to deal with projections and it seems like redundant work. From my understanding, generating an isochrone map uses Dijkstra's algorithm and then ending a route when a certain cost has been reached. Why not instead end the route when it's at a certain proximity to a POI and duplicate and continue routing if the cost has not been reached?
<->
KNN to limit the POIs down to 25 and limit the radius withST_DWithin
? Does that lower the hardware requirements?