Use spatial index to check shell nesting in IsValidOp #256
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.
This PR introduces an
IndexedNestedShellTester
class, modelled afterIndexedNestedRingTester
, to check shell nesting as part of MultiPolygonvalidity checking. Relevant methods are yanked out of
IsValidOp
then updated to use indexes to locate rings relative to each other
(STRtree) and to check point containment within a ring
(IndexedPointOnAreaLocator).
You need the right geometry for this to matter.
This commit reduces GEOSisValid runtime for a test geometry (GADM
boundary of Australia) from about 85 seconds to less than 1 second. It
does not appreciably change runtime for TIGER counties, HydroBASINS
Level 5, or a sample parcel dataset.