@Override protected Set<String> getKeys(final Edge edge) { final Set<String> result = new HashSet<>(); result.add(edge.highwayTag().getTagValue()); return result; }
/** * Extracts a decorator based on the collective features properties. Currently the only * decoration is the highest class highway tag withing all of the feature properties for flags * involving Edges. */ private static Optional<String> featureDecorator(final JsonArray featureProperties) { HighwayTag highestHighwayTag = null; for (final JsonElement featureProperty : featureProperties) { final HighwayTag baslineHighwayTag = highestHighwayTag == null ? HighwayTag.NO : highestHighwayTag; try { highestHighwayTag = Optional .ofNullable( ((JsonObject) featureProperty).getAsJsonPrimitive(HighwayTag.KEY)) .map(JsonPrimitive::getAsString).map(String::toUpperCase) .map(HighwayTag::valueOf).filter(baslineHighwayTag::isLessImportantThan) .orElse(highestHighwayTag); } catch (final IllegalArgumentException badValue) { return Optional.empty(); } } return Optional.ofNullable(highestHighwayTag) .map(tag -> String.format("%s=%s", HighwayTag.KEY, tag.getTagValue())); }
@Override protected Set<String> getKeys(final Edge edge) { final Optional<Time> lastEditOption = edge.lastEdit(); if (!lastEditOption.isPresent()) { return new HashSet<>(); } final Time lastEdit = lastEditOption.get(); final String year = String.valueOf(lastEdit.year()); final String month = String.valueOf(lastEdit.month()); final Set<String> result = new HashSet<>(); result.add(edge.highwayTag().getTagValue() + "_" + year + "-" + month); return result; }
@Test public void testIsHighwayArea() { final Map<String, String> tags = new HashMap<>(); tags.put(HighwayTag.KEY, HighwayTag.PEDESTRIAN.getTagValue()); tags.put(BuildingTag.KEY, BuildingTag.YES.name().toLowerCase()); Assert.assertTrue(HighwayTag.isHighwayArea(new TestTaggable(tags))); tags.put(HighwayTag.KEY, HighwayTag.FOOTWAY.getTagValue()); Assert.assertTrue(HighwayTag.isHighwayArea(new TestTaggable(tags))); tags.remove(BuildingTag.KEY); Assert.assertFalse(HighwayTag.isHighwayArea(new TestTaggable(tags))); tags.put(AreaTag.KEY, AreaTag.YES.name().toLowerCase()); Assert.assertTrue(HighwayTag.isHighwayArea(new TestTaggable(tags))); tags.put(HighwayTag.KEY, HighwayTag.TRACK.getTagValue()); Assert.assertFalse(HighwayTag.isHighwayArea(new TestTaggable(tags))); }
HighwayTag.MOTORWAY_JUNCTION.getTagValue()))); flag.addObject(start);
@Test(expected = AtlasIntegrityException.class) public void testNotSoCloseNode() { final PackedAtlasBuilder builder = new PackedAtlasBuilder(); builder.addNode(1, Location.forString("48.3406719,10.5563445"), Maps.hashMap()); builder.addNode(2, Location.forString("48.34204,10.55844"), Maps.hashMap()); // First node is too off. builder.addEdge(3, PolyLine.wkt("LINESTRING (10.5563430 48.3406710, 10.55844 48.34204)"), Maps.hashMap(HighwayTag.KEY, HighwayTag.RESIDENTIAL.getTagValue())); final Atlas result = builder.get(); logger.info("{}", result); Assert.assertNotNull(result); }
@Test public void testVeryCloseNode() { final PackedAtlasBuilder builder = new PackedAtlasBuilder(); builder.addNode(1, Location.forString("48.3406719,10.5563445"), Maps.hashMap()); builder.addNode(2, Location.forString("48.34204,10.55844"), Maps.hashMap()); // First node is slightly off. builder.addEdge(3, PolyLine.wkt("LINESTRING (10.5563444 48.3406717, 10.55844 48.34204)"), Maps.hashMap(HighwayTag.KEY, HighwayTag.RESIDENTIAL.getTagValue())); final Atlas result = builder.get(); logger.info("{}", result); Assert.assertNotNull(result); } }
@Test public void testManyVeryCloseNodes() { final PackedAtlasBuilder builder = new PackedAtlasBuilder(); builder.addNode(1, Location.forString("48.3406719,10.5563445"), Maps.hashMap()); builder.addNode(2, Location.forString("48.34204,10.55844"), Maps.hashMap()); builder.addNode(3, Location.forString("48.3406720,10.5563445"), Maps.hashMap()); builder.addNode(4, Location.forString("48.3406719,10.5563446"), Maps.hashMap()); // First node is slightly off. builder.addEdge(5, PolyLine.wkt("LINESTRING (10.5563444 48.3406717, 10.55844 48.34204)"), Maps.hashMap(HighwayTag.KEY, HighwayTag.RESIDENTIAL.getTagValue())); final Atlas result = builder.get(); logger.info("{}", result); Assert.assertNotNull(result); }