Clarification on ST_CoverageClean Parameters: snappingDistance and gapMaximumWidth

Paul Ramsey pramsey at cleverelephant.ca
Tue Sep 23 09:21:46 PDT 2025


If you want to pose your question closer to the actual code that implements it, asking in the GEOS list might be good. In general, as Greg notes, a simple example geometry demonstrating your misgivings, if such a thing exists, is a great way to seed a discussion. Particularly for something as “personal” as coverage cleaning, there is a lot of opinion involved in what is “correct” for any given input.

ATB,
P

> On Sep 23, 2025, at 5:24 AM, Douglas Fan <douglas.mhfan at gmail.com> wrote:
> 
> Dear PostGIS Developers and Users,
> 
> First of all, thank you for the development of the new ST_CoverageClean function in PostGIS 3.6.0. It’s a fantastic addition that has already helped a lot in my work with polygonal coverages. I really appreciate the effort that went into making this tool available.
> While testing the function, I’ve encountered some behaviors that I’d like to better understand, particularly regarding the snappingDistance and gapMaximumWidth parameters.
> 
> From the documentation, I understand that:
> 1. snappingDistance controls vertex snapping, with -1 applying an automatic distance, and 0.0 disabling snapping.
> 2. gapMaximumWidth closes gaps smaller than the specified tolerance.
> 
> However, during testing with various combinations (e.g., snappingDistance set to -1, 0.0, 1, 2 and gapMaximumWidth set to 0, 1, 2), I noticed:
> 1. Even when snappingDistance is explicitly set to 0.0, small sliver vertices still appear to be snapped or altered when gapMaximumWidth is greater than 0.
> 2. Slivers that are thinner than the gapMaximumWidth are removed, even when they are not actual gaps or overlaps. 
> 
> This behavior seems counterintuitive, as I expected no snapping to occur with snappingDistance = 0.0. Could this be due to internal gap cleaning logic that also affects vertex positions? Or is there an implicit snapping step tied to gapMaximumWidth?
> 
> I’d be grateful for any insights into:
> 
> 1. How do these two parameters interact?
> 2. Best practices or recommended workflows for cleaning polygonal coverages with minimal geometry distortion.
> 3. Any known edge cases or limitations when using ST_CoverageClean.
> 4. Whether gapMaximumWidth also triggers geometry simplification or sliver removal beyond gap closing.
> 
> Thanks in advance for your help and for the continued development of PostGIS.
> 
> Best regards,
> Man Ho Fan



More information about the postgis-users mailing list