We appear to have talked about this before… https://github.com/libgeos/geos/pull/866
> On May 29, 2025, at 11:36 AM, Paul Ramsey <pram...@cleverelephant.ca> wrote: > > I am wondering the geometry argument for coverage cleaning… my current white > board API looks like this > > > typedef struct { > double snappingDistance; > int overlapMergeStrategy; > double gapMaximumWidth > } GEOSCoverageCleanParams; > > > GEOSCoverageCleanerParams* > GEOSCoverageCleanParams_create(); > > void > GEOSCoverageCleanParams_destroy( > GEOSCoverageCleanerParams* params); > > int > GEOSCoverageCleanParams_setSnappingDistance( > GEOSCoverageCleanerParams* params, > double snappingDistance); > > int > GEOSCoverageCleanParams_setGapMaximumWidth( > GEOSCoverageCleanerParams* params, > double gapMaximumWidth); > > int > GEOSCoverageCleanParams_setOverlapMergeStrategy( > GEOSCoverageCleanerParams* params, > int overlapMergeStrategy); > > GEOSGeometry ** > GEOSCoverageCleanWithParams( > GEOSCoverageCleanerParams* params, > GEOSGeometry** cov, > int covSize); > > GEOSGeometry ** > GEOSCoverageClean( > GEOSGeometry ** cov, > int covSize); > > But I just noticed that the API for coverage simplification is this: > > extern GEOSGeometry GEOS_DLL * GEOSCoverageSimplifyVW( > const GEOSGeometry* input, > double tolerance, > int preserveBoundary); > > So using a collection on input and output. There’s a little extra overhead in > marshalling it together but not a lot. One aspect of coverage cleaning is > that polygons could entirely disappear… right now they’d come out as nulls in > the geometry list, but I guess we could return them as empties? I feel like > maybe we already talked this over for the simplification API. > > P >