python - 在 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
我得到了这个:
解决方案
简短的回答是:塞图巴尔和里斯本的边界并不连续。在塔霍河口,他们之间有一道鸿沟。这个缺口由 25 de Abril 桥跨越。如果使用retain_all=True
,则两种方法的结果应该大致相同。
更长的答案是:当simplify=True
您沿边缘删除间隙节点以仅在真正的交叉点和死胡同处保留节点时。这种简化允许 25 de Abril 桥作为单边跨越您的两个不连续边界(塞图巴尔和里斯本)。因此它不会被删除,即使它位于您请求的边界之外。当 时simplify=False
,您会得到一个断开连接的图(因为连接两个组件的桥没有保留,因为所有节点都超出了您请求的边界),导致当您使用 的默认参数化时,除了最大的连接图组件之外的所有连接图组件都被丢弃retain_all=False
。
推荐阅读
- amazon-web-services - 通过 AWS Appsync 解析器和 Dynamodb 自动添加时间戳
- office-js - 您的帐户连接的 Exchange 服务器版本不支持此应用
- junit - 如何包装 JUnit 5 测试
- java - 如何在选项卡式活动中实现连接到 Firebase 数据库的 recyclerView?
- hyperledger-fabric - 交易功能中执行的身份是系统管理员?
- ios - IOS Swift 如何从异步方法中获取价值
- android - 通过通知从锁定屏幕启动另一个 Activity 时,不会调用当前活动 onResume()
- javascript - 无法在通过 Python WebSocket 接收的画布上绘制图像
- c++ - 如何在opengl中旋转矢量?
- magento - Magento 2:获取客户群客户模块