Various bugs in relational operations (spatial predicates)
— at Version 3
- Assertion failure in relate(L,A) for invalid polygon containing spike.
"LINESTRING(6 3,9 0)"
"POLYGON((0 0,5 8,6 1,6 3,8 1,5 4,9 6,2 5,7 4,1 7,0 0))"
- Invalid result of relate(L,A), the second Ls is not handled properly.
"MULTILINESTRING((6 6,15 15),(0 0, 7 7))"
"POLYGON((5 5,5 15,15 15,15 5,5 5))"
- Invalid result of relate(L,MPoly) because it assumes that a single u/u for an Areal ring means that the Linear geometry is in the exterior of Areal.
"LINESTRING(5 5,0 0,10 0)"
"MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 0,0 -10,-10 -10,-10 0,0 0)))"
- Invalid result of relate(A,MPoly), similar to the above.
"MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 0,0 -10,-10 -10,-10 0,0 0)))"
"POLYGON((0 0,0 5,5 5,5 0,0 0))"
- Invalid result of relate(MLs,A), second entering linestring not handled properly.
"MULTILINESTRING((4 10, 3 10, 10 6),(5 0, 7 5, 9 10))"
"POLYGON((0 0,0 10,10 10,10 0,5 5,0 0))"
- Invalid result of relate(Ls,MLs) for a collinear spike contained in one Ls of a MLs and touching the other one (blocking turn detected as exit).
"LINESTRING(1 1, 5 5, 4 4)"
"MULTILINESTRING((2 5, 7 5, 8 3, 6 3, 4 0),(0 0,10 10))"
Fixes: