CoverageClean in CAPI

Paul Ramsey pramsey at cleverelephant.ca
Thu May 29 11:36:50 PDT 2025


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



More information about the geos-devel mailing list