Fix degenerate linestring relation on boundary of areal#1474
Conversation
|
Thanks for the PR, is it a bit larger than earlier? Anyway, that's not a problem, will continue the review later |
Adding the handling of the interrupt flags for this case now made it a bit bigger yes |
tinko92
left a comment
There was a problem hiding this comment.
Thank you for the PR. The changes look suitable to me for but the goal of this PR is but I have not yet run the full test suite locally.
I have two general questions on this approach:
- Have you considered your approach against an implementation on the dispatch level, i.e. before the dispatch to the detail/relate/linear_areal code test the linestring for degeneracy and call the detail/relate/point_geometry code in case of degeneracy? This way may be easier and and more clear to wrap into a macro guard to allow restoring the old behaviour.
- Related to this (and mentioned in another code comment) since we change behavior here, do we want a macro that can be defined to restore the old behavior?
I'm not sure if this is necessary for this fix. |
My concern with that was that checking the linestring for degeneracy didn't seem completely trivial. Checking |
In general we dispatch by type, not by contents. So I think the choice made here is the correct one. |
barendgehrels
left a comment
There was a problem hiding this comment.
Thanks for the improvement!
tinko92
left a comment
There was a problem hiding this comment.
In general we dispatch by type, not by contents.
Sorry, I was imprecise, I was thinking of right after the type dispatch, to keep it more easily separable by a macro if details change later. But if we don't need a macro for to preserve the prior behaviour as an option, then that's moot. I approve the current state (with the release calendar in mind in case you want to merge it for 1.92).
|
@mjacobse is this PR as is OK? I don't think @mjacobse can, so we'll have to take care |
|
OK for me, yes 👍 |
Basically makes it so
covered_byreturnstrueforLINESTRING(0 0,0 0)andPOLYGON((0 0, 0 2, 2 2, 2 0, 0 0))instead offalseas it did previously, which could be quite surprising.Fixes #1473
The bit flags for interrupt aren't exactly pretty, but it follows the present implementation.