欢迎光临散文网 会员登陆 & 注册

基于Matlab批量计算栅格(土地利用)影像中的各种地类面积

2022-11-24 20:12 作者:研究生小小小王  | 我要投稿


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')


方法为本人的计算方法,如果有错误还请指出。

基于Matlab批量计算栅格(土地利用)影像中的各种地类面积的评论 (共 条)

分享到微博请遵守国家法律