public class MultipolygonBuilder extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
MultipolygonBuilder.IntersectionMatrix
Helper class to avoid unneeded costly intersection calculations.
|
static class |
MultipolygonBuilder.JoinedPolygon
Represents one polygon that consists of multiple ways.
|
static class |
MultipolygonBuilder.JoinedPolygonCreationException
An exception indicating an error while joining ways to multipolygon rings.
|
(package private) static class |
MultipolygonBuilder.PolygonLevel
Helper storage class for finding findOuterWays
|
private static class |
MultipolygonBuilder.Worker |
Modifier and Type | Field and Description |
---|---|
java.util.List<MultipolygonBuilder.JoinedPolygon> |
innerWays
List of inner ways
|
java.util.List<MultipolygonBuilder.JoinedPolygon> |
outerWays
List of outer ways
|
private static java.util.concurrent.ForkJoinPool |
THREAD_POOL |
Constructor and Description |
---|
MultipolygonBuilder()
Constructs a new empty
MultipolygonBuilder . |
MultipolygonBuilder(java.util.List<MultipolygonBuilder.JoinedPolygon> outerWays,
java.util.List<MultipolygonBuilder.JoinedPolygon> innerWays)
Constructs a new
MultipolygonBuilder initialized with given ways. |
Modifier and Type | Method and Description |
---|---|
private static Pair<java.lang.Boolean,java.util.List<MultipolygonBuilder.JoinedPolygon>> |
findInnerWaysCandidates(MultipolygonBuilder.IntersectionMatrix cache,
MultipolygonBuilder.JoinedPolygon outerWay,
java.util.Collection<MultipolygonBuilder.JoinedPolygon> boundaryWays) |
private static java.util.List<MultipolygonBuilder.PolygonLevel> |
findOuterWaysMultiThread(java.util.List<MultipolygonBuilder.JoinedPolygon> boundaryWays)
Collects outer way and corresponding inner ways from all boundaries.
|
static java.util.List<MultipolygonBuilder.JoinedPolygon> |
joinWays(java.util.Collection<Way> ways)
Joins the given
ways to multipolygon rings. |
static Pair<java.util.List<MultipolygonBuilder.JoinedPolygon>,java.util.List<MultipolygonBuilder.JoinedPolygon>> |
joinWays(Relation multipolygon)
Joins the given
multipolygon to a pair of outer and inner multipolygon rings. |
private java.lang.String |
makeFromPolygons(java.util.List<MultipolygonBuilder.JoinedPolygon> polygons)
This method analyzes which ways are inner and which outer.
|
java.lang.String |
makeFromWays(java.util.Collection<Way> ways)
Splits ways into inner and outer JoinedWays.
|
private static final java.util.concurrent.ForkJoinPool THREAD_POOL
public final java.util.List<MultipolygonBuilder.JoinedPolygon> outerWays
public final java.util.List<MultipolygonBuilder.JoinedPolygon> innerWays
public MultipolygonBuilder(java.util.List<MultipolygonBuilder.JoinedPolygon> outerWays, java.util.List<MultipolygonBuilder.JoinedPolygon> innerWays)
MultipolygonBuilder
initialized with given ways.outerWays
- The outer waysinnerWays
- The inner wayspublic MultipolygonBuilder()
MultipolygonBuilder
.public java.lang.String makeFromWays(java.util.Collection<Way> ways)
innerWays
and outerWays
to the result.
TODO: Currently cannot process touching polygons. See code in JoinAreasAction.ways
- ways to analyzenull
if all fine.public static Pair<java.util.List<MultipolygonBuilder.JoinedPolygon>,java.util.List<MultipolygonBuilder.JoinedPolygon>> joinWays(Relation multipolygon)
multipolygon
to a pair of outer and inner multipolygon rings.multipolygon
- the multipolygon to join.MultipolygonBuilder.JoinedPolygonCreationException
- if the creation fails.public static java.util.List<MultipolygonBuilder.JoinedPolygon> joinWays(java.util.Collection<Way> ways)
ways
to multipolygon rings.ways
- the ways to join.MultipolygonBuilder.JoinedPolygonCreationException
- if the creation fails.private java.lang.String makeFromPolygons(java.util.List<MultipolygonBuilder.JoinedPolygon> polygons)
innerWays
and outerWays
to the result.polygons
- polygons to analyzenull
if all fine.private static Pair<java.lang.Boolean,java.util.List<MultipolygonBuilder.JoinedPolygon>> findInnerWaysCandidates(MultipolygonBuilder.IntersectionMatrix cache, MultipolygonBuilder.JoinedPolygon outerWay, java.util.Collection<MultipolygonBuilder.JoinedPolygon> boundaryWays)
private static java.util.List<MultipolygonBuilder.PolygonLevel> findOuterWaysMultiThread(java.util.List<MultipolygonBuilder.JoinedPolygon> boundaryWays)
boundaryWays
- boundary waysnull
if intersection found.