2

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? :-(

1
  • Hola, a un otro del SIG de Barcelona aunque soy inglés. Commented Oct 1, 2014 at 9:51

1 Answer 1

2

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?

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

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.