Class MultipolygonTest.PolygonLevelFinder
- java.lang.Object
-
- org.openstreetmap.josm.data.validation.tests.MultipolygonTest.PolygonLevelFinder
-
- Enclosing class:
- MultipolygonTest
private static class MultipolygonTest.PolygonLevelFinder extends java.lang.Object
Find nesting levels of polygons. Logic taken from class MultipolygonBuilder, uses different structures.
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Set<Node>
sharedNodes
-
Constructor Summary
Constructors Constructor Description PolygonLevelFinder(java.util.Set<Node> sharedNodes)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private java.util.List<Multipolygon.PolyData>
findInnerWaysCandidates(Multipolygon.PolyData outerCandidate, java.util.List<Multipolygon.PolyData> polygons)
Check if polygon is an out-most ring, if so, collect the inners(package private) java.util.List<MultipolygonTest.PolygonLevel>
findOuterWays(java.util.List<Multipolygon.PolyData> allPolygons)
private java.util.List<MultipolygonTest.PolygonLevel>
findOuterWaysRecursive(int level, java.util.List<Multipolygon.PolyData> polygons)
private Node
getNonIntersectingNode(Multipolygon.PolyData pd1, Multipolygon.PolyData pd2)
Find node of pd2 which is not an intersection node with pd1.private void
processOuterWay(int level, java.util.List<Multipolygon.PolyData> polygons, java.util.List<MultipolygonTest.PolygonLevel> result, Multipolygon.PolyData pd)
-
-
-
Field Detail
-
sharedNodes
private final java.util.Set<Node> sharedNodes
-
-
Constructor Detail
-
PolygonLevelFinder
PolygonLevelFinder(java.util.Set<Node> sharedNodes)
-
-
Method Detail
-
findOuterWays
java.util.List<MultipolygonTest.PolygonLevel> findOuterWays(java.util.List<Multipolygon.PolyData> allPolygons)
-
findOuterWaysRecursive
private java.util.List<MultipolygonTest.PolygonLevel> findOuterWaysRecursive(int level, java.util.List<Multipolygon.PolyData> polygons)
-
processOuterWay
private void processOuterWay(int level, java.util.List<Multipolygon.PolyData> polygons, java.util.List<MultipolygonTest.PolygonLevel> result, Multipolygon.PolyData pd)
-
findInnerWaysCandidates
private java.util.List<Multipolygon.PolyData> findInnerWaysCandidates(Multipolygon.PolyData outerCandidate, java.util.List<Multipolygon.PolyData> polygons)
Check if polygon is an out-most ring, if so, collect the inners- Parameters:
outerCandidate
- polygon which is checkedpolygons
- all polygons- Returns:
- null if outerCandidate is inside any other polygon, else a list of inner polygons (which might be empty)
-
getNonIntersectingNode
private Node getNonIntersectingNode(Multipolygon.PolyData pd1, Multipolygon.PolyData pd2)
Find node of pd2 which is not an intersection node with pd1.- Parameters:
pd1
- 1st polygonpd2
- 2nd polygon- Returns:
- node of pd2 which is not an intersection node with pd1 or null if none is found
-
-