基于Matlab批量計(jì)算柵格(土地利用)影像中的各種地類面積

LUCC土地利用數(shù)據(jù)中的柵格屬性表,以武漢大學(xué)為例,計(jì)算各種地類的面積?
計(jì)算的基本原理就是用過把柵格值相同的格子進(jìn)行累計(jì),最后乘以格子的面積 轉(zhuǎn)化為公頃;可能這種算法會(huì)存在誤差,但相對(duì)于柵格轉(zhuǎn)面,再進(jìn)行融合在計(jì)算快的多;



代碼部分 個(gè)人處理的代碼
clc
clear
%% 面積單位參數(shù)
k=900;
out=[];
final=[];
%遍歷循環(huán)讀取所有tiff文件
% 注意區(qū)別每個(gè)文件夾名稱
file_path = 'E:\\DATA\\GF\\LP4\\';% 圖像文件夾路徑
img_path_list = dir(strcat(file_path,'*.tif'));%獲取該文件夾中所有TIF格式的圖像
img_num = length(img_path_list);%獲取圖像總數(shù)量
for k=1:img_num
% 讀取每個(gè)文件的名稱
file_name=img_path_list(k).name;
lucc=imread(file_name);
%讀取地類柵格的值 右鍵查看imerad數(shù)據(jù) 此處需要更改值
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));%人類建設(shè)用地
water1=length(find(lucc==601));
water2=length(find(lucc==602));
water3=length(find(lucc==603));
water=water1+water2+water3;%水體
%% 輸出數(shù)組進(jìn)行面積計(jì)算 并轉(zhuǎn)化為公頃
out=[tree gc grass cropland apple people water el]; %此處需要更改
out=out*90*90*0.0001;% 依據(jù)柵格的大小計(jì)算面積轉(zhuǎn)化為公頃,可能計(jì)算下來會(huì)有一些誤差
final=[final;out]; %?
disp(file_name)
end
xlswrite('LP4.xls',final); %寫入excel
disp('all is ok')

武漢大學(xué)土地利用計(jì)算
clc
clear
%% 面積單位參數(shù)
k=900;
out=[];
final=[];
%遍歷循環(huán)讀取所有tiff文件
% 注意區(qū)別每個(gè)文件夾名稱
file_path = 'E:\\DATA\\LUCC武大1985-2021\\LP1\\';% 圖像文件夾路徑
img_path_list = dir(strcat(file_path,'*.tif'));%獲取該文件夾中所有TIF格式的圖像
img_num = length(img_path_list);%獲取圖像總數(shù)量
for k=1:img_num
% 讀取每個(gè)文件的名稱
file_name=img_path_list(k).name;
lucc=imread(file_name);
%讀取地類柵格的值 右鍵查看imerad數(shù)據(jù)
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));
%% 輸出數(shù)組進(jìn)行面積計(jì)算 并轉(zhuǎn)化為公頃
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')
方法為本人的計(jì)算方法,如果有錯(cuò)誤還請(qǐng)指出。