@Override protected Optional<CheckFlag> flag(final AtlasObject object) { final Area building = (Area) object; final Iterable<Edge> intersectingEdges = Iterables.filter(building.getAtlas() .edgesIntersecting(building.bounds(), this.intersectsCoreWayInvalidly(building)), ignoreTags()); final CheckFlag flag = new CheckFlag(getTaskIdentifier(building)); flag.addObject(building); this.handleIntersections(intersectingEdges, flag, building); return flag.getPolyLines().size() > 1 ? Optional.of(flag) : Optional.empty(); }
@Test public void testFull() { final Atlas atlas = this.rule.getAtlas(); final Area source = atlas.area(27); final CompleteArea result = CompleteArea.from(source); Assert.assertEquals(source.getIdentifier(), result.getIdentifier()); Assert.assertEquals(source.bounds(), result.bounds()); Assert.assertEquals(source.asPolygon(), result.asPolygon()); Assert.assertEquals(source.getTags(), result.getTags()); Assert.assertEquals( source.relations().stream().map(Relation::getIdentifier) .collect(Collectors.toSet()), result.relations().stream().map(Relation::getIdentifier) .collect(Collectors.toSet())); }
final CompleteArea result = CompleteArea.shallowFrom(source); Assert.assertEquals(source.getIdentifier(), result.getIdentifier()); Assert.assertEquals(source.bounds(), result.bounds()); result.withPolygon(Polygon.TEST_BUILDING); Assert.assertEquals(Rectangle.forLocated(source.bounds(), Polygon.TEST_BUILDING), result.bounds()); final Map<String, String> tags = Maps.hashMap("key", "value"); Assert.assertEquals(Rectangle.forLocated(source.bounds(), Polygon.SILICON_VALLEY), result.bounds());
building.bounds(), area -> BuildingTag.isBuilding(area) && building.getIdentifier() != area.getIdentifier()