如何使用 Python Plotly 将 OSM 地图/绘图导出为矢量图形

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

手册中的示例

import pandas as pd
us_cities = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv")

import plotly.express as px

fig = px.scatter_mapbox(us_cities, lat="lat", lon="lon", hover_name="City", hover_data=["State", "Population"],
                        color_discrete_sequence=["fuchsia"], zoom=3, height=300)
fig.update_layout(mapbox_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})

fig.write_image('/tmp/so.pdf')

可以看到地图(包括绘制的点)实际上只是一个嵌入的光栅图形:

如何将 OpenStreetMap 绘图导出为完整矢量图形?

python plotly plotly-python vector-graphics
1个回答
0
投票

您使用的背景地图源自提供 png 而非矢量图形的网络地图图块服务...

来自文档:(https://plotly.com/python/mapbox-layers/))

“open-street-map”、“carto-positron”和“carto-darkmatter”产量地图由来自各种公共切片服务器的栅格切片组成,不需要注册或访问令牌。

“基本”、“街道”、“户外”、“光”、“暗”、“卫星”或“卫星街道”产生由 Mapbox 服务的矢量切片组成的地图,并且需要 Mapbox 访问令牌或本地 Mapbox 安装。

要免费从 openstreetmap 访问矢量数据,我建议查看 osmnx,在本地下载您需要的(矢量)数据,然后从中创建地图。

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