In this short recipe, we will be using a common coding pattern in use when geometries are being constructed with ST_Polygonize
and formalizing it into a function for reuse.
ST_Polygonize
is a very useful function. You can pass a set of unioned lines or an array of lines to ST_Polygonize
, and the function will construct polygons from the input. ST_Polygonize
does so aggressively insofar as it will construct all possible polygons from the inputs. One frustrating aspect of the function is that it does not return a multi-polygon, but instead returns a geometry collection. Geometry collections can be problematic in third-party tools for interacting with PostGIS as so many third party tools don't have mechanisms in place for recognizing and displaying geometry collections.
The pattern we will formalize here is the commonly recommended approach for changing geometry collections into mutlipolygons when it is appropriate to do so. This approach will be useful not only for ST_Polygonize...