中国1:100万植被类型空间分布数据(免费):侯学煜院士权威图集数字化 · 11大类/54亚类/796群系完整技术说明
摘要:植被覆盖度、碳储量、生物多样性研究的必备权威底图——侯学煜院士《1:100万中国植被图集》栅格版。覆盖 11 大类/54 亚类/796 群系,1km 分辨率,846 个 Value 代码,配套 12 类配色 CSV 与 Python 可视化代码,数据包完全免费获取。
关键词:中国植被图集 · 1:100万植被类型 · 群系代码 · ArcGIS配色 · CIELAB转sRGB · 侯学煜 · resdc
数据代码:
Vegetation-1M系列索引:18.数字高程模型 DEM | 20.中国100万植被类型(本文)
0. 数据档案
1. 免费获取方式
数据由微信公众号 YouGIS顽石 整理分享,完全免费。两种方式任选其一。
方式一:YouGIS 公众号关键词(推荐)
关注微信公众号 YouGIS顽石,发送关键词:
植被类型分布 → 完整 1:100 万植被类型数据包(TIF + 代码表 + 配色 + 制图)
系统自动回复 百度网盘 + 夸克网盘 双链接。
方式二:YouGIS 数据助手
支持在线查看数据元信息(分辨率、坐标系、覆盖范围),适合批量检索。
2. 数据背景
1.1 图集来历
本数据集来源于《1:1 000 000 中国植被图集》,由著名植被生态学家侯学煜院士主编,中国科学院有关研究所、有关部委和各省区有关部门、高等院校等 53 个单位 250 多位专家共同编制,2001 年 5 月由科学出版社正式出版,国内外公开发行。
1.2 学术地位
本图集是我国植被生态学工作者 40 多年来继《中国植被》等专著出版后又一项总结性成果,是国家自然资源和自然条件的基本图件。它详细反映了 1990 年代(出版时间是 2001 年)我国 11 个植被类型组、54 个植被型的 796 个群系和亚群系植被单位的分布状况、水平地带性和垂直地带性分布规律,同时反映了我国 2000 多个植物优势种、主要农作物和经济作物的实际分布状况及优势种与土壤和地面地质的密切关系。
由于本图集属于现实植被图图种,故反映出我国植被近期的质量状况。
1.3 图集规格
图集为四开本,280 页,包括:
1:1 000 000 分幅的中国植被类型图 60 幅
1:10 000 000 的中国地势图、中国植被图和中国植被区划图各 1 幅
中英文对照图例
1.4 应用价值
本图集是国家自然资源和自然地理特征的基本图件,是研究全球环境变化、生物多样性、环境保护与监测等必不可少的科学资料和重要依据。
3. 技术规格
2.1 栅格参数
数据格式:GeoTIFF
数据类型:int32(最大 Value=58611,不可用 int8/int16)
空间参考:WGS84 / EPSG:4326
空间分辨率:0.00833°(约 1 km × 1 km)
覆盖范围:中国陆地全境
Value 字段含义:植被类型代码(详见 §3)
NoData:0
2.2 代码表结构
植被类型代码表.xlsx 共 846 行记录,字段:
4. 分类体系与编码规则
3.1 三级分类体系
11 个植被类型组(大类) ← 顶层
└── 54 个植被型(亚类) ← 中层
└── 796 个群系/亚群系 ← 基础单位(栅格 Value 直接对应)
涉及 2000 多个植物优势种、主要农作物和经济作物。
3.2 11 大类总览
另有 “其他” 类(Value=0 及 9801~9908 等,共 32 个 Value),为水体、冰雪、裸岩、城市等非植被地物。
3.3 Value 编码规则(重要)
栅格像素值(Value)有四段:
附码不影响大类统计——做汇总时按"Value → 亚类 → 大类"对照表 group 即可。
关键提示:Value 最大到 58611,存储时必须使用 int32;误用 int8(max 127)或 int16(max 32767)会导致附码和长附码全部溢出。
5. 配色方案
4.1 配色来源与 CSV 字段
数据包内 植被大类配色.csv 已给出 12 大类的完整配色,字段如下:
CSV 中 Lab 列源自 ArcGIS .lyr 文件(CIELAB 色彩空间存储),R/G/B/Hex 列已按 D65 白点完成转换。直接使用 R/G/B/Hex 即可,无需自己转换。
CSV 原始数据预览:
类别,L,a,b,R,G,B,Hex
其他,59.614,71.599,36.824,255,70,84,#FF4654
栽培植被,85.666,6.550,57.045,255,207,104,#FFCF68
沼泽,64.608,8.812,-53.614,95,157,253,#5F9DFD
灌丛,75.507,-81.840,64.406,0,218,48,#00DA30
...
4.2 从 CSV 读取配色的代码
import csv
def load_color_scheme(csv_path='植被大类配色.csv'):
"""从数据包内的配色 CSV 读取 12 大类配色"""
scheme = {}
with open(csv_path, encoding='utf-8-sig') as f: # utf-8-sig 处理 BOM
for row in csv.DictReader(f):
scheme[row['类别']] = {
'L': float(row['L']),
'a': float(row['a']),
'b': float(row['b']),
'R': int(row['R']),
'G': int(row['G']),
'B': int(row['B']),
'Hex': row['Hex'],
}
return scheme
color_scheme = load_color_scheme()
print(f"共读取 {len(color_scheme)} 个大类配色")
for name, c in color_scheme.items():
print(f" {name:<12} {c['Hex']} RGB({c['R']:>3},{c['G']:>3},{c['B']:>3}) "
f"Lab({c['L']:.1f},{c['a']:.1f},{c['b']:.1f})")
4.3 12 大类完整配色表(读取自 CSV)

4.4 已知问题:针叶林与草甸同色
从 CSV 可直接观察到,针叶林与草甸的 RGB 完全相同(均为 #00A91D,RGB 都是 0,169,29)。原因是两者在 CIELAB 空间中的值(L≈59.7、a≈-68、b≈55)极为接近,经 D65 白点转换后恰好舍入到同一 sRGB 整数像素。
CSV 原始值对比:
类别,L,a,b,R,G,B,Hex
针叶林,59.664,-68.095,54.947,0,169,29,#00A91D
草甸, 59.727,-67.539,55.156,0,169,29,#00A91D ← 完全相同
解决方案(按优先级):
读取 CSV 后,在
color_scheme中覆盖草甸:color_scheme['草甸'] = (154, 205, 50)(#9ACD32 黄绿)按 54 个亚类重新分配色卡(更细致,但工作量大)
仅展示其中一类时无需处理
💡 CSV 已含转换结果:
.lyr文件本身存的是 CIELAB 值,但数据包内的植被大类配色.csv已经把 Lab 和转换后的 sRGB 都列出来了,直接用 R/G/B/Hex 列即可,不需要在代码里再实现一遍 CIELAB → sRGB 转换。
6. 数据包文件构成
完整数据包含 6 部分:
5.1 .lyr 文件加载常见问题
问题 1:图层显示红色感叹号
原因:数据源路径失效(如 .lyr 中保存的源路径为 F:\植被类型.tif,本机无 F: 盘)。
解决:图层右键 → Properties → Source → Set Data Source → 重新指向本机 植被类型.tif。
问题 2:.lyr 无法打开
原配色文件为 ArcGIS 9.x 格式,部分新版本不兼容。
解决:使用数据包内 _10.2.lyr 版本(已转换为 ArcGIS 10.2 兼容格式,向下兼容 10.2-10.8)。
问题 3:颜色显示异常(过饱和或失真)
原因:颜色采用 CIELAB 色彩空间存储,部分软件转换异常。
解决:参考 §4.2,按 Hex 值在 Layer Properties → Symbology → Unique Values 中手动设置。
7. Python 实战代码
6.1 加载与基本信息
import rasterio
import numpy as np
with rasterio.open('植被类型.tif') as src:
arr = src.read(1)
print(f"CRS: {src.crs}")
print(f"Size: {src.width} × {src.height}")
print(f"Resolution: {src.res}")
print(f"BBox: {src.bounds}")
print(f"dtype: {src.dtypes[0]}")
unique_vals = np.unique(arr)
print(f"Unique Values: {len(unique_vals)}")
print(f"Value range: {unique_vals.min()} ~ {unique_vals.max()}")
6.2 加载代码表
import openpyxl
from collections import defaultdict
def load_code_table(xlsx_path='植被类型代码表.xlsx'):
"""加载 Value → 大类/亚类/群系 对照表"""
wb = openpyxl.load_workbook(xlsx_path, data_only=True)
ws = wb['value-code']
mapping = {}
for row in ws.iter_rows(min_row=2, values_only=True):
if row[0] is None:
continue
value = int(row[0])
mapping[value] = {
'code': row[1] or '',
'大类': row[2] or '',
'亚类': row[3] or '',
'群系': row[4] or '',
}
return mapping
code_table = load_code_table()
print(f"代码表共 {len(code_table)} 条记录")
# 反向映射:大类 → Value 列表
big_to_values = defaultdict(list)
for v, info in code_table.items():
if info['大类']:
big_to_values[info['大类']].append(v)
6.3 按大类统计面积
# 按 1 km²/像素 估算(WGS84 下高纬度误差较大,严谨请投影后统计)
print(f"{'大类':<15} {'Value数':>8} {'像素数':>12} {'面积估算(km²)':>15}")
print('-' * 55)
for big_class in sorted(big_to_values.keys(),
key=lambda x: -len(big_to_values[x])):
values = big_to_values[big_class]
count = int(np.isin(arr, values).sum())
print(f"{big_class:<15} {len(values):>8} {count:>12,} {count:>15,}")
# 严谨统计:投影后用 rasterstats
# import rasterstats
# stats = rasterstats.zonal_stats(boundary_shp, '植被类型_albers.tif',
# categorical=True)
6.4 按配色方案渲染全国植被图
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import csv
# 从数据包内 植被大类配色.csv 读取 12 大类配色
color_scheme = {}
with open('植被大类配色.csv', encoding='utf-8-sig') as f:
for row in csv.DictReader(f):
color_scheme[row['类别']] = (int(row['R']), int(row['G']), int(row['B']))
# 针叶林与草甸同色(CSV 原值都是 0,169,29),手动覆盖草甸以区分
color_scheme['草甸'] = (154, 205, 50) # #9ACD32 黄绿
rgb_arr = np.zeros((*arr.shape, 3), dtype=np.uint8)
for big_class, (r, g, b) in color_scheme.items():
values = big_to_values.get(big_class, [])
if not values:
continue
mask = np.isin(arr, values)
rgb_arr[mask] = [r, g, b]
plt.figure(figsize=(14, 12))
plt.imshow(rgb_arr)
plt.title('中国 1:100 万植被类型空间分布', fontsize=15, pad=15)
plt.axis('off')
# 图例(Hex 由 CSV 的 R/G/B 重新拼接)
patches = [mpatches.Patch(
color='#{:02X}{:02X}{:02X}'.format(r, g, b), label=name)
for name, (r, g, b) in color_scheme.items()]
plt.legend(handles=patches, loc='lower left', fontsize=10, framealpha=0.9)
plt.savefig('vegetation_china.png', dpi=200, bbox_inches='tight')
plt.show()
6.5 提取特定大类
# 示例:提取针叶林(83 个 Value)并统计占比
coniferous = big_to_values['针叶林']
mask = np.isin(arr, coniferous)
total_veg = (arr > 0).sum()
print(f"针叶林像素数: {mask.sum():,}")
print(f"占植被总面积: {mask.sum() / total_veg * 100:.2f}%")
# 导出为单独的栅格
profile = src.profile.copy()
profile.update(dtype='uint8', nodata=0, compress='lzw')
with rasterio.open('针叶林_mask.tif', 'w', **profile) as dst:
dst.write(mask.astype('uint8'), 1)
6.6 投影后统计面积(严谨)
# 数据是 WGS84 经纬度,计算面积需先投到等积投影
# 推荐 Albers 等积投影(中国常用参数)
import subprocess
subprocess.run([
'gdalwarp',
'-t_srs', '+proj=aea +lat_1=25 +lat_2=47 +lat_0=105 '
'+lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +units=m',
'-r', 'near', # 分类数据用最近邻,切勿 bilinear/cubic
'植被类型.tif',
'植被类型_albers.tif',
], check=True)
# 重采样方法选择:
# - nearest(最近邻):分类数据必备,不产生中间值
# - bilinear(双线性):连续表面(高程、温度),会产生插值
# - cubic(三次卷积):更平滑,但分类数据禁用
8. 使用注意事项
8.1 数据现势性
本数据反映 1990 年代 植被状况(图集出版于 2001 年)。若研究区域近期有大范围造林、采伐、城市化、农业结构调整,需结合更新的数据交叉验证:
8.2 数据类型选择
Value 最大到 58611(栽培植被长附码),必须使用 int32 存储:
int8(max 127):主码即溢出int16/uint16(max 32767/65535):长附码溢出int32(max 2.1×10⁹):✅ 正确选择
8.3 面积计算与投影
数据为 WGS84 经纬度(EPSG:4326),计算面积前需投影:
# GDAL 投影到 Albers 等积投影(适合全国统计)
gdalwarp -t_srs '+proj=aea +lat_1=25 +lat_2=47 +lat_0=105 +lon_0=0 \
+x_0=0 +y_0=0 +datum=WGS84 +units=m' \
-r near 植被类型.tif 植被类型_albers.tif
重采样方法选择(重要):
nearest(最近邻):✅ 分类数据必备,保持类别值不混
bilinear(双线性):❌ 会产生不存在的中间值
cubic(三次卷积):❌ 同上,且分类意义全失
8.4 配色区分
.lyr 配色文件中针叶林与草甸 RGB 完全相同(#00A91D)。同时渲染两类时务必手动修改其中一个(推荐草甸改为 #9ACD32)。
8.5 .lyr 文件版本
原配色为 ArcGIS 9.x 格式,ArcMap 10.2+ 可向下兼容读取。若加载报错或路径失效,使用数据包内 _10.2.lyr 版本。
8.6 适用尺度
约 1 km × 1 km 分辨率,适合:
✅ 省级、流域级、全国尺度分析
✅ 植被本底调查、生态区划、生物多样性评估
❌ 县级及以下精细尺度(精度不足)
9. 常见问题
Q1: 数据是哪一年的?
反映 1990 年代植被状况,图集出版于 2001 年。研究现状需结合更新数据(CLCD、NDVI、FVC)。
Q2: 分辨率是多少?
约 1 km × 1 km(0.00833° 经纬度网格)。适合省/流域/全国尺度分析,不适合县级。
Q3: 附码(1001、57310)是错误数据吗?
不是。附码对应主码下的亚群系细分,是数据源的精细编码设计。做大类统计时按代码表 group 即可,不影响结果。
Q4: 为什么针叶林和草甸颜色一样?
原始 .lyr 配色文件中两者的 CIELAB 值经 D65 转换后恰好映射到同一 sRGB(#00A91D)。渲染前手动修改其中一个即可。
Q5: 学术引用如何写?
建议引用原出版物:
侯学煜 主编. 1:1 000 000 中国植被图集 [M]. 北京: 科学出版社, 2001.
Q6: 和 CLCD 土地利用数据有什么区别?
本数据:植被生态分类,按群系划分(马尾松林、杉木林),反映自然植被本底
CLCD:土地利用分类,按用途划分(林地、耕地、建设用地),反映人类利用
两者互补:本数据生态意义更强,CLCD 现势性更好。
Q7: 商业使用是否合规?
图集由科学出版社公开出版,数据集源自公开渠道。学术使用建议引用原出版物;商用建议联系原出版方确认许可。
10. 参考文献
侯学煜 主编. 1:1 000 000 中国植被图集 [M]. 北京: 科学出版社, 2001.
中国科学院中国植被图编辑委员会. 1:1 000 000 中国植被图集(说明书). 2001.
资源环境科学与数据平台. https://www.resdc.cn
YouGIS 数据助手. https://yougis.com.cn/res/home
数据整理:微信公众号 YouGIS顽石
数据获取:公众号关键词植被类型分布/ YouGIS数据助手
更新日期:2026 年


评论区