Changeset 19336 in josm for trunk/src/org/openstreetmap/josm/tools
- Timestamp:
- 2025-02-25T17:29:20+01:00 (14 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/tools/Geometry.java
r19272 r19336 18 18 import java.util.LinkedHashSet; 19 19 import java.util.List; 20 import java.util.Map; 20 21 import java.util.Set; 21 22 import java.util.TreeSet; … … 33 34 import org.openstreetmap.josm.data.osm.INode; 34 35 import org.openstreetmap.josm.data.osm.IPrimitive; 36 import org.openstreetmap.josm.data.osm.IRelation; 35 37 import org.openstreetmap.josm.data.osm.IWay; 36 38 import org.openstreetmap.josm.data.osm.MultipolygonBuilder; … … 1192 1194 polygonArea = getArea(polygon.getNodes()); 1193 1195 } 1194 Multipolygon mp = new Multipolygon((Relation) p); 1196 Multipolygon mp = p.getDataSet() != null ? MultipolygonCache.getInstance().get((Relation) p) : new Multipolygon((Relation) p); 1195 1197 boolean inside = true; 1196 1198 // a (valid) multipolygon is inside the polygon if all outer rings are inside … … 1221 1223 */ 1222 1224 public static List<IPrimitive> filterInsideMultipolygon(Collection<IPrimitive> primitives, Relation multiPolygon) { 1225 return filterInsideMultipolygon(primitives, multiPolygon, null); 1226 } 1227 1228 /** 1229 * Find all primitives in the given collection which are inside the given multipolygon. Members of the multipolygon are 1230 * ignored. Unclosed ways and multipolygon relations with unclosed outer rings are ignored. 1231 * @param primitives the primitives 1232 * @param multiPolygon the multipolygon relation 1233 * @param cache The cache to avoid calculating joined inner/outer ways multiple times (see {@link MultipolygonBuilder#joinWays(Relation)}) 1234 * @return a new list containing the found primitives, empty if multipolygon is invalid or nothing was found. 1235 * @since xxx 1236 */ 1237 public static List<IPrimitive> filterInsideMultipolygon(Collection<IPrimitive> primitives, Relation multiPolygon, 1238 Map<IRelation<?>, Pair<List<JoinedPolygon>, List<JoinedPolygon>>> cache) { 1223 1239 List<IPrimitive> res = new ArrayList<>(); 1224 1240 if (primitives.isEmpty()) … … 1227 1243 final Pair<List<JoinedPolygon>, List<JoinedPolygon>> outerInner; 1228 1244 try { 1229 outerInner = MultipolygonBuilder.joinWays(multiPolygon); 1245 outerInner = MultipolygonBuilder.joinWays(cache, multiPolygon); 1230 1246 } catch (MultipolygonBuilder.JoinedPolygonCreationException ex) { 1231 1247 Logging.trace(ex);
Note:
See TracChangeset
for help on using the changeset viewer.
