I have a PostGIS algorithm that writes a table with "pixelated" polygons, that I will call "clusters".

"Pixelated" clusters

My idea is to smooth the edges of these clusters using concave hulls (ST_ConcaveHull). To do that, I will have to decompose the current edges into their points (using ST_DumpPoints?) and collect them again (ST_Collect?) in order to send them to the concave hull function. My difficulty is how to produce a query, that in one go can perform these operations, and make sure that the concave hull constructor is called as many times as the clusters, having as argument the collection of points for each cluster.

Something like this:

SELECT ST_Concave_Hull(st_collect((st_dumppoints(geom)).geom),0.8) from exploded group by (st_dumppoints(geom)).geom;

But it's returning this error:

HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Any ideas? :-(

  • Hola, a un otro del SIG de Barcelona aunque soy inglés. – John Powell Oct 1 '14 at 9:51

You had an extra _ in the function name (easy mistake to make, I know from experience).

SELECT ST_ConcaveHull(st_collect((st_dumppoints(geom)).geom),0.8) 
FROM exploded group by (st_dumppoints(geom)).geom;

Having said that, are you sure you don't want, ST_Dump rather than ST_Dumppoints, as you presumably want the concave hull of the consistituent polygons, not those of the points inside those polygons?

  • Yes, you are completely right: ST_Dump is more appropriated, as I want to the concave hull of the polygon (not the points!) – doublebyte Oct 1 '14 at 9:50
  • 1
    Glad I could add more value than removing a _ :D. – John Powell Oct 1 '14 at 9:51
  • Although this works, I found that this was not exactly what I was looking for and reformulated my question here – doublebyte Oct 1 '14 at 11:02

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.