新加入Atlas项目(以及Java),我正在尝试一些东西。我正在寻找结合给出的说明的首选方法 here和 here在 Atlas 上应用标签过滤。
以下是一个好的方法还是有更好的选择?
String definition = "highway->residential";
final TaggableFilter filter = TaggableFilter.forDefinition(definition);
final Optional<Atlas> predicateAtlas = atlas.subAtlas(filter::test, AtlasCutType.SOFT_CUT);
最佳答案
您的代码将运行并生成另一个 Atlas,其中包含具有 highway=residential
的所有元素。值得注意的是,Atlas 必须遵循功能完整性(即 Edge
不能在没有其结束 Node
的情况下存在),这意味着某些没有您在此处指定的标签的功能可能仍然存在被拉入(例如连接的节点
,或父关系
)。
仅获取标记为 highway=residential
的功能的另一种方法是不强制将它们反馈到 Atlas,而只是打印或使用您选择的自定义功能进行处理:
String definition = "highway->residential";
final TaggableFilter filter = TaggableFilter.forDefinition(definition);
atlas.entities(filter).forEach(entity -> ...);
关于java - 如何在Atlas中使用标签过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56188230/