LUCC土地利用数据中的栅格属性表,以武汉大学为例,计算各种地类的面积
计算的基本原理就是用过把栅格值相同的格子进行累计,最后乘以格子的面积 转化为公顷;可能这种算法会存在误差,但相对于栅格转面,再进行融合在计算快的多;
武汉大学土地利用
代码部分 个人处理的代码
clc
clear
%% 面积单位参数
k=900;
out=[];
final=[];
%遍历循环读取所有tiff文件
% 注意区别每个文件夹名称
file_path = 'E:\\DATA\\GF\\LP4\\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.tif'));%获取该文件夹中所有TIF格式的图像
img_num = length(img_path_list);%获取图像总数量
for k=1:img_num
% 读取每个文件的名称
file_name=img_path_list(k).name;
lucc=imread(file_name);
%读取地类栅格的值 右键查看imerad数据 此处需要更改值
none1=length(find(lucc==702));
none2=length(find(lucc==701));
el=none2+none1;%其他
tree1=length(find(lucc==101));
tree2=length(find(lucc==102));
tree3=length(find(lucc==103));
tree=tree1+tree2+tree3;% 林地
gc=length(find(lucc==201)); % 灌丛
grassland1=length(find(lucc==301));
grassland2=length(find(lucc==302));
grassland3=length(find(lucc==303));
grass=grassland3+grassland2+grassland1;%草地
apple=length(find(lucc==402));% 果园
cropland=length(find(lucc==401));%耕地
people=length(find(lucc==501));%人类建设用地
water1=length(find(lucc==601));
water2=length(find(lucc==602));
water3=length(find(lucc==603));
water=water1+water2+water3;%水体
%% 输出数组进行面积计算 并转化为公顷
out=[tree gc grass cropland apple people water el]; %此处需要更改
out=out*90*90*0.0001;% 依据栅格的大小计算面积转化为公顷,可能计算下来会有一些误差
final=[final;out]; %
disp(file_name)
end
xlswrite('LP4.xls',final); %写入excel
disp('all is ok')
武汉大学土地利用计算
clc
clear
%% 面积单位参数
k=900;
out=[];
final=[];
%遍历循环读取所有tiff文件
% 注意区别每个文件夹名称
file_path = 'E:\\DATA\\LUCC武大1985-2021\\LP1\\';% 图像文件夹路径
img_path_list = dir(strcat(file_path,'*.tif'));%获取该文件夹中所有TIF格式的图像
img_num = length(img_path_list);%获取图像总数量
for k=1:img_num
% 读取每个文件的名称
file_name=img_path_list(k).name;
lucc=imread(file_name);
%读取地类栅格的值 右键查看imerad数据
none=length(find(lucc==0));
cropland=length(find(lucc==1));
forest=length(find(lucc==2));
shrub=length(find(lucc==3));
grassland=length(find(lucc==4));
water=length(find(lucc==5));
snowice=length(find(lucc==6));
berren=length(find(lucc==7));
impervious=length(find(lucc==8));
waterland=length(find(lucc==9));
%% 输出数组进行面积计算 并转化为公顷
out=[none cropland forest shrub grassland water snowice berren impervious waterland];
out=out*900*0.0001;
final=[final;out];
disp(file_name)
end
xlswrite('LP5.xls',final);
disp('all is ok')
方法为本人的计算方法,如果有错误还请指出。