網格人為干擾度計算方法的matlab程式碼實現

qq_39870251發表於2020-12-31

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

相關文章