在天地图官网下载的土地覆盖数据,VALUE值有0,编码的土地利用类别从0开始,如何重分类,使编码的土地利用类别从1开始?怎么样数据处理才能符合PLUS模型的要求?


在天地图官网下载的土地覆盖数据,VALUE值有0,编码的土地利用类别从0开始,如何重分类,使编码的土地利用类别从1开始?怎么样数据处理才能符合PLUS模型的要求?


晚上好🌙🌙🌙
本答案参考通义千问
在使用天地图官网下载的土地覆盖数据时,若VALUE值从0开始,而您希望将其重分类为从1开始的编码,以满足PLUS模型等某些生态模型对输入数据的要求(如:确保类别编号从1开始),您可以按照以下步骤进行处理。
VALUE 字段可能从 0 开始;加载土地覆盖数据
.tif 文件)。打开“重分类”工具
设置重分类规则
VALUE;保存输出结果
.tif),点击运行。验证结果
VALUE 是否已从 1 开始。注意: 如果原始数据中没有 0 类别,可以忽略此操作;但为了符合 PLUS 模型要求,建议统一调整。
import numpy as np
from osgeo import gdal
# 输入和输出文件路径
input_raster = 'landcover.tif'
output_raster = 'reclassified_landcover.tif'
# 打开栅格文件
ds = gdal.Open(input_raster)
band = ds.GetRasterBand(1)
array = band.ReadAsArray()
# 将 VALUE=0 的像素值改为 1
array[array == 0] = 1
# 获取元数据
geotransform = ds.GetGeoTransform()
projection = ds.GetProjection()
band_count = ds.RasterCount
cols = ds.RasterXSize
rows = ds.RasterYSize
# 创建新栅格文件
driver = gdal.GetDriverByName('GTiff')
out_ds = driver.Create(output_raster, cols, rows, band_count, band.DataType)
out_ds.SetGeoTransform(geotransform)
out_ds.SetProjection(projection)
# 写入重分类后的数据
out_band = out_ds.GetRasterBand(1)
out_band.WriteArray(array)
# 关闭文件
out_ds.FlushCache()
ds = None
out_ds = None
说明: 上述代码将
VALUE=0的像元修改为1,其他值保持不变。这一步是使数据符合 PLUS 模型要求的关键。
VALUE 值从 1 开始;PLUS 模型对土地利用数据有以下基本要求:
因此,在完成重分类后,建议进一步检查:
VALUE=0 的区域;| 步骤 | 方法 | 说明 | |------|------|------| | 1 | QGIS 重分类工具 | 直观易用,适合非编程用户 | | 2 | Python(GDAL/Rasterio) | 自动化处理,适合批量处理 | | 3 | 验证结果 | 确保数据符合 PLUS 模型要求 |
最终目标:
通过重分类,使土地利用数据的 VALUE 值从 1 开始,从而满足 PLUS 模型对输入数据的格式要求。