22

I have a dataset of building footprints vectorised from a raster dataset. The dataset is currently just a vector representation of the raster data. I would like a polygon dataset that only has vertices at the corners of the building. I have attempted to use the Simplify command in PostGIS with limited success.

Is there a better way?

17

There are many algorithms dedicated to building simplification. You may have a look at this website for an overview. See also this question. You could use:

  • Building outline simplification: It consist in recursively deleting too short edges of the outline and lengthening the neighbor edges. Example:

alt text

  • Smallest surrounding rectangle algorithm: It consist in replacing the building geometry by the smallest surrounding rectangle. This rectangle can also be scaled to the building initial area. Example:

alt text

  • Squaring algorithm: It consists in applying a light rotation to edges to make the corners perfectly squared. Example:

alt text

These transformations may be enough for your need. It can be interesting to combine them.

I am almost 100% sure none of these algorithms are implemented in PostGIS. Some are implemented in the Opencarto java library I am developing. Let me know if you want to test it!

4
geometry ST_SimplifyPreserveTopology(geometry geomA, float tolerance);

Will avoid creating derived geometries (polygons in particular) that are invalid http://www.postgis.org/documentation/manual-1.5SVN/ST_SimplifyPreserveTopology.html

should be a better output than Simplify

check your geometry first and after with ST_IsSimple(geometry geomA);

3

Something like this might do the trick:

"If we buffer by a large amount, then reverse the buffer by the same amount, we’ll get something that has a similar shape to the original, but without the crinkly bits."

http://blog.opengeo.org/2010/11/22/removing-complexities/

  • that's an interesting approach and it seems relatively effective. Thanks for the pointer, it's something I'll be able to use. Your answer would be better if it contained a simple phrase containing the core idea being referenced and wasn't just a link. – matt wilkie Jan 12 '11 at 0:51

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.