基于OpenStreetMap计算城市步行道总长度的标签规则确认
OSM城市步行道总长度计算的标签覆盖修正方案
一、标签覆盖的遗漏与错误修正
1. sidewalk 标签的正确范围
你当前的sidewalk过滤只包含了left/right/both,需要补充以下取值,但要注意不同取值的统计逻辑:
sidewalk=yes:部分制图者会用这个替代both,表示道路两侧均有人行道sidewalk=lane:道路上划出的专用步行区域(比如共享道路内的步行道)- ❌ 不要直接统计
sidewalk=separate:这个标签标记在主路上,仅说明主路旁有独立步行道,主路本身不是步行道,应去统计对应的独立步行道(即highway=footway)
2. footway 相关标签的调整
你的代码里存在冗余和错误标签,调整如下:
- 保留:
way["footway"=crossing](area.a);:过街设施,属于步行道范畴way["footway"=traffic_island](area.a);:安全岛,步行相关设施way["footway"=alley](area.a);:步行小巷way["highway"=footway](area.a);:所有独立步行道(包含footway=sidewalk等子类型)way["highway"=pedestrian](area.a);:完全禁止车辆的步行街区域
- 删除:
way["footway"=sidewalk](area.a);:已被highway=footway覆盖,重复统计way["footway"=residential](area.a);:非标准标签,正确逻辑是highway=residential+sidewalk=*,这部分已由sidewalk标签覆盖
3. 避免重复计数的注意点
highway=footway已经包含所有独立步行道,不要和其他footway=*子类型重复过滤- 对于
sidewalk=left/right/both/yes/lane的主路,统计的是主路附带的步行区域,这部分长度是主路长度的一部分(比如both对应两侧步行道,长度为主路×2)。如果直接统计主路的way长度,会把机动车道部分也算进去导致数据偏大,若要精确统计,需用工具提取步行道的几何段;若仅做近似统计,可保留过滤但需明确数据的近似性。
修正后的代码示例
// 独立步行道与步行街 way["highway"=footway](area.a); way["highway"=pedestrian](area.a); // 步行相关设施 way["footway"=crossing](area.a); way["footway"=traffic_island](area.a); way["footway"=alley](area.a); // 主路附带的步行区域 way["sidewalk"=both](area.a); way["sidewalk"=left](area.a); way["sidewalk"=right](area.a); way["sidewalk"=yes](area.a); way["sidewalk"=lane](area.a);
内容的提问来源于stack exchange,提问作者theCube
相关产品推荐
相关产品推荐

