public class MultipolygonBuilder extends Object
| Modifier and Type | Class and Description |
|---|---|
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 |
|---|---|
List<MultipolygonBuilder.JoinedPolygon> |
innerWays
List of inner ways
|
List<MultipolygonBuilder.JoinedPolygon> |
outerWays
List of outer ways
|
private static Pair<Integer,ExecutorService> |
THREAD_POOL |
| Constructor and Description |
|---|
MultipolygonBuilder()
Constructs a new empty
MultipolygonBuilder. |
MultipolygonBuilder(List<MultipolygonBuilder.JoinedPolygon> outerWays,
List<MultipolygonBuilder.JoinedPolygon> innerWays)
Constructs a new
MultipolygonBuilder initialized with given ways. |
| Modifier and Type | Method and Description |
|---|---|
private static Pair<Boolean,List<MultipolygonBuilder.JoinedPolygon>> |
findInnerWaysCandidates(MultipolygonBuilder.JoinedPolygon outerWay,
Collection<MultipolygonBuilder.JoinedPolygon> boundaryWays) |
private static List<MultipolygonBuilder.PolygonLevel> |
findOuterWaysMultiThread(List<MultipolygonBuilder.JoinedPolygon> boundaryWays)
Collects outer way and corresponding inner ways from all boundaries.
|
static List<MultipolygonBuilder.JoinedPolygon> |
joinWays(Collection<Way> ways)
Joins the given
ways to multipolygon rings. |
private String |
makeFromPolygons(List<MultipolygonBuilder.JoinedPolygon> polygons)
This method analyzes which ways are inner and which outer.
|
String |
makeFromWays(Collection<Way> ways)
Splits ways into inner and outer JoinedWays.
|
private static final Pair<Integer,ExecutorService> THREAD_POOL
public final List<MultipolygonBuilder.JoinedPolygon> outerWays
public final List<MultipolygonBuilder.JoinedPolygon> innerWays
public MultipolygonBuilder(List<MultipolygonBuilder.JoinedPolygon> outerWays, List<MultipolygonBuilder.JoinedPolygon> innerWays)
MultipolygonBuilder initialized with given ways.outerWays - The outer waysinnerWays - The inner wayspublic MultipolygonBuilder()
MultipolygonBuilder.public String makeFromWays(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 List<MultipolygonBuilder.JoinedPolygon> joinWays(Collection<Way> ways) throws MultipolygonBuilder.JoinedPolygonCreationException
ways to multipolygon rings.ways - the ways to join.MultipolygonBuilder.JoinedPolygonCreationException - if the creation fails.private String makeFromPolygons(List<MultipolygonBuilder.JoinedPolygon> polygons)
innerWays and outerWays to the result.polygons - polygons to analyzenull if all fine.private static Pair<Boolean,List<MultipolygonBuilder.JoinedPolygon>> findInnerWaysCandidates(MultipolygonBuilder.JoinedPolygon outerWay, Collection<MultipolygonBuilder.JoinedPolygon> boundaryWays)
private static List<MultipolygonBuilder.PolygonLevel> findOuterWaysMultiThread(List<MultipolygonBuilder.JoinedPolygon> boundaryWays)
boundaryWays - boundary waysnull if intersection found.