R语言伦敦萨瑟克区路网分析输出距离全为0该如何解决?
问题核心原因
weight_streetnet()函数匹配道路权重时,发现输入的southwark_roads_edges数据中存在highway字段为NA的要素,这类要素没有对应到步行权重配置的规则中,函数对这类边默认赋值权重/距离为0,后续路径计算会优先选择0成本的边,最终导致所有输出距离均为0。
排查步骤
- 验证NA值规模:运行
table(is.na(southwark_roads_edges$highway)),查看highway字段为空的要素数量 - 核查NA要素属性:运行
View(southwark_roads_edges[is.na(southwark_roads_edges$highway),]),判断这类要素是否属于你需要纳入分析的路网范围
解决方法
根据你的分析需求选择以下任意一种方案即可:
方案1:剔除NA要素(适用不需要无分类道路的场景)
构建路网前先过滤掉highway字段为空的边:
# 清理无分类道路 southwark_roads_edges_clean <- southwark_roads_edges[!is.na(southwark_roads_edges$highway), ] # 显式指定步行权重配置构建路网 southwark_graph <- weight_streetnet(southwark_roads_edges_clean, wt_profile = "foot")
方案2:为NA要素指定分类(适用需要保留无分类道路的场景)
统一给highway为空的要素赋值为匹配步行场景的道路类型(比如footway):
# 替换NA值为合理的道路类型 southwark_roads_edges$highway[is.na(southwark_roads_edges$highway)] <- "footway" # 构建路网 southwark_graph <- weight_streetnet(southwark_roads_edges, wt_profile = "foot")
注意:调用weight_streetnet()时建议显式指定wt_profile参数,避免默认权重配置不符合你的测算场景。
内容的提问来源于stack exchange,提问作者hussain
相关产品推荐
相关产品推荐

