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