R语言景观格局指数计算:从指标内涵到批量实现
2026/9/19 19:00:04 网站建设 项目流程

简介:景观格局指数是景观生态学中描述景观空间结构与格局特征的重要指标体系,适用范围覆盖生态学、地理学、城乡规划等领域的科研与教学场景。这份PDF文档系统梳理了面积指标、密度大小及差异、边缘指标和形状指标四大类常用指数,逐一给出AREA、CA、PLAND、TA、LPI、NP、PD、TE、ED、SHAPE、FRACT、LSI等参数的英文缩写、全称、中文名称、应用尺度、单位及取值范围,并附带核心面积指标等补充内容,信息密度高。文档采用条目化编排,便于在景观格局计算或使用Fragstats、ArcGIS等软件时快速检索对照。资源为单个PDF文件,压缩包仅12KB,简洁轻量,随用随查。目前已有2013人学习浏览,适合生态学相关专业学生、研究人员以及从事土地利用规划的分析人员作为工具手册,帮助快速理解各指数含义、避免指标误用,提升科研与写作效率。

1. 景观格局指数到底在算什么

一个看似简单的问题:分类影像出来了,空间格局怎么度量。这个标题要解决的就是这件事。土地利用分类图只能回答“这里是什么”,回答不了“这片林是连成整体还是碎成几十块”“城市扩张是摊大饼还是散点式”,这些问题才是生态评价和空间规划真正需要量化的。景观格局指数用一组统计值描述斑块的面积、数量、形状、边缘和彼此邻接关系,把格局差异变成可计算、可回归、可比对的变量。下面从指标的含义讲起,再给出可复现的R计算流程、参数设置和尺度效应,最后补上最容易导致对比结果失真的背景值、邻域和边界问题。适合做土地利用变化分析、生态质量评估、城乡规划的从业者,也适合刚接触空间统计、想在项目里落地这套指标的工程师。

2. 指标体系拆解:从斑块到景观层级

2.1 先分清斑块级、类型级和景观级

景观格局指数按计算对象分为斑块级、类型级和景观级。斑块级针对单个连通区域,计算它的面积、周长、形状等;类型级把同一类地物的所有斑块汇总统计,例如全区所有林地斑块的数量、总面积;景观级则把所有类别放在一起计算多样性、均匀度和整体聚集程度。FRAGSTATS和R的landscapemetrics在实现上保持一致,指标代码里的lsm_p_lsm_c_lsm_l_前缀就分别对应这三个层级。做区域总体评价时主要看景观级;研究某个特定地类的破碎化时看类型级;斑块级很少直接进入统计分析,更多用于选出关键大斑块,或者生成斑块尺度专题图。

2.2 类型层级的四个基础指标

类型层级最先要看的是斑块类型面积(CA)、斑块数量(NP)、斑块密度(PD)和最大斑块指数(LPI)。

斑块类型面积(CA)是该类别在分析区域内的总面积,单位常用公顷。它本身不包含结构信息,但后续多个指数都以它作为分母,比如斑块密度和最大斑块指数的计算都依赖它。斑块数量(NP)统计的是该类别中独立斑块的个数,独立性的定义由邻接规则决定:4邻域仅把上下左右相邻的像元视为连通,8邻域把对角相邻的也算进去。同一张分类图在8邻域下会比4邻域得到更少的斑块数,这个差异在零散小斑块多的影像里尤其明显。斑块密度(PD)是斑块数量除以景观总面积,常用“个/平方千米”表示。它归一化了面积差异,常用于不同区域间的破碎化比较,但PD对细小碎斑非常敏感,分类结果中孤立像元数量越多,PD被抬得越高。最大斑块指数(LPI)用最大斑块的面积除以景观总面积再乘100,得到百分比。LPI反映优势斑块的主宰力:一个区域LPI高,说明某类地物高度集中;当大斑块不断被切割,LPI会快速下降。

下表把这几类基础指标和后面章节会提到的形状相关指标放在一起,便于对照:

指标缩写层级常用单位说明
斑块类型面积CA类型ha某类别的面积总和
斑块数量NP类型独立连通斑块的个数
斑块密度PD类型/景观个/km²单位面积上的斑块数
最大斑块指数LPI类型/景观%最大斑块面积占全区比例
边缘密度ED类型/景观m/ha单位面积上的边缘长度
景观形状指数LSI类型/景观与正方形相比的边界复杂度
散布与并列指数IJI类型/景观%不同类型边界的混合程度
聚集度指数AI类型/景观%同类型像元聚集程度
香农多样性指数SHDI景观多度与均匀度的综合
香农均匀度指数SHEI景观0~1SHDI相对最大值的比例

2.3 形状、边缘和配置维度指标

边缘密度(ED)的计算方式是总边缘长度除以区域总面积,单位常用米每公顷。ED越大,意味着景观被边缘切割得越碎,内部生境的比例越低。它对分辨率很敏感:栅格从10米重采样到30米后,边缘长度通常变小,同一地类的ED也跟着下降。若做多期比较,需要保证影像分辨率一致,否则数字变化可能反映的是制图尺度差异,而不是真实格局变化。

景观形状指数(LSI)把总边缘长度与一个同面积正方形可能的最小边缘长度作比较,最小值为1,值越大形状越复杂。评价耕地整理、城镇扩张这类受人类改造较强的地物时,LSI比ED更能体现边界的不规则程度。需要留意不同软件实现里LSI的公式存在细微差别,在结论里直接用FRAGSTATS的绝对值和R包结果对比不太稳妥,看变化趋势会更可靠。

类型之间的配置关系用散布与并列指数(IJI)和聚集度指数(AI)描述。IJI衡量不同类型斑块彼此交错的情况,区域内地类混合程度越高,IJI数值越大;各类型呈大片清晰分区,IJI越低。AI则衡量同一类型像元在空间上的聚集程度,关注的是“同类之间”的邻接。两者的区别很关键:分析生境隔离问题用IJI,分析同类连接关系用AI或斑块结合度(COHESION)。

2.4 景观层级多样性与均匀度指标

景观层级最常出现的多样性指标是香农多样性指数(SHDI)和香农均匀度指数(SHEI)。SHDI的计算式为 -∑(pi × ln pi),pi为第i类面积占全区的比例。SHDI同时受类别数量和面积分布均匀程度影响:类别越多、各类面积越接近,值越高。SHEI则把SHDI除以类别数相等时可能达到的最大值,结果落在0到1之间。SHEI适合在不同类别数量的区域间比较,SHDI更适合同一区域的多年对比。

实际项目中,SHDI有一个容易被忽略的前提:参与计算的类别必须都是真实地类。若把研究区外、背景区域设为0类参与统计,SHDI会被显著放大,这个问题在最后一章还会结合排错流程再提一次。

2.5 指标冗余与控制

见过不少把十余个指标一股脑算出来,再全部放进统计模型的做法。最后出现的往往是共线性问题,因为边缘密度与景观形状指数、香农多样性与均匀度之间高度相关,多个指标实际在表达同一件事。更合理的选择是每个维度选一两个即可:破碎度用PD或平均斑块面积,形状用ED或LSI,聚集程度用AI,多样性用SHDI或SHEI。四个维度加在一起,通常就足以支撑一个比较完整的变化解释,也能给后面的回归或聚类步骤留出自由度。

3. 用R的landscapemetrics把分类影像变成指标表

3.1 工具选择:R包和FRAGSTATS怎么配合

FRAGSTATS是景观格局分析的老牌工具,很多从业者的第一份结果来自它。但实际工程里它的交互式界面不适合批量处理几十期影像,参数重现也依赖人工记录,和后续统计流程衔接并不顺。R的landscapemetrics包把这套计算做了开源实现,支持批量栅格处理,输出长格式数据表,能直接接入tidyverse统计流程,在多期趋势分析和自动化清洗场景中效率更高。

不必在两者之间二选一。日常批量计算用R完成;如果项目方法论里已有FRAGSTATS先例,或者交付要求指定这个工具,就同时用FRAGSTATS验证一次,两边在相同参数设置下,结果应当是可比且一致的。

这里先说明landscapemetrics的指标命名规则。名称由三部分组成:lsm_层级_指标缩写,比如lsm_l_shdi代表景观级香农多样性,lsm_c_pd代表类型级斑块密度,lsm_p_area代表单个斑块面积。手动拼写长指标名容易错,先运行list_lsm()查看当前版本支持的指标清单,再复制需要的名称进入代码,是避免低级错误的好习惯。

3.2 输入栅格的数据组织要求

输入数据有三个必须满足的条件:分类值必须是正整数,比如耕地=1,林地=2,建设用地=3;影像必须带定义好的坐标参考系;研究区外和无效像元必须用NoData表示,不能用0类代替。对照下表逐项检查能避免大部分计算报错:

检查项必须满足失败时的常见表现
分类值正整数或整型计算报错或类别数暴增
坐标参考有投影且以米为单位面积、边缘数值整体失真
背景值以NoData表示总面积虚高到覆盖图幅

先看一段校验代码,计算前把硬性问题拦在入口处:

library(terra) library(landscapemetrics) lc <- rast("landcover_2020.tif") # 检查投影信息 print(crs(lc)) # 检查类别值是否为整数 vals <- unique(values(lc)) print(vals) if (any(!is.na(vals) & vals != round(vals))) { stop("栅格包含非整数类别,请先重分类") }

这里用terra::rast()读取栅格,crs()打印坐标参考系判断是否包含投影信息,unique(values())列出所有类别值。分类数据必须是整数,这个检查能把浮点型的残留值找出来。如果不小心把连续型栅格当作类别导入,会在这个环节被直接拦截。

如果属性表里有地类名称,可以把栅格转成因子后附加名称:

lc <- as.factor(lc) levels(lc) <- data.frame(ID = 1:3, name = c("cropland", "forest", "built"))

转成因子后再计算,输出结果会多出类别名称的信息列,整理报告时能直接按名称筛选,而不是靠记忆里的类别数值。

3.3 计算景观层级指标的最小代码

景观层级指标批量计算的入口是calculate_lsm

metrics <- calculate_lsm( landscape = lc, level = "landscape", metrics = c( "lsm_l_ta", # 景观总面积 "lsm_l_pd", # 斑块密度 "lsm_l_lpi", # 最大斑块指数 "lsm_l_ed", # 边缘密度 "lsm_l_lsi", # 景观形状指数 "lsm_l_ai", # 聚集度指数 "lsm_l_shdi", # 香农多样性 "lsm_l_iji" # 散布与并列指数 ) ) print(metrics)

landscape参数接收一个SpatRaster对象;level设置计算层级,这里用landscape,需要类型级时改成class,单斑块级则是patchmetrics参数显式指定指标代码,只保留分析需要的结果。函数会在计算前自动检查数据完整性和投影信息。

3.4 类型级破碎化和连通性计算

只针对某个地类做破碎化分析,要用类型层指标。函数会返回所有类别的结果,所以后面必须做一次筛选:

class_metrics <- calculate_lsm( landscape = lc, level = "class", metrics = c("lsm_c_ca", "lsm_c_np", "lsm_c_pd", "lsm_c_lpi") ) # 提取地类为2(比如林地)的指标 target_class <- 2 forest_metrics <- class_metrics[class_metrics$class == target_class, ] print(forest_metrics)

输出结果中class列放着类别整数值,按它筛选即可取出目标类别的四项基础指标。如果需要分析林地的聚集和连通特性,再把lsm_c_ailsm_c_cohesion加到metrics参数里。目标类别建议定义成变量,避免在多类别数据中硬编码数值,后续换成其他地类时只需改一个位置。

3.5 批量计算多期影像

最后是批量过程。将多期影像文件放在同一个目录,用list.files()读取文件路径,再通过循环逐期计算:

file_list <- list.files("分类影像/", pattern = "tif$", full.names = TRUE) results <- lapply(file_list, function(f) { r <- rast(f) tmp <- calculate_lsm(r, level = "landscape", metrics = c("lsm_l_shdi", "lsm_l_pd")) tmp$source <- basename(f) tmp }) all_years <- do.call(rbind, results) write.csv(all_years, "景观格局指标_多期.csv", row.names = FALSE)

关键点在于tmp$source <- basename(f),把来源文件名记进结果,否则多期数据合并后很难回溯是哪一年的指标,出了问题也无法定位。这段代码顺带覆盖了后续统计分析所需的长表格格式,每一年一组计算结果,按年份排序后就能直接用于趋势检验。

4. 参数设置、尺度效应和结果解读

4.1 邻域规则里的方向陷阱

斑块识别的方式直接影响斑块数量(NP)和连接相关指标。R包landscapemetrics默认使用8邻域方向,FRAGSTATS中需要手动选择4或8。8邻域将对角相邻的像元也并入同一个斑块,4邻域则把这类连接关系拆开。在建筑密集、道路分割明显的区域,这个差异会比较显著。

检验数据对邻域规则的敏感程度,可以算两组PD来做对比:

pd_4 <- calculate_lsm(lc, level = "landscape", metrics = "lsm_l_pd", directions = 4) pd_8 <- calculate_lsm(lc, level = "landscape", metrics = "lsm_l_pd", directions = 8)

对比两个结果,如果PD的差异超过百分之十,说明该影像中存在大量仅靠角点相连的像元,这时必须在分析文档里标注采用了哪种规则。更稳妥的做法是:如果项目没有特殊兼容性需求,优先采用与对比研究一致的邻域规则;如果对比研究没有说明,就以8邻域为主结果,把4邻域作为敏感性分析的附表放在附录里。

4.2 分辨率和范围对数值的影响

分辨率改变了指标的下限尺度。10米影像能把小水池、单块农田识别出来,30米影像里这些小斑块可能就并入其他类型,NP、PD、ED、SHDI都跟着变化。多期影像应先统一到同一分辨率,并采用最近邻重采样,保持地类值不被插值出小数。范围效应则体现在分析单元的选择上:整个市域与单一功能区的SHDI差别很大。更科学的做法是将分析范围限定在稳定的地形单元、流域或规划管控单元,并把分析边界的设定理由写清楚。

分析单元的边界还会截断斑块。单元边缘处的斑块本来可能向外延伸,却因裁剪被强制闭合成一条新边界,ED和COHESION因此被系统性影响。缓解这个问题的常见做法是使用缓冲区方案:先建一个比实际研究范围更大的缓冲分析区,计算整体指标后,再裁剪出目标范围单独计算一次,把两组结果放在一起评估边缘影响幅度。如果差异较小,可以使用简单裁剪的结果;如果差异不可忽略,报告里就要明确说明边缘效应的范围,不能只给一个被边界截断的数值。

4.3 结合统计模型解读指标趋势

在项目报告里,把指标放到变化框架下解释会更有说服力。比如用Mann-Kendall检验判断时间序列是否有显著趋势:

library(Kendall) # all_years是按年份排列、包含某指标value列的结果 mk <- MannKendall(all_years$value) print(mk)

Mann-Kendall检验不依赖正态假设,即使只有七八期数据也能给出趋势方向和显著性。得到趋势结果后,再与土地分类变更矩阵配合解读。当PD显著上升伴随林地转出面积增加,可以推断破碎化确实与林地流失相关;单纯把PD算出来不做统计推断,报告很难形成闭环。

解释指标时还要注意地物类别本身的属性。例如道路、建筑边缘提取得越细,ED越高,这和生境破碎化不是一回事;农业区地块边界整齐,LSI普遍偏低是常态。因此,不能只看指标数字高低就下生态判断,要先确认指标在当前地物类别组合下的含义是否仍然成立。

5. 排错与验证:交付前的三个收尾动作

5.1 先处理背景值

背景值问题是格局指数里最经典的翻车点。很多分类栅格把研究区外或者无数据区域设为0,或者为了便于镶嵌,把水体当作0类背景。这会让lsm_l_ta直接变成图幅面积,SHDI、PD、ED也跟着失真。快速自查思路是:先算一下有效像元对应的总面积,再和研究区实际面积对照,如果差异超过一个像元的面积,就说明有非真实类别进入了统计。

# 将0类背景转为NA,避免把无效区域计入指标 lc_clean <- classify(lc, cbind(0, NA)) # 重算总面积做交叉验证 total_ha <- global(lc_clean, "sum", na.rm = TRUE) * (res(lc)[1]^2 / 10000) cat("有效面积(ha):", total_ha, "\n")

classify(lc, cbind(0, NA))把值为0的像元全部定义为无效值;随后用global统计有效像元数量,并按分辨率换算成公顷。这样得到的面积应当与calculate_lsm输出的lsm_l_ta基本相等。如果不相等,再检查投影单位是否为米,或栅格是否发生过重采样导致的面积换算偏差。

5.2 用交叉验证保证结果可靠

交叉验证的办法可以这样组织:

  1. 在R里随机裁剪出一个小的子区域,用landscapemetrics计算该子区的LSI和ED;
  2. 用FRAGSTATS读入相同子区,设置同样的邻域规则和背景值处理,比较两边的结果;
  3. 两者在小数位级别不一致是正常的,如果趋势或数量级不同,首选排查边缘处理和像元邻接定义。

另一种自检方法是直接对比面积守恒。重分类前后各类型CA不应发生改变;斑块分割后各斑块面积之和应该等于原来的CA。这类自检对没有FRAGSTATS的环境同样适用,不需要额外安装其他软件。

5.3 时间序列数据的复算参数封装

多年期数据做破碎化趋势研究时,指标差异中可能混杂着数据来源的变化。比如2015年用30米Landsat,2020年用10米Sentinel分类,分辨率一换,NP、ED、SHDI的变化大概率来自数据源差异,而不是真实生态变化。解决办法是把年份和数据来源作为变量保存在结果中,对比时不看绝对大小,转而比较同来源数据的相对变化。

我在交付结果时会把NoData处理、邻域规则、分辨率、计算范围做成一张固定参数配置表,写进结果文件旁边,保证别人拿到数据能复算。配置表的结构可以简化成两列:

参数取值
影像坐标系EPSG:32650
栅格分辨率30 m
邻域规则8邻域
背景处理0类转为NA
分析范围研究区矢量边界裁剪
计算工具R 4.3,landscapemetrics 2.x

现在跑全量计算之前,我会习惯性地先输出最小一块已有范围对照样本,和文献实测值或人工目视判读结果比对一遍,确认数量级和相对方向一致后再放开批量;这套顺序能替整个分析流程省下最多的返工时间。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询