如何使用 osmfilter 过滤掉所有设施以及它们拥有的任何其他标签信息?

Ada*_*yai 2 openstreetmap osmosis

我设法从 OSM 下载了一个行星文件,并使用 osmconvert 将其转换为 o5m 格式,并从中删除了所有作者信息,以保持文件较小。我试图从全世界的这个数据库中获取每个 POI,所以我对城市、城镇、高速公路、道路等不感兴趣,只对便利设施感兴趣。

首先,我尝试通过使用 osmosis 来实现这一点,它似乎设法做我想做的事,只是它总是内存不足,导致文件太大而无法处理。(我可以将文件拆分成更小的文件,但如果可能的话,我想避免这种情况)。

我尝试使用 osmfilter 进行试验,在那里,我设法过滤掉了每个包含名为 amenity 的标签的节点,但是我有几个无法解决的问题:

一种。如果我使用以下命令:

osmfilter planet.o5m -v --keep-tags="amenity=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

它保留所有节点,并过滤掉名称中没有舒适性的每个标签。

湾 如果我使用这个命令:

osmfilter planet.o5m -v --keep-tags="all amenity=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

它现在过滤掉所有没有便利性标签的节点,但也过滤掉匹配节点中的所有附加标签,其中包含我需要的信息(例如,兴趣点的名称或描述)

C。如果我使用这个命令:

osmfilter planet.o5m -v --keep-tags="all amenity= all name=" -o=amenities.osm
Run Code Online (Sandbox Code Playgroud)

过滤掉标签中包含名称或便利设施的每个节点,这给我留下了几个命名的城市或高速公路(我不需要的数据)。

我也尝试用 AND 运算符将其分开,但它说,在过滤标签时我不能使用 AND 运算符。知道我怎么能达到预期的结果吗?

尾注:我运行的是 Windows 7 系统,所以没有基于 Linux 的程序可以帮助我:|

小智 6

请尝试--keep=选项而不是--keep-tags选项。后者对将保存在文件中的对象没有影响。

例如:

osmfilter planet.o5m --keep="amenity= and name=" -o=amenities.osm

将只保留带有便利设施标签和名称标签的对象。

请注意,所有相关对象也将在输出文件中。例如,如果有一个带有所请求标签的路对象,则该路的每个节点也将在输出文件中。这同样适用于关系及其依赖的方式和节点。如果您不想要这种行为,请添加--ignore-dependencies

可以在此处找到更多信息:https : //wiki.openstreetmap.org/wiki/Osmfilter