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

如何使用Python读取CropScape的DBF文件并绘制作物分布可视化图

解决方案

你当前读取的CDL_2020_clip_xxx.tif.vat.dbf是栅格数据的属性对照表,仅存储栅格数值对应的作物类型、配色规则,没有实际的空间坐标信息,因此无法单独用这个DBF文件绘图,必须搭配同目录下前缀完全一致的TIF栅格文件完成可视化,具体实现代码如下:

依赖导入

import geopandas as gpd
import rasterio
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from matplotlib.patches import Patch
import numpy as np

步骤1:基于DBF构建自定义颜色映射表

# 读取DBF属性表
filename = 'CDL_2020_clip_20210826173123_1609691609.tif.vat.dbf'
dbf = gpd.read_file(filename)

# 生成颜色映射表,VALUE对应栅格值,RGBA对应显示颜色透明度
max_val = dbf['VALUE'].max()
color_list = np.zeros((max_val + 1, 4))
for _, row in dbf.iterrows():
    color_list[int(row['VALUE'])] = [row['RED'], row['GREEN'], row['BLUE'], row['OPACITY']]
cdl_cmap = ListedColormap(color_list)

# 提前获取玉米、大豆对应的分类值
corn_val = dbf[dbf['CLASS_NAME']=='Corn']['VALUE'].iloc[0]
soybean_val = dbf[dbf['CLASS_NAME']=='Soybean']['VALUE'].iloc[0]

步骤2:读取配套的TIF栅格数据

# 读取同前缀的TIF栅格文件
tif_path = filename.replace('.vat.dbf', '')
with rasterio.open(tif_path) as src:
    img = src.read(1) # CDL为单波段分类栅格,读取第一波段即可
    extent = [src.bounds.left, src.bounds.right, src.bounds.bottom, src.bounds.top]
    crs = src.crs

步骤3:绘制可视化图件

fig, ax = plt.subplots(figsize=(10, 10), dpi=100)

# 可选:仅保留玉米、大豆两类显示,其余像素设为背景
img[~np.isin(img, [corn_val, soybean_val])] = 0

# 绘制栅格,使用官方配色
im = ax.imshow(img, extent=extent, cmap=cdl_cmap, vmin=0, vmax=max_val)

# 可选:叠加飞行路径等矢量数据,注意要转成和栅格一致的坐标系
# flight_path = gpd.read_file('飞行路径文件路径.shp').to_crs(crs)
# flight_path.plot(ax=ax, color='red', linewidth=1.5, label='飞行路径')

# 添加自定义图例
legend_elements = [
    Patch(facecolor=color_list[corn_val][:3], label='玉米'),
    Patch(facecolor=color_list[soybean_val][:3], label='大豆')
]
ax.legend(handles=legend_elements, loc='upper right', fontsize=12)

ax.set_xlabel('经度', fontsize=12)
ax.set_ylabel('纬度', fontsize=12)
ax.set_title('2020年艾奥瓦州玉米大豆分布', fontsize=14)
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:39:01