I have been experimenting with generating isochrones with pgrouting using osm data. So far, I have been able to generate isochrone polygons by getting the concave hull of the nodes returned from the pgr_drivingdistance function. Here is a sample query to generate 10 minute (0.166667 hr) isochrone from node 46397, assuming a speed of 5km/h :
SELECT 1 AS id, st_concavehull(st_union(t.the_geom), 0.95) FROM (SELECT seq, id1 AS node, id2 AS edge, cost, pt.the_geom AS the_geom FROM pgr_drivingdistance( 'SELECT id, source, target, (km/5) as cost FROM at_2po_4pgr', 46397, 0.166667, FALSE, FALSE ) AS di JOIN at_2po_4pgr_vertices_pgr pt ON di.id1 = pt.id) t
Which yields the following isochrone :
I would like to know if it is possible to calculate an isochrone while considering the possibility of reaching points along a portion of each edge? This would be especially useful in cases where network edges are very long. For example, the pgr_drivingdistance function would return a point 50% along an edge, if only half of the edge could be traversed.