[postgis-devel] Should geomunion() compress output geometry type ?

strk strk at keybit.net
Tue Mar 23 08:36:43 PST 2004


On Tue, Mar 23, 2004 at 09:58:27AM -0500, Carl Anderson wrote:
> strk wrote:
> 
> > Current geomunion() implementation issues a compressType() 
> > call as the final step. The compressType() function will
> > make Multi*-typed geometries with one element become
> > Single*-typed.
> > 
> > This might not be what you need.
> > The bad thing is that you end up fighting against table constraints.
> > (you need a multipolygon, no matter how many resulting polygons are
> >  in the risult geometry)
> > 
> > What about making the compressType() function available
> > as a compress(GEOMETRY) function ?
> > Or - maybe - introduce a function to make Single-typed geoms Multi-typed ?
> > 
> 
> There is a bigger problem of geometry type casting up and down and 
> filtering that needs help.
> 
> while geomunion() can return a lesser subtype (Polygon vs MultiPolygon)
> difference(), and symdifference() can return ANY geometry type
>      Polygon / Polygon  can return (properly) Point, LineString, 
> Polygon, GeometryCollection or the Multi form of each.
> 
> If I want of silently ignore the Line and Point return types as well as 
> extract Polygons from Collections I would need a 
> geometry_filter(geometry,'type') function that would
> 
> downcast / upcast geometry types into a requested geometry type as well 
> as filter types that cannot be coalesced into the desired form.
> 
> something like
>     new_geom = geometry_filter(geom_union(a.geom1, b.geom2),'MULTIPOLYGON');
> 
> or also upcast linestrings that are closed
> 
>     new_geom = geometry_filter(interiorringn(a.geom,1),'POLYGON')
> 
> 
> A crude example of such an function (implemented in plpgsql) is attached
> 
> 
> 
> Carl Anderson
> GIS Manager, Fulton County E&CD
> 404.730.8026
> carl.anderson at co.fulton.ga.us

I haven't tried the attached function, but the idea seems good to me.
I think it should be part of the postgis codebase as a C function.
Since LWGEOM is coming though, I'm afraid we'll have to wait until
the job is finished.

--strk;



More information about the postgis-devel mailing list