使用Osmium从意大利OSM PBF提取Way ID 404140216数据失败
问题描述
从Geofabrik下载的意大利区域italy-latest-internal.osm.pbf文件中,尝试提取Way ID为404140216的数据时失败。
使用的Osmium命令:
osmium getid --output-format=xml italy-latest-internal.osm.pbf 404140216
仅得到边界框输出,无Way实际数据:
<?xml version='1.0' encoding='UTF-8'?> <osm version="0.6" generator="osmium/1.17.0"> <bounds minlat="35.07638" minlon="6.602696" maxlat="47.100045" maxlon="19.12499"/> </osm>
但在OSM官网可查询到该Way的完整数据。
原因分析
- 目标Way不在PBF文件覆盖范围内:Geofabrik的区域PBF文件按地理边界裁剪,若该Way实际位置超出意大利标准地理边界(如邻国或边界缓冲区外),则不会被包含在
italy-latest-internal.osm.pbf中。 - 命令未明确指定元素类型:Osmium的
getid命令仅传入数字ID时,会默认查找node、way、relation三类元素,若文件中无对应ID的Way,就只会返回文件自带的边界框信息。 - internal版本文件的特殊性:带
internal后缀的PBF文件是Geofabrik内部使用的裁剪版本,可能比公开标准版本包含更少元素,或裁剪规则更严格。
解决方法
- 确认Way的地理位置:先查看该Way的实际坐标,确认是否在意大利境内。若不在,需下载包含该区域的更大范围PBF文件(如欧洲区域文件)。
- 明确指定元素类型:修改Osmium命令,明确指定提取Way类型,避免模糊匹配:
osmium getid --output-format=xml italy-latest-internal.osm.pbf way/404140216 - 替换为标准版本PBF文件:若使用的是
internal版本,尝试下载Geofabrik上的标准意大利PBF文件(无internal后缀),这类文件包含更完整的区域元素。 - 验证Way是否存在于文件中:使用
osmium locate命令确认该Way是否在当前PBF文件内:
若返回osmium locate italy-latest-internal.osm.pbf way/404140216not found,则说明该Way确实不在当前文件中。
内容的提问来源于stack exchange,提问作者Melchia
相关产品推荐
相关产品推荐

