【发布时间】:2018-05-17 17:37:35
【问题描述】:
我正在处理一些网格化的温度数据,我已将其分类为一个矩阵,其中每个单元格都可以是两个类别之一 - 为简单起见,假设为 0 或 1。对于每个类,我想计算斑块统计数据,灵感来自FRAGSTATS,它在景观生态学中用于表征栖息地斑块的形状和大小。
就我而言,补丁是同一类的相邻单元的集群。这是一个示例矩阵,mat:
mat <-
matrix(c(0,1,0,
1,1,1,
1,0,1), nrow = 3, ncol = 3,
byrow = TRUE)
0 1 0
1 1 1
1 0 1
mat 中的所有 1 形成一个补丁(我们将忽略 0),为了计算各种不同的形状指标,我需要能够计算周长(即外边缘的数量)。
编辑 抱歉,我显然无法发布图片,因为我没有足够的声誉,但您可以在下面 G5W 答案的黑线中看到 1 的外边界代表我所指的外边缘。
我可以手动计算 1 的补丁有 14 个外部边缘,并且我知道面积(即单元数)为 6。根据He et al. 和 this other question 的论文,我已经弄清楚如何计算内边缘的数量(本例中为 5),但我真的很难为外边缘做同样的事情!我认为这与补丁形状与面积较小的最大整数正方形(在本例中为 2 x 2 正方形)相比的方式有关,但到目前为止,我的研究和思考都无济于事。
注意我知道包SDMTools,它可以计算各种FRAGSTATS 指标。不幸的是,返回的指标被处理得太多了,例如而不仅仅是聚合指数,我需要知道用于计算它的实际数字(观察到的共享边数/最大共享边数)。
这是我在这里的第一篇文章,所以我希望它足够详细!在此先感谢:)
【问题讨论】:
-
14号是怎么得到的?甚至 5 个?
-
数字 14 是我要计算的数字,我之前只是手动计算的(计算 G5W 答案中的黑线)。我通过计算相邻单元格具有相同值的实例数(基于this post)然后除以 2 来计算数字 5(G5W 答案中的红线)。
标签: r