Improving ST_Polygonize
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 re-use.
ST_Polygonize
is a very useful function. 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, however, is that it does not return a multipolygon, but instead returns a GeometryCollections. GeometryCollections 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 GeometryCollections.
The pattern we will formalize here is the commonly recommended approach for changing GeometryCollections into mulipolygons when it is appropriate to do so. This approach will be useful not only for...