I have a shapefile with 3800 polygons representing the smallest administrative areas in Ireland. Many of these, in rural areas, have tiny populations, under 100 people. In urban areas, all would have adequate populations.

For each area I have a population figure, and various other attributes, all of which can be intelligently summed to give valid results for areas produced by combining the smaller areas.

I need to merge the areas to get say, 500 or 600 areas of reasonable population. I need to leave the larger (in population) areas alone, where possible. I would greatly prefer to do this automatically. This is necessary for model fitting purposes, primarily.

I've looked at a number of the dissolve questions here:

  • 'Batch Dissolve Polygons based on Attributes in QGIS or FWTools' I think would require me to know which areas to merge, when this is what I need to calculate.
  • 'Practical way of managing polygons and unions of them' and 'How do dissolve polygons from shapefile using open source tools?' have the same issue.

Any suggestions?

4 Answers 4


What you are attempting is known as Zone Design. The definitive work on the subject was carried out by Stan Openshaw in the late 80s and early 90s. See the zdes home page, sadly that code is probably not going to help you as it is written in AML and required ARC/INFO 7 to run. But the papers linked off the bottom of the page should help you implement the algorithm your self.

A related method was used to engineer the 2001 and 2011 UK census output areas by Dave Martin of Southampton University but I think that algorithm was never released.


It looks as if @iant's suggestion is spot on. Southampton have released software which will likely do exactly what I need doing. Details are at :- http://www.geodata.soton.ac.uk/software/AZTool/


In GRASS GIS, there is v.clean with the tool "rmarea: remove small areas, the longest boundary with adjacent area is removed". You could use it via the new Sextante plugin.


The dissolve tool in QGIS has a checkbox that allows you to run the tool "only on selected features".

To select the features you want to merge just run a query on your layer (layer->query) and then select the results.

  • "I think would require me to know which areas to merge, when this is what I need to calculate." So precisely what query are you proposing to run?
    – whuber
    Commented Aug 12, 2012 at 16:52
  • 1
    Very simply I want to agglomerate small areas with tiny populations to their neighbours, reasonably intelligently, to make up bigger areas with larger populations. As far as possible I want to leave areas with big populations alone. I can presumably specify this as some kind of optimization problem, but I don't know how to manage the spatial relationships.This is the key problem. If I could generate a list of areas to be joined up I'd be almost sorted, but I can't (except manually!)
    – astaines
    Commented Aug 12, 2012 at 18:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.