@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));
if (this instanceof Edge)
{
tags.put("startNode", String.valueOf(((Edge) this).start().getIdentifier()));
tags.put("endNode", String.valueOf(((Edge) this).end().getIdentifier()));
}
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(getRawGeometry(), tags);
}