Как использовать фильтрацию тегов в Atlas - PullRequest
1 голос
/ 17 мая 2019

Впервые в проекте Atlas (а также в Java) я пробую кое-что попробовать. Я ищу предпочтительный способ объединения инструкций, данных здесь и здесь , чтобы применить фильтрацию тегов к Атласу.

Подойдет ли нижеприведенный подход или есть лучшая альтернатива?

String definition = "highway->residential";
final TaggableFilter filter = TaggableFilter.forDefinition(definition);
final Optional<Atlas> predicateAtlas = atlas.subAtlas(filter::test, AtlasCutType.SOFT_CUT);

1 Ответ

1 голос
/ 31 мая 2019

Ваш код будет работать и создаст другой Атлас, который содержит все элементы с highway=residential. Важно отметить, что Atlas должен соблюдать целостность объекта (т. Е. Edge не может существовать без его конца Node s), что означает, что некоторые функции без тега, который вы здесь указали, все еще могут быть включены (подключены Node s, или родительский Relation s, например).

Другой способ получить только те функции, которые помечены highway=residential, состоит в том, чтобы не принуждать их возвращаться обратно в Atlas, а просто печатать или обрабатывать с помощью пользовательской функции по вашему выбору:

String definition = "highway->residential";
final TaggableFilter filter = TaggableFilter.forDefinition(definition);
atlas.entities(filter).forEach(entity -> ...);
...