如何在Matlab中的1ac移动分析窗口中计算树覆盖百分比?

时间:2014-02-07 01:57:30

标签: matlab analysis arcgis

在附带的Matlab脚本中,生成随机位置并为其指定值1-12。假设每个位置> = 1(即阵列中的值)是树位置,并且每个值是树冠层半径。我有兴趣计算1 ac(例如63.614 x 63.614)移动分析窗口中的冠层面积百分比。我们还假设结果图像中的一个像素等于1m。在ArcGIS中,我将使用Focal Statistics进行此类计算。对于所有真正的程序员:我应该如何使用Matlab进行这种类型的计算?

% Generate a totally black image to start with.
m = zeros(300, 400, 'uint8');

% Generate 1000 random "tree" locations.
numRandom = 1000;
linearIndices = randi(numel(m), 1, numRandom);

% Assign a radius value of 1-12 for each tree
m(linearIndices) = randi(12, [numel(linearIndices) 1]);

% Display it.  
image(m);
colormap(gray); 

1 个答案:

答案 0 :(得分:1)

不完全确定如何计算百分比面积(不确定1ac的含义),但一种方法是使用nlfilter。例如,

percentAreaImage = nlfilter(double(m), [63 63], @myfun);

其中:

function pArea = myfun(block)
    % block is 63 x 63 pixles.
    sumRadii = sum(block(:)); % sum of canopy radii
    blockArea = size(block, 1)*size(block, 2);
    pArea = sumRadii / blockArea;

代码显然可能需要一些修改,关于块大小和百分比面积的计算(pArea)。 blockArea是常量,所以当然,它可以在myfun之外声明一次以提高性能。为了清晰起见,我把它留下来了。