如何判断OSMNX检索的指定边界框区域内是否存在可通行道路
OSMNX 判断指定区域是否存在可通行道路的实现方法
你可以通过异常捕获+图边数判断的逻辑实现需求,原理如下:ox.graph_from_bbox在边界框内没有符合指定类型的道路数据时,会抛出ValueError异常;如果成功返回路网图对象,只要图中存在至少1条边,就对应区域内有符合要求的道路。
完整实现代码
import osmnx as ox def has_specified_road(north: float, south: float, east: float, west: float, network_type: str = "drive") -> bool: """ 判断指定边界框内是否存在对应类型的可通行道路 :param north: 边界框北纬 :param south: 边界框南纬 :param east: 边界框东经 :param west: 边界框西经 :param network_type: 道路类型,支持drive/ walk/ bike等osmnx支持的类型 :return: 存在返回True,不存在返回False """ try: G = ox.graph_from_bbox(north, south, east, west, network_type=network_type) # 判断是否存在至少1条道路(路网的边对应道路) return G.number_of_edges() > 0 except ValueError: # 无匹配道路数据直接返回False return False # 测试示例:你给出的旧金山测试区域 print(has_specified_road(37.79, 37.78, -122.41, -122.43))
补充说明
- 若你需要判断步行、骑行等其他类型的道路,修改调用时的
network_type参数即可 - 该逻辑兼容新老版本OSMNX:即使旧版本不会抛出无数据异常,也会通过边数判断正确返回结果
内容的提问来源于stack exchange,提问作者Kyv
相关产品推荐
相关产品推荐

