You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly的scatter_mapbox中用PDF地图替换底图

如何在Plotly Express scatter_mapbox中使用PDF作为底图

Plotly的scatter_mapbox组件本身不支持直接加载PDF文件作为底图,因为它依赖Mapbox规范的矢量/栅格瓦片服务,而PDF并非标准的地图瓦片格式。要实现类似效果,需要先将PDF转换为兼容的地图资源,再通过以下两种方式集成:

方法1:将PDF转为自定义瓦片服务(推荐大范围地图)

  1. 把PDF地图切割成符合Mapbox瓦片规范的栅格图片集(可使用GDAL、MapTiler等工具处理)
  2. 将瓦片部署为HTTP服务(比如本地静态文件服务器或云存储)
  3. 通过自定义瓦片服务加载底图:
# 替换为你的瓦片服务URL模板,{z}/{x}/{y}是瓦片层级/坐标占位符
fig.update_layout(mapbox_style="white-bg",
                  mapbox_layers=[{"below": 'traces',
                                  "sourcetype": "raster",
                                  "source": [
                                      "http://your-tile-server/{z}/{x}/{y}.png"
                                  ]}])

方法2:叠加静态PDF转图片作为底图(适合小范围固定区域)

如果是小范围固定区域的PDF地图,可先将PDF导出为PNG/JPG图片,再通过layout.image叠加到地图上,同时手动匹配地理坐标:

import pandas as pd
import plotly.express as px

us_cities = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/us-cities-top-1k.csv")
fig = px.scatter_mapbox(us_cities, lat="lat", lon="lon", hover_name="City", hover_data=["State", "Population"],
                        color_discrete_sequence=["fuchsia"], zoom=3, height=600)

# 替换以下参数:图片路径、对应地理范围的经纬度
fig.update_layout(
    mapbox_style="white-bg",  # 隐藏默认底图
    images=[dict(
        source="path/to/your/pdf-converted-image.png",  # PDF转成的图片路径
        xref="x",
        yref="y",
        x=-125,  # 图片左上角对应的经度
        y=50,    # 图片左上角对应的纬度
        sizex=50, # 图片覆盖的经度范围
        sizey=25, # 图片覆盖的纬度范围
        sizing="stretch",
        opacity=0.5,
        layer="below"
    )]
)

fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
fig.show()

关键说明

  • 必须先将PDF转换为图片或瓦片格式,Plotly无法直接解析PDF文件
  • 方法2需要手动校准图片的地理坐标范围,确保散点位置与底图匹配
  • 如果使用自定义瓦片,需保证瓦片服务的URL符合{z}/{x}/{y}的Mapbox瓦片命名规范

内容的提问来源于stack exchange,提问作者Al-Baraa El-Hag

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:37:26