How can we visualise our driving distance dataset another way? Can we create something like this which is using Voronoi polygons:
Well, yes we can. And PostGIS gives us the tools to put this together very quickly. First, create a view of the distinct nodes in your output table created by my batch function in a previous post.
CREATE OR REPLACE VIEW vw_sdd_nodes AS
SELECT DISTINCT ON (node) *
ORDER BY node, agg_cost ASC;
(from this StackExchange post).
Then using a new function in PostGIS 2.3.x, ST_VoronoiPolygons, create a voronoi polygon layer based on the road nodes in the view above. See this StackExchange post for more info.
CREATE OR REPLACE VIEW vw_sdd_voronoi AS
WITH voronoi AS
(SELECT geometry FROM vw_sdd_nodes)
Then, link the nodes back to the voronoi polygons so that each polygon gets a node ID and a cost value in a new table. This takes some time - in my case I had 24,000 nodes intersecting with 24,000 polygons in about 3 minutes.
CREATE TABLE edn_sdd_voronoi AS
SELECT row_number() OVER () AS gid, n.node, n.agg_cost, v.the_geom
FROM vw_school_driving_distance_nodes n, vw_sdd_voronoi v
WHERE ST_Intersects(n.geometry, v.the_geom);
CREATE INDEX edn_sdd_voronoi_geometry_ixs
I also created a set of Voronoi polygons using the QGIS > Geometry Tools > Voronoi Polygons and that took several hours to create a new shapefile layer. Using PostGIS you can be done in less than 5 minutes depending on how many points you have. As always this could probably be done more efficiently but 4 hours to 5 minutes is good enough for me.
Style the data in QGIS using a graduated renderer and the aggregated cost column and you get something like this.
If you have any suggestions for improvements, get in touch.