Merging linear overlay results?

Regina Obe lr at pcorp.us
Thu Jun 25 04:27:14 PDT 2026


My vote is to keep it on for all cases.

 

From: Daniel Baston <dbaston at gmail.com> 
Sent: Wednesday, June 24, 2026 5:38 PM
To: Daniel Baston <dbaston at gmail.com>; GEOS Development List <geos-devel at lists.osgeo.org>
Subject: Re: Merging linear overlay results?

 

I'd like to get this behavior in 3.15. Is the consensus that it needs to be opt-in, via "WithParams" variants of all the GEOS overlay functions? Or should we explore turning it on in all cases, since many expected overlay results will change in 3.15 anyway? (https://github.com/libgeos/geos/pull/1412)

 

As an example, the proposed behavior is

 

geosop intersection -a "POLYGON ((8 2, 10 0, 0 0, 0 10, 2 10, 3.67 8, 4 6, 5.5 3, 8 2))" -b "POLYGON ((2 10, 3.67 8, 4 6, 5.5 3, 8 2, 10 0, 10 10, 2 10))"

LINESTRING (2 10, 3.67 8, 4 6, 5.5 3, 8 2, 10 0, 8 2)

 

in place of the current result:

 

MULTILINESTRING ((8 2, 10 0), (2 10, 3.67 8), (3.67 8, 4 6), (4 6, 5.5 3), (5.5 3, 8 2))

 

Dan

 

 

 

On Thu, May 21, 2026 at 7:05 AM Sandro Santilli <strk at kbt.io <mailto:strk at kbt.io> > wrote:

Just to add that PostGIS Topology also does the post-overlay linemerge:

https://gitea.osgeo.org/postgis/postgis/src/branch/master/liblwgeom/topo/lwgeom_topo.c#L7520-L7534

Allowing to request such behavior earlier would help performances there too,
I'm in favour of such addition

--strk;


On Wed, May 20, 2026 at 09:22:45AM -0400, Daniel Baston wrote:
> Hi,
> 
> I've noticed that the GEOS overlay code has the capability to merge linear
> output geometries, using LineBuilder::addResultLinesMerged. However, this
> capability has never been enabled. GEOS clients ([1], [2]) sometimes end up
> calling GEOSLineMerge as a follow-up step to overlay, but this is
> inefficient and cumbersome. (Among other things, GEOSLineMerge silently
> drops any non-linear inputs.)
> 
> Does it make sense to consider enabling this behavior? It would be helpful
> for reconstructing CompoundCurves, which have no way to retain their
> complex parentage information through the noding journey. I guess we would
> need a GEOSUnionWithParams, GEOSIntersectionWithParams, etc...
> 
> Dan
> 
> [1]
> https://github.com/qgis/QGIS/blob/b298119a5b09ae3903596ec2ffaf8aaff7ba78a3/src/core/geometry/qgsgeos.cpp#L1985
> [2]
> https://github.com/OSGeo/gdal/blob/ad495515b681bfb5f660f5de17e9ef1c2c8f153f/apps/gdalalg_vector_dissolve.cpp#L134

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geos-devel/attachments/20260625/974c3015/attachment-0001.htm>


More information about the geos-devel mailing list