首页 > 解决方案 > 在 Osmnx 中使用未简化网络时的绘图错误

问题描述

使用 Osmnx,我正在绘制由两个分区组成的网络,当我使用simplify = True两个分区时出现。但是当我使用时simplify = False只出现一个区(我需要使用未简化的网络)。有谁知道为什么?

这是代码:

import networkx as nx
import matplotlib.pyplot as plt
import osmnx as ox
import pandas as pd
from shapely.wkt import loads as load_wkt
import numpy as np
import matplotlib.cm as cm
ox.config(log_console=True, use_cache=True)
import matplotlib as mpl
import random as rd


distrito = ['Setúbal District','Lisbon District']
G = ox.graph_from_place(distrito, network_type='all_private', simplify=False)

fig, ax = ox.plot_graph(G)

使用时simplify = True我得到这个图像:

在此处输入图像描述

当我使用时,simplify = False我得到了这个:

在此处输入图像描述

标签: pythonnetworkxosmnx

解决方案


简短的回答是:塞图巴尔和里斯本的边界并不连续。在塔霍河口,他们之间有一道鸿沟。这个缺口由 25 de Abril 桥跨越。如果使用retain_all=True,则两种方法的结果应该大致相同。

更长的答案是:当simplify=True您沿边缘删除间隙节点以仅在真正的交叉点和死胡同处保留节点时。这种简化允许 25 de Abril 桥作为单边跨越您的两个不连续边界(塞图巴尔和里斯本)。因此它不会被删除,即使它位于您请求的边界之外。当 时simplify=False,您会得到一个断开连接的图(因为连接两个组件的桥没有保留,因为所有节点都超出了您请求的边界),导致当您使用 的默认参数化时,除了最大的连接图组件之外的所有连接图组件都被丢弃retain_all=False


推荐阅读