protected Map<String, String> getTags() { return this.relation.getTags(); } }
@Override public Map<String, String> getTags() { // They all should have the same tags return getSingleSubRelation().getTags(); }
@Override public Map<String, String> getTags() { return subRelation().getTags(); }
@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())); tags.put("relation", this.toSimpleString()); final Optional<String> shardName = getAtlas().metaData().getShardName(); shardName.ifPresent(shard -> tags.put("shard", shard)); return new GeoJsonBuilder.LocationIterableProperties(bounds().center(), tags); }
public static CompleteRelation from(final Relation relation) { return new CompleteRelation(relation.getIdentifier(), relation.getTags(), relation.bounds(), relation.members().asBean(), relation.allRelationsWithSameOsmIdentifier().stream().map(Relation::getIdentifier) .collect(Collectors.toList()), relation.allKnownOsmMembers().asBean(), relation.osmRelationIdentifier(), relation.relations().stream().map(Relation::getIdentifier) .collect(Collectors.toSet())); }
@Override protected boolean isCounted(final Edge edge) { if (edge.containsKey(EXACT_MATCHES)) { return true; } if (edge.containsKeyStartsWith(START_WITH_MATCHES)) { return true; } for (final Relation relation : edge.relations()) { final Map<String, String> tags = relation.getTags(); if (tags.containsKey("type") && "route".equals(tags.get("type")) && tags.containsKey("route") && "road".equals(tags.get("route"))) { if (relation.containsKey(RELATION_EXACT_MATCHES)) { return true; } if (relation.containsKeyStartsWith(RELATION_START_WITH_MATCHES)) { return true; } } } return false; }
private static List<LocationIterableProperties> processRelationForGeoJson( final Relation relation, final Map<String, String> parentTags) { final Map<String, String> relationTags = relation.getTags(); final Map<String, String> modifiedRelationTags = new HashMap<>(parentTags); for (final String key : relationTags.keySet()) { modifiedRelationTags.put("[REL_ID:" + relation.getIdentifier() + "]" + key, relationTags.get(key)); } final List<LocationIterableProperties> result = new ArrayList<>(); for (final RelationMember member : relation.members()) { if (member.getEntity() instanceof Relation) { final Relation subRelation = (Relation) member.getEntity(); result.addAll(processRelationForGeoJson(subRelation, modifiedRelationTags)); } else { final AtlasItem item = (AtlasItem) member.getEntity(); final Map<String, String> modifiedTags = item.getTags(); modifiedTags.putAll(modifiedRelationTags); result.add(new LocationIterableProperties(item.getRawGeometry(), modifiedTags)); } } return result; }
final Map<String, String> updatedTags = originalRelation.getTags(); updatedTags.putAll(this.changeSet.getUpdatedRelationTags().get(identifier)); addRelation(relation, updatedTags); identifier); final Map<String, String> updatedTags = relation.getTags(); updatedTags.put(ISOCountryTag.KEY, ISOCountryTag.COUNTRY_MISSING); addRelation(relation, updatedTags);
member.getRole(), member.getEntity().getType())); this.builder.addRelation(relation.getIdentifier(), relation.osmRelationIdentifier(), bean, relation.getTags());
relation.getTags());
private void addRelation(final PackedAtlasBuilder builder, final Relation relation) { final RelationBean bean = new RelationBean(); relation.members().forEach(member -> bean.addItem(member.getEntity().getIdentifier(), member.getRole(), member.getEntity().getType())); builder.addRelation(relation.getIdentifier(), relation.osmRelationIdentifier(), bean, relation.getTags()); } }
@Test public void testSlicingOnRelationWithOnlyRelationsAsMembers() { final Atlas rawAtlas = this.setup.getRelationWithOnlyRelationsAsMembers(); Assert.assertEquals(2, rawAtlas.numberOfPoints()); Assert.assertEquals(3, rawAtlas.numberOfRelations()); final Atlas slicedAtlas = RAW_ATLAS_SLICER.slice(rawAtlas); for (final Relation relation : slicedAtlas.relations()) { final Map<String, String> tags = relation.getTags(); Assert.assertTrue(tags.containsKey(ISOCountryTag.KEY)); Assert.assertNotEquals(ISOCountryTag.COUNTRY_MISSING, tags.get(ISOCountryTag.KEY)); } } }
bean, relation.getTags());
ItemType.forEntity(validMember.getEntity()))); builder.addRelation(relation.getIdentifier(), relation.getOsmIdentifier(), structure, relation.getTags());
@Test public void testChangeRelationTags() { final Atlas atlas = this.rule.getAtlas(); final ChangeBuilder changeBuilder = new ChangeBuilder(); final Relation disconnectedFeatures = atlas.relation(41834000000L); final Map<String, String> tags = disconnectedFeatures.getTags(); tags.put("newKey", "newValue"); changeBuilder.add(FeatureChange .add(CompleteRelation.shallowFrom(disconnectedFeatures).withTags(tags))); final Change change = changeBuilder.get(); final Atlas changeAtlas = new ChangeAtlas(atlas, change); final Relation changeRelation = changeAtlas.relation(41834000000L); Assert.assertEquals(tags, changeRelation.getTags()); Assert.assertEquals(disconnectedFeatures.members().asBean(), changeRelation.members().asBean()); final Relation parentRelation = changeAtlas.relation(41860000000L); final Relation changeRelationFromParentRelation = (Relation) Iterables .stream(parentRelation.members()) .firstMatching(member -> "child1".equals(member.getRole())).get().getEntity(); Assert.assertEquals(tags, changeRelationFromParentRelation.getTags()); Assert.assertEquals(disconnectedFeatures.members().asBean(), changeRelationFromParentRelation.members().asBean()); }
ItemType.forEntity(validMember.getEntity()))); builder.addRelation(relation.getIdentifier(), relation.getOsmIdentifier(), structure, relation.getTags());
private AtlasPrimitiveRelation convert(final Relation relation) { final RelationBean bean = new RelationBean(); for (final RelationMember member : relation.members()) { bean.addItem(member.getEntity().getIdentifier(), member.getRole(), member.getEntity().getType()); } return new AtlasPrimitiveRelation(relation.getIdentifier(), relation.getIdentifier(), bean, relation.getTags(), relation.bounds()); }
private void writeRelationsToBuilder(final Atlas atlas, final ProtoAtlas.Builder protoAtlasBuilder) { long numberOfRelations = 0; for (final Relation relation : atlas.relations()) { final ProtoRelation.Builder protoRelationBuilder = ProtoRelation.newBuilder(); protoRelationBuilder.setId(relation.getIdentifier()); for (final RelationMember member : relation.members()) { final ProtoRelation.RelationBean.Builder beanBuilder = ProtoRelation.RelationBean .newBuilder(); beanBuilder.setMemberId(member.getEntity().getIdentifier()); beanBuilder.setMemberRole(member.getRole()); final ItemType type = ItemType.forEntity(member.getEntity()); beanBuilder.setMemberType(ProtoRelation.ProtoItemType.valueOf(type.getValue())); protoRelationBuilder.addBeans(beanBuilder.build()); } final Map<String, String> tags = relation.getTags(); protoRelationBuilder .addAllTags(ProtoAtlasBuilder.PROTOTAG_LIST_CONVERTER.backwardConvert(tags)); numberOfRelations++; protoAtlasBuilder.addRelations(protoRelationBuilder.build()); } protoAtlasBuilder.setNumberOfRelations(numberOfRelations); } }
member.getRole(), member.getEntity().getType())); builder.addRelation(relationIdentifier, relation.getOsmIdentifier(), bean, relation.getTags());