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

Reply via email to