[GIS] Union, Dissolve, Buffer — multiple layers, all in one step

postgisqgisshapefile

I'm a new user of Quantum GIS (1.7.3) and I need to repeat a task multiple times, so I'm wondering if there is a quicker way to do the following (with three or more polygon layers – each layer has a single polygon):

  1. Union
  2. Dissolve
  3. Buffer

The effect will be to have three separate single-polygons shapefiles merged into one (larger) single polygon shapefile, with a buffer around it.

Answers in PostGIS would be useful too as my data is stored there. Thanks!

Edit: Adding PostGIS information

The multiple polygons I want to Union-Dissolve-Buffer are the result of a catchment basin point table that I've created in PostGIS, converted (in R) to an alpha-hull (i.e. concave hull) polygon shapefile using the CRAN alphahull package. To create the original catchment table in PostGIS, for example, I do this:

CREATE TABLE catchment_10304 as
select 
    id,
    geom_4269,
    (select sum(cost) from (
       SELECT * FROM shortest_path('
       SELECT gid AS id,
          start_id::int4 AS source,
          end_id::int4 AS target,
          newcost::float8 AS cost
       FROM network',
       10304,
       id,
       false,
       false)) as foo ) as cost
from node;

CREATE TABLE catchment1_10304 AS 
SELECT * FROM catchment_10304 WHERE cost < 1364;

Then I do it for three different nodes (representing the boundaries of a region). To create the total catchment area for the region, I want to Union-dissolve-buffer with the three or more individual catchment area tables.

Best Answer

You can try something like this:

WITH unioned AS
(
SELECT id, ST_Union(geom_4269) AS geom, cost FROM catchment_10304
    GROUP BY id, cost
)
SELECT id, ST_ConcaveHull(geom, 0.8), cost FROM unioned

First we union the shapes each into a single multipoint (the group by allows us to keep the original fields), then we use ST_ConcaveHull (http://postgis.net/docs/ST_ConcaveHull.html) to create a concave hull.