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

如何为Geopandas结合Rasterio绘制的韩国地形添加色阶条?

给Cartopy+Rasterio绘制的地形图像添加色阶条

要实现低海拔蓝色、高海拔渐变的地形色阶条,核心是结合**matplotlib的colorbar()**函数,配合地形绘图时的色彩映射(colormap)完成。以下是具体修改方案和代码示例:

关键修改步骤

  1. 保留绘图对象:调用rasterio.plot.show()时,接收返回的图像对象(im),供色阶条绑定使用。
  2. 选择/自定义配色:用matplotlib自带的地形色卡(如terrain)或自定义渐变,实现低蓝高棕的效果。
  3. 添加并配置色阶条:通过plt.colorbar()关联图像对象,设置标签、方向、刻度等样式。

修改后的完整代码

import rasterio
import cartopy.crs as ccrs
import geopandas as gpd
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

# 读取DEM数据(替换为你的文件路径)
with rasterio.open('korea_dem.tif') as src:
    dem_data = src.read(1)
    # 处理NoData值,避免色阶异常
    dem_data = dem_data.astype(float)
    dem_data[dem_data == src.nodata] = float('nan')
    bounds = src.bounds

# 初始化Cartopy绘图轴
fig, ax = plt.subplots(figsize=(10, 8), subplot_kw={'projection': ccrs.PlateCarree()})

# 方案1:使用matplotlib自带地形色卡(低蓝高棕,无需自定义)
# im = rasterio.plot.show(dem_data, ax=ax, transform=ccrs.PlateCarree(), extent=bounds, cmap='terrain', vmin=dem_data.min(), vmax=dem_data.max())

# 方案2:自定义渐变配色(更灵活)
colors = ['#0055ff', '#00aa88', '#ffffcc', '#dd8844', '#884422']
custom_cmap = LinearSegmentedColormap.from_list('korea_terrain', colors, N=100)
im = rasterio.plot.show(
    dem_data,
    ax=ax,
    transform=ccrs.PlateCarree(),
    extent=bounds,
    cmap=custom_cmap,
    vmin=dem_data.min(),
    vmax=dem_data.max()
)

# 叠加韩国边界(替换为你的边界文件路径)
korea_bound = gpd.read_file('korea_boundary.shp')
korea_bound.plot(ax=ax, edgecolor='black', facecolor='none', linewidth=1)

# 添加色阶条
cbar = plt.colorbar(
    im,
    ax=ax,
    orientation='horizontal',  # 可选'vertical'改为垂直放置
    pad=0.05,
    shrink=0.8
)
cbar.set_label('Elevation (m)', fontsize=12)
cbar.ax.tick_params(labelsize=10)

# 调整绘图样式
ax.set_title('Korea Terrain Elevation', fontsize=14)
ax.gridlines(draw_labels=True, linestyle='--', alpha=0.5)

plt.tight_layout()
plt.show()

注意事项

  • 无效值处理:必须将DEM中的NoData值转为float('nan'),否则色阶条会出现异常刻度或色块。
  • 投影一致性:确保rasterio.plot.show()的transform参数与Cartopy轴的投影匹配,避免图像错位。
  • 色阶范围:通过vmin和vmax手动设置海拔范围,可以让配色更贴合韩国地形的实际起伏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 00:57:33