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

如何在Plotly Density_Mapbox地图上叠加GeoJSON格式的等高线图层

Plotly density_mapbox叠加气象等高线实现步骤

你已经完成了密度图生成、等高线转GeoJSON的前置操作,接下来按以下步骤实现叠加即可:

步骤1:读取已生成的GeoJSON等高线文件

import json
import plotly.graph_objects as go

# 读取你之前导出的等高线GeoJSON文件
with open('/path/to/Sample.geojson', 'r') as f:
    contour_geojson = json.load(f)

步骤2:提取等高线属性值

geojsoncontour生成的GeoJSON中,每个要素自带填充色、等高线等级等属性,我们提取等级作为z值用于配色和悬停提示:

# 提取所有等高线面的等级值
z_values = [float(feature['properties']['title'].split(' ')[0]) for feature in contour_geojson['features']]
# 提取对应填充色(和你生成等高线时设置的颜色一致)
colors = [feature['properties']['fill'] for feature in contour_geojson['features']]

步骤3:在原有密度图上叠加等高线图层

在你生成fig = px.density_mapbox(...)的代码之后,追加以下代码添加等高线图层:

# 叠加等高线图层
fig.add_trace(
    go.Choroplethmapbox(
        geojson=contour_geojson,
        locations=[feature['id'] for feature in contour_geojson['features']],
        z=z_values,
        colorscale=[[i/len(colors), colors[i]] for i in range(len(colors))],
        showscale=False, # 不需要显示等高线的色条可以关闭
        marker_opacity=0.3, # 和你生成GeoJSON时设置的fill_opacity保持一致即可
        marker_line_width=0,
        hovertemplate='降雨量: %{z} in<extra></extra>' # 自定义悬停提示
    )
)

# 可选:如果出现密度图遮盖等高线的情况,调整图层顺序确保等高线在上层
# fig.data = fig.data[::-1]

# 渲染展示
fig.show()

关键说明

  • 如果你需要保留等高线的描边,可以在生成GeoJSON时调整stroke_width参数,叠加时设置marker_line_width为对应数值即可
  • 如果需要同时显示两个图层的色条,可以给两个图层分别设置coloraxis参数区分色条坐标轴
  • 地图的中心点、缩放层级会沿用你密度图的设置,不需要额外调整

内容的提问来源于stack exchange,提问作者Jkiefn1

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:24:02