MATLAB自动化处理:批量计算土地利用栅格影像中的地类面积

cut-off

LUCC土地利用数据中的栅格属性表,以武汉大学为例,计算各种地类的面积 

计算的基本原理就是用过把栅格值相同的格子进行累计,最后乘以格子的面积 转化为公顷;可能这种算法会存在误差,但相对于栅格转面,再进行融合在计算快的多;

武汉大学土地利用

cut-off

cut-off

代码部分 个人处理的代码

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

cut-off

武汉大学土地利用计算

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

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

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空