2

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

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

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

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

osmfilter planet.o5m -v --keep-tags="amenity=" -o=amenities.osm

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

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

osmfilter planet.o5m -v --keep-tags="all amenity=" -o=amenities.osm

它现在过滤掉所有没有设施标签的节点,但也过滤掉匹配节点中的所有附加标签,这些标签包含我需要的信息(例如,POI 的名称或描述)

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

osmfilter planet.o5m -v --keep-tags="all amenity= all name=" -o=amenities.osm

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

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

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

4

2 回答 2

6

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

例如:

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

将只保留具有舒适标签和名称标签的对象。

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

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

于 2015-01-09T23:22:34.187 回答
3
osmfilter inputfile.osm --keep-nodes="amenity=" --keep-tags="all amenity= name=" --ignore-dependencies -o=outputfile.osm

这正是您正在寻找的:

保留带有标签设施的节点(--keep-nodes)

仅保留有关设施和名称的信息(--keep-tags)

于 2017-08-08T14:45:10.023 回答