feat: curve A/P PIP for collections (rebase of #1322) - #1502
feat: curve A/P PIP for collections (rebase of #1322)#1502grootstebozewolf wants to merge 4 commits into
Conversation
Next rung — local verification + Contains semantics fixCI status: workflows show Local self-check (WSL, Release,
Extra commit on this PR: DE-9IM Contains for curved A/P was using “in or on” (
@dbaston (or any maintainer): please approve CI when you have a moment. Assisted-by: xAI Grok |
Rebase of dbaston#1322 onto current main: - SimplePointInAreaLocator: isAnyPointContained / isEveryPointContained - Geometry: curved contains / intersects / disjoint for A/P (incl. MultiSurface) - CAPI tests: MultiPoint×MultiSurface, PostGIS #5832 - Keep existing automatic-linearization tests (merge conflicts resolved) Additions on the rebase: - Empty point sets: isAny → false, isEvery → true (vacuous); null-safe getCoordinate - Empty MULTIPOINT / POINT EMPTY CAPI tests for contains / intersects / disjoint Co-authored-by: Dan Baston <dbaston@gmail.com> Assisted-by: xAI Grok
isEveryPointContained treated boundary as inside (covers-like). Contains needs II=T: empty point sets false; boundary-only multipoints false; boundary+interior true. Local: capi::GEOSContains 14/14, GEOSIntersects 17/17, GEOSDisjoint 5/5. Assisted-by: xAI Grok
886eaf0 to
4f7ec39
Compare
Rebased onto post-#1500 main
Force-pushed Local (WSL Release) after rebase: Next GEOS rung (oracle-driven): #1505 for covers L/P float robustness (#968). Assisted-by: xAI Grok |
|
Please try to limit the verbosity of these pull requests. I'm going to close this -- I don't think these special-case implementations are worth it when a curve-aware predicate engine should be in the future. |
Summary
Rebase of @dbaston’s #1322 onto current
main(that PR is CONFLICTING). Same feature, merge conflicts resolved, plus a small empty-point-set hardening.Behaviour (from #1322)
SimplePointInAreaLocator::isAnyPointContained/isEveryPointContainedfor multi-point vs multi-surfacecontains/intersects/disjoint(incl.MultiSurface)Extra on this rebase
isAny→ false,isEvery→ true (vacuous); null-safegetCoordinateMULTIPOINT/POINT EMPTYon contains / intersects / disjointSupersedes / unblocks #1322. Happy for @dbaston to take over authorship if preferred.
Test plan
Co-authored-by: Dan Baston (original #1322)
Assisted-by: xAI Grok (rebase + empty multipoint guards)