Refuse silent COMPOUNDCURVE chord flatten (ticket 30) - #131
Merged
grootstebozewolf merged 4 commits intoSep 3, 2026
Conversation
SQL/MM ISO/IEC 13249-3 COMPOUNDCURVE (WKB 9) stays a COMPOUNDCURVE. Stock OverlayNG / OverlayNGRobust / OverlayNGTest refuse control-polygon noding. Leftover OverlayNGCurve cells take the named APPROX path (isApproximate / toLinear). MoveTool keeps members. Off #7 on feature/zoo. Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
Drop the jts-core Polygon-subclass fake (it is not a CurvePolygon). Walk public ring accessors first, then declared methods, and assert containsCompoundCurve on a real COMPOUNDCURVE shell in jts-curve. Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
CurvePolygon shells refuse with the parent type name; the message still cites ISO/IEC 13249-3 COMPOUNDCURVE (WKB 9). Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
Inspect of a COMPOUNDCURVE shell is a refuse (ISO/IEC 13249-3 WKB 9). Skip the dishonest Exec contract; pin unionIntSymDiff refuse; treat an OverlayNGTest refuse as a named miss if playback still hits it. Co-authored-by: Jeroen Bloemscheer <grootstebozewolf@users.noreply.github.com>
grootstebozewolf
marked this pull request as ready for review
September 3, 2026 01:48
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CRV-CC ticket 30: COMPOUNDCURVE flatten-elimination. Off JTS #7 /
feature/sfa-curve-rgr. Base isfeature/zoo.SQL/MM
COMPOUNDCURVE(ISO/IEC 13249-3 §4.2.13 / §7.10.1, WKB 9) stays aCOMPOUNDCURVE. Silent chord Flatten for overlay / TestBuilder consume is a refuse. Named linear fallback stays named:toLinear/Linearize/ OverlayNGCurve APPROX withisApproximate()=true.Flatten sites found
Verified the wayfinder hypothesis; discarded the parts that were already honest.
isApproximate()=true+CurveOps.linearisewarn. Test pins it.OverlayNG/OverlayNGRobustgetCoordinates()/LineStringextract of CompoundCurve and CC-shelled CurvePolygonSqlMmTypes.refuseCompoundCurveChord)OverlayNGTest.*OverlayNGTest.unionIntSymDiff.half-moon.pr7unionIntSymDiffrefuseOverlayNGFunctions/linearizeForOpstoLinearbut no warnCurveLinearizationStrategy.warnLinearizedGeometryVertexMoverlinearizeForHull/ CurveExact; leftover of locationtech#424424-b.refuseFlatten/IoFlattenHonestyPatches
SqlMmTypes.refuseCompoundCurveChord— type-name walk (WKB 9) plus CurvePolygon structural-ring reflect so core does not depend on jts-curve. Public accessors first; declared walk as fallback.OverlayNG.getResult+EdgeNodingBuilder.addcall the refuse.OverlayNGRobustrethrowsIllegalArgumentException— a refuse is not a noding failure to snap-round.OverlayNGTestFunctionsrefuses CompoundCurve consume.CurveFunctions.linearizewarns (namedtoLinear).CompoundCurvejavadoc cites 13249-3, not 19125-2.OverlayNGTest/unionIntSymDiff.half-moon.pr7.jsonskipped; playback treats an OverlayNGTest refuse as a named miss.Tests run
jts-app included this leftover. GitHub CI
build-and-testis green on93be9ddb(4/4 checks).jts-core:SqlMmTypesTest5,OverlayNGTest52,OverlayNGRobustTest7,OverlayNGEmptyDisjointTest12 — 76 PASSjts-curve:OverlayNGCurveCompoundCurveFlattenHonestyTest5,CompoundCurveShellOverlayTest28,SqlMm13249CurveSpecTest24 (SQL/MM ISO/IEC 13249-3 curve types: close remaining spec gaps #130, no regress),IoFlattenHonestyTest8, OverlayNGCurve kit suite 52 — PASSjts-appleftover suite:OverlayNGTestFunctionsCompoundCurveFlattenTest5,CurveFunctionsCompoundCurveFlattenTest2,CompoundCurveMoveToolBasicsTest2,OverlayStaticCurveTest15 (CircularString inspect stays raw),HullFunctionsCurveTest12,IOUtilFlattenHonestyTest3,TbAppiumPr7PlaybackTest1,TbAppiumSequenceContractTest4 — PASSEarlier CI reds on
cc3a4280/bb6ca330were the fake CurvePolygon core stand-in and the half-moon OverlayNG inspect Exec. Both are closed on this head.HOLDs refused (explicit)
424-b/ H-CC hull (stays tracker 424 / JTS [visual-qa] H-CC · h-cc-1 #6).508-*/615-b/ LECFlattenRow / nested-CC splice.SHARED_SNAPPED_RAY. Do not start 74-file N-SS. Do not remint ADR-0004.feature/zoo; do not regress it.This is off #7, on
feature/zoo. Do not merge into PR #7 /feature/sfa-curve-rgr. Do not target master.