matlab计算网格人为干扰度方法
以土地利用类型数据为底图,利用ARCGIS创建渔网工具创建渔网,以每一个网格为评价单元,计算人为干扰度。并把人为干扰度赋值给各网格。
具体步骤详见:刘富强,吴涛,蒋国俊, 等.海岸线与海岸景观格局对人为干扰度的动态响应——以营口市南部海岸为例[J].生态学报,2017,37(22):7427-7437. DOI:10.5846/stxb201609211902
具体计算公式如下:
MATLAB文件:
叠加渔网后的土地利用类型数据;
利用土地利用类型裁剪好的渔网面数据
MATLAB代码如下:
clc;
clear;
MAP = shaperead('E:\60m\60mwanggemian1.shp'); %土地利用类型与渔网的叠加文件
RENWEI = shaperead('E:\60m\60mrenwenganraomian1.shp'); %渔网面文件
date.ID=[MAP.FID_c60_Fe]; %渔网FID
ID_RENWEI=[RENWEI.OBJECTID]; % 渔网FID
date.LC=[MAP.ZHEJ1995_I]; %土地利用类型数据
date.area=[MAP.Shape_Area]; %每一个小块的面积
len1= length(ID_RENWEI);
len2= length(date.LC);
for i=1:len2 %给斑块赋值
t=date.LC(i);
switch(t)
case {41,42,43}
date.coef(i)=1; % 水域
case {45,46}
date.coef(i)=2; % 滩涂
case {21,22,23,24}
date.coef(i)=3; % 林地
case {31,32,33}
date.coef(i)=4; % 草地
case {111,112,113.121,122,123}
date.coef(i)=5; % 耕地
case {52 53}
date.coef(i)=6; % 其它建筑用地
case {51}
date.coef(i)=7;
% 城镇用地
end
end
for j=1:len1
sum = 0; % sum每一个评价单元的总面积
n = 0;
X=find( date.ID == ID_RENWEI(j));
len3=length(X);
for k=1:len3
sum = sum + date.area(X(k));
n=n+1;
temp.coef(n) = date.coef(X(k)); %记录第J个评价单元内的各斑块的干扰指数
temp.area(n) = date.area(X(k)); %记录第J个评价单元内的各斑块的面积大小
end
u = 0; %u为干扰指数
for m = 1:n
temp_HDI = (temp.area(m)/sum)*temp.coef(m);
u = u + temp_HDI;
end
HDI(j,1) = u; %记下每个中心点的干扰指数
temp.coef=[];
temp.area=[];
temp_HDI=[];
end
HDI1=num2cell(HDI);
l4=length(HDI)
for m=1:l4
RENWEI(m).renwei=HDI(m,1);
end
shapewrite(RENWEI,'E:\60m\fuzhiyuwang.s