Osmosis处理OpenStreetMap数据:提取道路时字段丢失问题
问题
我从geofabrik.de下载了france_latest.osm.pbf文件,想用osmosis过滤出仅包含主要道路的.osm文件,执行的命令如下:
osmosis --read-pbf france-latest.osm.pbf --tf accept-ways highway=motorway,motorway_link,trunk,primary,secondary,trunk_link,primary_link,secondary_link --used-node --write-xml roads_m_1ry_2ry.osm
生成的.osm文件包含正确的道路要素,但缺少用于区分道路类型的highway字段,导致无法在QGIS中为不同道路设置差异化颜色显示。几年前执行相同操作时导出的文件是带有该字段的,不清楚此次为何失效。请问需要在osmosis命令中添加什么参数才能保留该字段信息?
解决方案
问题出在Osmosis的--tf(TagFilter)默认行为上:当你用accept-ways highway=xxx筛选道路时,TagFilter只会保留匹配该条件的道路要素,但默认会移除所有未明确指定保留的标签——包括你需要的highway标签本身。
要保留highway标签,只需在原命令中添加一条额外的标签过滤规则,明确保留这个字段:
修改后的完整命令:
osmosis --read-pbf france-latest.osm.pbf \ --tf accept-ways highway=motorway,motorway_link,trunk,primary,secondary,trunk_link,primary_link,secondary_link \ --tf accept-ways highway=* \ --used-node \ --write-xml roads_m_1ry_2ry.osm
这条新增的--tf accept-ways highway=*会告诉Osmosis:保留所有带有highway标签的道路上的highway字段,结合前面的筛选条件,最终导出的.osm文件里每条道路都会带有对应的highway属性,就能在QGIS中按道路类型设置不同的显示样式了。
内容的提问来源于stack exchange,提问作者simonc8
相关产品推荐
相关产品推荐

