0

When simplifying polygons in QGIS (2.2.0) with the GRASS v.generalize tool the resulting layer duplicates some data rows many times. A shapefile of 657 zones/data rows:

enter image description here

.. is simplified to one with correct-looking geometries but 12,513 data rows:

enter image description here

Many of these don't seem to have an associated polygon, at least not a visible one. Not sure why this happens, but what would be the easiest way to (preferably) prevent it or (alternatively) clean the data table up?

The problem is replicable using this small shapefile with CRS set to EPSE 27700 - 33 data rows become 60 after generalising by the 'douglas' method with a 1000 tolerance.

Many thanks in advance.


Edit.

I suspect this has something to do with the clipped nature of the shapefile which follows coastlines and river edges (which do not all simplify as you might predict in line with the tolerance).

2

I made a test with OpenJUMP and it also creates more rows (55) with simplification and the reason seems to be that simplification explodes the multipolygons from the original data into simple polygons. Perhaps the same happens with QGIS.

If QGIS is doing the D-P simplification with GEOS which is about the same as JTS then this comment from the source code may explain what happens http://tsusiatsoftware.net/jts/javadoc/com/vividsolutions/jts/simplify/DouglasPeuckerSimplifier.html

Simplifies a com.vividsolutions.jts.geom.Geometry using the standard Douglas-Peucker algorithm. Ensures that any polygonal geometries returned are valid. Simple lines are not guaranteed to remain simple after simplification.

Note that in general D-P does not preserve topology - e.g. polygons can be split, collapse to lines or disappear holes can be created or disappear, and lines can cross. To simplify geometry while preserving topology use TopologyPreservingSimplifier. (However, using D-P is significantly faster).

  • Yes you're right its caused by exploding individual polygons into data rows. I've calculated areas for each row and am in process of sorting and selecting largest, then merging them back by common ID field. That should do it hopefully. – geotheory Jun 18 '14 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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