我正在使用包含来自瑞士的 OpenStreetMap 数据的 .pbf 文件,我使用以下 Osmium 命令提取包含标签 amenity=school,college 的每个条目:
osmium tags-filter switzerland-exact.osm.pbf nwr/amenity=school,college \
-o schools-in-switzerland.osm.pbf
之后我将数据导出为 JSON 并使用 python 脚本处理它以将数据转换为以下格式:
[
{
"name": "school1",
"city": "city1",
"postcode": "plz1",
"country": "switzerland"
},
{
"name": "school2",
"city": null,
"postcode": "plz2",
"country": "switzerland"
},
...
]
我在 python 脚本中使用以下标记来进行属性映射:addr:city->city,addr:postcode->postcode。
由此产生的问题是某些学校(例如示例中的 school2)不包含城市和/或不包含邮政编码。由于 OSM 理论上拥有识别学校位置所需的所有数据,我认为应该可以以某种方式补充提取过程中缺失的标签。
我不一定要使用 Osmium,因此,我愿意接受其他解决方案。
我找到了一个蛮力方法......在pbf文件中我有形状的坐标,我只是使用第一个经度和纬度来查询地址https://nominatim.org/ ,.例如。: https://nominatim.openstreetmap.org/reverse?format=json&lat=33.2038405&lon=-96.7436876