如何更改 OpenStreetMaps 图窗的分辨率?

问题描述 投票:0回答:1

对于一个小型设计项目,我想使用 OpenStreetMaps 中的一些地理数据。

让我们用来自德国海岸小村庄 Greetsiel 的数据来说明这个问题。

我使用以下代码片段:

import osmnx as ox
import matplotlib.pyplot as plt

place_name = "Greetsiel, Germany"

# List key-value pairs for tags
tags_buildings = {'building': True}   

plt.rcParams["figure.dpi"] = 100
buildings = ox.features_from_place(place_name, tags_buildings)
buildings.plot(figsize=(120,180), markersize=0.01, linewidth=0.01)
plt.savefig(r'C:\Users\Lepakk\Desktop\buildings.png', dpi=100)

在Spyder中打开的图是这样的:

Whole figure view in Spyder

村庄在右下角,让我们重点关注村庄中心的一座造型独特的建筑。

View of detail in Spyder

如果我打开保存的图像并放大到相应的位置,它看起来像这样:

Saved figure at 100 dpi

现在我在想,分辨率不好可能是因为 100 dpi 不够。让我们将此值更改为

plt.rcParams["figure.dpi"] = 1000
buildings = ox.features_from_place(place_name, tags_buildings)
buildings.plot(figsize=(120,180), markersize=0.01, linewidth=0.01)
plt.savefig(r'C:\Users\Lepakk\Desktop\buildings.png', dpi=1000)

现在分辨率应该提高十倍。然而,数字看起来没有变化:

Saved figure at 1000 dpi

那么,如何更改保存的图像文件的分辨率呢? 预先感谢您!

python matplotlib openstreetmap geopandas osmnx
1个回答
0
投票

这对我有用,尽管正如 Tiger-222 在评论中指出的那样,您可能最好使用 svg 格式。 这为本示例提供了较小的文件大小以及放大时更清晰的图像。

import osmnx as ox
import matplotlib.pyplot as plt

place_name = "Greetsiel, Germany"

# List key-value pairs for tags
tags_buildings = {'building': True}   

plt.rcParams["figure.dpi"] = 1000
buildings = ox.features_from_place(place_name, tags_buildings)
buildings.plot(figsize=(12, 18))
plt.savefig('osm.png')

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.