@Override public Map<String, String> getTags() { return this.getRepresentativeSubArea().getTags(); }
@Override public Map<String, String> getTags() { return subArea().getTags(); }
public static CompleteArea from(final Area area) { return new CompleteArea(area.getIdentifier(), area.asPolygon(), area.getTags(), area.relations().stream().map(Relation::getIdentifier).collect(Collectors.toSet())); }
@Override public LocationIterableProperties toGeoJsonBuildingBlock() { final Map<String, String> tags = getTags(); tags.put("identifier", String.valueOf(getIdentifier())); tags.put("osmIdentifier", String.valueOf(getOsmIdentifier())); tags.put("itemType", String.valueOf(getType())); final Optional<String> shardName = getAtlas().metaData().getShardName(); shardName.ifPresent(shard -> tags.put("shard", shard)); final StringList parentRelations = new StringList(); this.relations().forEach(relation -> { final RelationMember member = relation.members().get(getIdentifier(), getType()); parentRelations.add(member.getRelationIdentifier() + "-" + member.getRole()); }); if (!parentRelations.isEmpty()) { tags.put("parentRelations", parentRelations.join(", ")); } return new GeoJsonBuilder.LocationIterableProperties(getClosedGeometry(), tags); }
private void writeAreasToBuilder(final Atlas atlas, final ProtoAtlas.Builder protoAtlasBuilder) { long numberOfAreas = 0; for (final Area area : atlas.areas()) { final ProtoArea.Builder protoAreaBuilder = ProtoArea.newBuilder(); protoAreaBuilder.setId(area.getIdentifier()); final List<ProtoLocation> protoLocations = area.asPolygon().stream() .map(ProtoAtlasBuilder.PROTOLOCATION_CONVERTER::backwardConvert) .collect(Collectors.toList()); protoAreaBuilder.addAllShapePoints(protoLocations); final Map<String, String> tags = area.getTags(); protoAreaBuilder .addAllTags(ProtoAtlasBuilder.PROTOTAG_LIST_CONVERTER.backwardConvert(tags)); numberOfAreas++; protoAtlasBuilder.addAreas(protoAreaBuilder.build()); } protoAtlasBuilder.setNumberOfAreas(numberOfAreas); }
private AtlasPrimitiveArea convert(final Area area) { return new AtlasPrimitiveArea(area.getIdentifier(), area.asPolygon(), area.getTags()); }
edge -> builder.addEdge(edge.getIdentifier(), edge.asPolyLine(), edge.getTags())); atlas.areas().forEach( area -> builder.addArea(area.getIdentifier(), area.asPolygon(), area.getTags())); atlas.lines().forEach( line -> builder.addLine(line.getIdentifier(), line.asPolyLine(), line.getTags()));
@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())); }
area -> builder.addArea(area.getIdentifier(), area.asPolygon(), area.getTags()));
@Test public void testArea() { final Area area1 = this.atlas.area(45); final Area area2 = this.atlas.area(54); logger.trace(area1.toString()); logger.trace(area2.toString()); Assert.assertTrue(area1.asPolygon().intersects(area2.asPolygon())); Assert.assertEquals(Location.TEST_6, area1.asPolygon().intersections(area2.asPolygon()).iterator().next()); Assert.assertEquals("golf_course", area1.getTags().get("leisure")); Assert.assertEquals("grassland", area1.getTags().get("natural")); Assert.assertFalse(AerowayTag.get(area1).isPresent()); Assert.assertEquals(LeisureTag.GOLF_COURSE, LeisureTag.get(area1).orElseThrow(CoreException.supplier("No tag"))); Assert.assertEquals(NaturalTag.GRASSLAND, NaturalTag.get(area1).orElseThrow(CoreException.supplier("No tag"))); Assert.assertFalse(WaterTag.get(area1).isPresent()); Assert.assertFalse(AerowayTag.get(area2).isPresent()); Assert.assertEquals(LeisureTag.SWIMMING_POOL, LeisureTag.get(area2).orElseThrow(CoreException.supplier("No tag"))); Assert.assertEquals(SportTag.SWIMMING, SportTag.get(area2).orElseThrow(CoreException.supplier("No tag"))); Assert.assertFalse(NaturalTag.get(area2).isPresent()); Assert.assertFalse(WaterTag.get(area2).isPresent()); }
area -> builder.addArea(area.getIdentifier(), area.asPolygon(), area.getTags()));
/** * Add all points, areas and lines that pass the given matcher to the sub-atlas, using the given * {@link PackedAtlasBuilder}. * * @param matcher * The matcher to consider * @param builder * The {@link PackedAtlasBuilder} used to build the sub-atlas */ private void indexPointsAreasLines(final Predicate<AtlasEntity> matcher, final PackedAtlasBuilder builder) { for (final Point point : this.atlas.points(matcher::test)) { builder.addPoint(point.getIdentifier(), point.getLocation(), point.getTags()); } for (final Area area : this.atlas.areas(matcher::test)) { builder.addArea(area.getIdentifier(), area.asPolygon(), area.getTags()); } for (final Line line : this.atlas.lines(matcher::test)) { builder.addLine(line.getIdentifier(), line.asPolyLine(), line.getTags()); } } }
final Surface surface = area.asPolygon().surface(); logger.info("Got Area surface {}", surface); final Map<String, String> areaTags = area.getTags(); logger.info("Got Area tags {}", areaTags); logger.info("{}", areaTags);
@Test public void testAddSameIdentifierMerge() { final FeatureChange featureChange1 = new FeatureChange(ChangeType.ADD, new CompleteArea(123L, null, Maps.hashMap("key", "value"), null)); final FeatureChange featureChange2 = new FeatureChange(ChangeType.ADD, new CompleteArea(123L, Polygon.TEST_BUILDING, null, null)); final ChangeBuilder builder = new ChangeBuilder(); builder.add(featureChange1); builder.add(featureChange2); final Change result = builder.get(); final FeatureChange merged = result.changeFor(ItemType.AREA, 123L).get(); final Area area = (Area) merged.getReference(); Assert.assertEquals(Polygon.TEST_BUILDING, area.asPolygon()); Assert.assertEquals(Maps.hashMap("key", "value"), area.getTags()); } }
areaMember.getTags());