如何从OSM文件提取含经纬度的桥梁列表?Osmosis使用存疑
用Osmosis提取OSM中的桥梁名称及经纬度信息
嘿,我刚好折腾过类似的需求,Osmosis完全能帮你生成「桥梁名称|纬度|经度」这种格式的结果,只要把命令参数组合对就好,我给你详细说下怎么操作:
核心逻辑拆解
要拿到你要的信息,得走这几步:读取目标OSM文件 → (可选)限定区域 → 筛选出标记为桥梁的道路/设施 → 保留需要的标签和关联节点 → 导出成指定分隔符的格式。
完整命令示例
假设你的源文件是brandenburg.osm.bz2,需要用city.poly限定区域,直接用下面的命令就行:
bin/osmosis.bat --rx file="brandenburg.osm.bz2" \ --bp file="city.poly" \ --tf accept-ways highway=* bridge=yes \ --tf reject-relations \ --used-node \ --write-csv file="bridges_output.csv" \ --csv-columns id,tag:name,lat,lon \ --csv-separator "|"
给你解释下关键参数:
--rx:负责读取压缩的OSM文件--bp:用poly文件过滤出指定区域内的要素,不需要区域限制的话直接删掉这一行--tf accept-ways highway=* bridge=yes:筛选所有标记为bridge=yes的道路类设施,如果你要包含铁路桥、人行桥,可以改成highway=*,railway=*,footway=*--tf reject-relations:排除关系型要素,避免输出冗余内容--used-node:保留和筛选出的桥梁关联的节点,这样才能拿到经纬度数据--write-csv:指定输出文件的路径--csv-columns:自定义输出列,tag:name对应桥梁名称,lat和lon是节点的经纬度--csv-separator "|":把分隔符设为竖线,刚好匹配你要的格式
小提醒
- 有些桥梁可能没有
name标签,输出里对应的位置会是空值,后续可以用Excel或者脚本批量处理 - 因为桥梁是由多个节点组成的way,默认会输出每个节点的坐标行,如果想要每个桥梁只输出一行(比如取第一个节点或者计算中心点),得用Python之类的脚本再处理下导出的CSV文件
内容的提问来源于stack exchange,提问作者Pablo Silva
相关产品推荐
相关产品推荐

