首页 > 解决方案 > 如何在图形顶部绘制 osmnx 几何图形?

问题描述

我开始使用osmnxPython 包并且有问题:

  1. 以下最小的工作示例是在我的图表上绘制其他几何图形的正确方法G还是有更好的方法?

  2. 正如您在代码下方的结果图中看到的那样,河流(Tajo)没有完全着色。蓝色突然停止,因为标签一定已经改变了。我尝试了多个标签,但找不到合适的标签来为河流的其余部分着色(您应该在红色圆圈所在的位置看到蓝色)。有人知道正确的标签是什么吗?(编辑:它似乎被“成本线”边界包围)

import osmnx as ox

ox.config(log_console=False, use_cache=True)

# Coordinates Lisbon
bbox = [38.7969489, 38.6919296, -9.088, -9.2296891]

# Query graph for Lisbon
G = ox.graph_from_bbox(
    *bbox,
    simplify=True,
    retain_all=True,
    clean_periphery=True,
    truncate_by_edge=True,
    network_type="drive_service",
)

# Find additional geometries
water_1 = ox.geometries_from_bbox(*bbox, tags={"natural": ["water"]})
water_2 = ox.geometries_from_bbox(
    *bbox,
    tags={
        "waterway": ["riverbank", "canal", "dock"],
        "water": ["river", "canal", "reservoir"],
        "natural": ["bay"],
    },
)
water_3 = ox.geometries_from_bbox(*bbox, tags={"place": ["sea", "ocean"]})
motoway = ox.geometries_from_bbox(
    *bbox,
    tags={
        "highway": [
            "motorway",
            "motorway_link",
            "trunk",
            "trunk_link",
        ]
    },
)

# PLOT
fig, ax = ox.plot_graph(
    G,
    bgcolor="white",
    node_size=0,
    edge_linewidth=1,
    show=False,
    close=False,
    figsize=(60, 80),
    dpi=100,
    save=True,
    filepath="lisbon.jpg",
)

water_1.plot(color="#466A8C", linewidth=1, ax=ax)
water_2.plot(color="#466A8C", linewidth=1, ax=ax)
water_3.plot(color="#466A8C", linewidth=1, ax=ax)
motoway.plot(color="#000000", linewidth=2, ax=ax)

在此处输入图像描述

标签: pythonopenstreetmaposmnx

解决方案


推荐阅读