斯坦福大学INVEST模型,我将其开源到GEE上,欢迎大家测试。

发布时间:2026/10/25 1:53:07
斯坦福大学INVEST模型,我将其开源到GEE上,欢迎大家测试。

我们进入这个INVEST resource 界面,之后选择自己需要下载的版本即可:github上的版本。这个里面我

下载后我们安装到指定的文件夹下。打开之后会让我们选择安装的一些安装包有25个推荐的安装包,我们可以选择指定的安装包下载即可。这里我为了避免麻烦我就全部进行了安装和下载。

这里我们可以看到最新版本有修复一些小bug

进入界面后我们就可以看到一下的界面,这里有很多供我们选择的内容:

我就选择我自己的相关专业进行测试:

我们在setting中可以设置选择中文版本。和下载样例数据

我选择好了相关内容后,开始执行,填好的案例数据如下:

然后我们就进入了这个界面,等待运行,这里会有以西而差异:

官方问档介绍

从一张土地利用图到碳储量的“空间账本”:InVEST碳储存与封存模型深度解读

为什么我们需要给碳“记账”

陆地生态系统储存的碳比大气更多,这一事实本身并不新鲜,但它对气候变化的调节作用却长期被低估。森林、草原、泥炭沼泽通过将碳固定在木材、生物量和土壤中,把二氧化碳“锁”在大气之外。然而,当火灾、疾病或土地利用转换干扰这些系统时,大量二氧化碳会重新释放。反过来,森林恢复或替代农业做法也可能带来可观的碳储存。

问题在于:我们怎么知道一片景观到底储存了多少碳?砍掉一片森林、恢复一片草地,碳储量会变化多少?这些变化值多少钱?土地管理者面对保护、收割或开发的抉择时,需要一张“碳地图”来支撑决策。

InVEST(Integrated Valuation of Ecosystem Services and Tradeoffs)的碳储存与封存模型,就是为回答这些问题而生的。它的核心逻辑极其简洁:给定一张土地利用图和四个碳库的碳密度值,算出这片景观当前储存了多少碳,以及随时间推移封存或流失了多少碳。

这个简洁性既是它的最大优势,也是它最常被诟病的地方。理解这种张力,是用好这个模型的关键。

模型的核心机制:四个碳库 × 一张地图

碳储存在哪里

模型把陆地碳储量拆解为四个碳库:

地上生物量包括土壤以上的所有植物活体物质——树皮、树干、树枝、树叶。地下生物量是地上生物量的活根系部分。土壤有机质是土壤的有机成分,也是最大的陆地碳库。死有机质包括凋落物以及横卧和直立的枯木。

这四个碳库覆盖了陆地生态系统碳储量的主要部分,但显然不是全部。模型“备注”部分坦率地指出,它“非常简单”,只做一件事:把碳库值映射到土地覆盖图上。它不体现生物物理性质的变化,不模拟树木生长,不追踪土壤化学性质的变化,也不考虑温度或降水的时间动态。如果你需要模拟比“静态碳库+土地利用图”更复杂的内容,就需要换一个模型。

模型怎么算

运行逻辑是纯确定性的。用户提供两类输入:一是研究区的土地利用/土地覆盖(LULC)栅格地图,每个像素有一个地类编码;二是一张碳库查找表(CSV格式),为每个地类指定四个碳库的碳密度值(单位通常是Mg C/ha)。

模型将查找表中的碳密度值逐一映射到LULC栅格的对应地类像素上,对每个像素的四个碳库求和,得到该像素的总碳储量,再汇总为整个景观的总碳储量。如果提供未来情景的LULC地图,模型可以计算碳储量的变化量——正值表示碳积累,负值表示碳损失。

经济估值是可选模块。用户可以输入碳的社会成本(每吨CO₂的价格)、年变化率和折现率,模型据此估算碳封存服务对社会的经济价值。官方文档引用的碳社会成本估计范围从每公吨CO₂ 9.55美元到84.55美元不等。

整个过程本质上是一张“空间账本”:你告诉模型每个地类每公顷存多少碳,模型告诉你整片土地存了多少碳。没有过程模拟,没有动态反馈,没有非线性关系。

操作流程

在实际使用中,碳模块的运行步骤相当标准化:

  1. 下载并安装InVEST Workbench;
  2. 根据研究区构建碳库查找表,数据来源可以是实地测量、文献综述或已有的碳密度数据集;
  3. 准备LULC栅格数据,确保坐标系和分辨率统一;
  4. 在软件界面中设定工作路径,导入LULC数据和碳库CSV表,点击运行;
  5. 在GIS软件中处理输出结果——碳储量栅格、总碳储量表、经济价值估算等。

整个过程通常可以在几十分钟内完成,前提是数据准备就绪。真正的挑战从来不在运行模型,而在数据准备。

它被用来做什么

从REDD+到保护优先区

官方文档列举了几个典型的决策场景。政府可以利用模型输出确定REDD(减少毁林和森林退化造成的排放)的补偿分数——了解景观的哪些部分储存了最多的碳,有助于将激励措施精准瞄准土地所有者,换取森林保护。环保非政府组织可以寻找生物多样性和碳封存高度重叠的区域进行投资。木材公司也可以用它来最大化木材生产和REDD碳信用分的回报。

这些场景的共同点是:决策需要空间显式的碳信息,而模型提供的正是“碳在哪里、有多少”这张地图。

在中国的广泛应用

InVEST碳模块在中国的研究中已经形成了相当规模的文献积累。秦岭地区的研究结合InVEST与PLUS土地利用模拟框架,发现1985至2020年间森林面积增加了7566平方公里,总碳储量增加了79.53 Tg。京津冀地区的研究在运行模型前对多个数据集进行重采样和坐标系统一,然后在时空维度上量化碳储量,再用空间相关性分析验证县域尺度上的聚集特征。漓江流域、环杭州湾、洞庭湖流域、川渝地区、环太湖城市群等地都有类似的应用。

这些研究的典型模式是“PLUS + InVEST”组合:PLUS模型模拟未来不同情景下的土地利用格局(自然发展、城市发展、生态保护),InVEST碳模块计算每种情景下的碳储量变化,从而为国土空间规划和生态保护政策提供量化支撑。

这种组合之所以流行,恰恰因为InVEST碳模块足够简单——它不干扰土地利用模拟的结果,只负责把土地利用变化“翻译”成碳储量的变化。模型的简洁性在这里变成了优势:它像一个可靠的会计,把模拟出的未来情景逐一入账。

简洁的代价:模型局限性的深层分析

静态碳密度假设

InVEST碳模块最根本的简化在于:它假设每种土地利用类型的碳密度是固定不变的。一片成熟林和一片刚恢复的幼林,只要地类编码相同,模型就赋予它们相同的碳密度。

这在某些场景下是可以接受的近似——比如评估大尺度景观在一个时间断面上的碳储量分布。但在模拟碳封存动态时,这个假设会造成系统性偏差。碳封存随时间的实际变化往往是非线性的:幼林生长快,成熟林生长慢;土壤碳的积累可能需要数十年甚至上百年。模型用线性关系近似这些过程,必然在时间尺度上产生误差。

输入数据的质量决定一切

模型的输出精度高度依赖输入数据的质量,尤其是碳库系数和土地覆盖图的分辨率。如果缺乏区域特定的碳密度数据,使用全球默认值或邻近区域的文献值,不确定性会显著增加。

土地分类系统的粗糙程度也直接影响估算精度。一个粗粒度的分类系统(比如只区分“林地”“草地”“耕地”“建设用地”)会把内部差异巨大的地类归为一类——天然林和人工林、草地和灌丛的碳密度差异被抹平了。有研究指出,细化土地分类系统并相应地细化碳密度表,可以显著提高碳储量估算的精度。

被忽视的碳库

土壤无机碳是一个被模型系统性忽略的重要碳库。在干旱和半干旱地区,土壤无机碳的储量可能相当可观。黄河三角洲湿地的一项研究将土壤无机碳纳入InVEST框架后,发现其在滨海湿地生态系统碳储量中的贡献占比高达68%,这一改进“不仅提高了湿地碳储量估算的整体精度,还为全球河流三角洲区域的模型应用与改进提供方法借鉴”。

另一个被忽略的是深层土壤碳(30cm以下)。动态碳密度表中深层土壤碳的缺失被明确认定为一项显著局限。对于以土壤碳为主的生态系统(如草地、湿地),这个缺口可能造成不可忽视的估算偏差。

不估算温室气体排放

InVEST碳模块和ARIES碳模型的一个共同局限是:它们不估算温室气体排放。农业活动可能同时具有碳储存和温室气体排放的双重效应——一片农田可能储存了可观的土壤碳,但同时排放甲烷和氧化亚氮。只算储存不算排放,对农业景观的碳平衡评估是不完整的。

改进的方向与实践

融入被忽略的碳库

针对土壤无机碳的缺失,研究者开发了“Arid_InVEST”模型,将土壤无机碳储量纳入碳库体系。黄河三角洲的研究进一步验证了这一改进路径的有效性,并基于100多个点位的土壤实测碳数据对模型进行了检验和校正。

这类改进的核心思路是一致的:在保持模型原有简洁框架的前提下,通过增加碳库维度来提高估算的完整性。它不改变“土地利用图+碳密度查找表”的基本范式,只是让查找表更完整。

细化分类与空间异质性

另一个改进方向是提高空间分辨率。有研究利用SSP-RCP情景下的全球LUCC产品,包含20种植物功能型分类,替代传统的粗粒度土地分类体系。碳密度数据也从单一均值扩展到包含空间变异信息的分布,通过克里金插值等方法在GIS中生成连续的碳密度表面。

这些改进的代价是数据需求的增加,但换来的是估算精度的实质性提升。

与ARIES模型的对比启示

ARIES模型提供了另一种碳储量评估路径。与InVEST的“地类均值”方法不同,ARIES整合不同数据与评估方法,分别评估植被和土壤碳库,在水平分布上与InVEST趋势相同,但能进一步揭示土壤碳储量的垂直分布,以及同一地类内部的碳储量差异。

重庆中心城区的对比研究得出类似结论:InVEST模型评估结果可反映不同地类的碳储量高低,而ARIES模型能进一步揭示同一地类间的空间异质性,“ARIES模型评估结果的有效性更强”。

但这不意味着ARIES全面优于InVEST。ARIES的数据需求更复杂、操作门槛更高,在大尺度快速评估场景中,InVEST的简洁性仍然是不可替代的优势。模型选择应该由评估目的、精度要求和操作可行性共同决定,而非单纯追求精度。

如何用好这个“简单模型”

InVEST碳模块的定位不是“最精确的碳循环模型”,而是“最容易上手的空间碳核算工具”。它的价值在于把碳储量的空间分布信息从专业生态学家的实验室带到了土地管理者和政策制定者的桌面上。

用好这个模型的关键不在于模型本身,而在于三件事:

第一,碳密度数据的区域适配。不要直接套用全球默认值。花时间收集研究区或邻近区域的实测碳密度数据,哪怕是文献中的零星数据点,也比通用值更有说服力。如果研究区跨越多个生态带,考虑按生态区分别赋值。

第二,土地分类系统的审慎设计。分类粒度要与碳密度数据的可得性匹配。如果只有林地、草地、耕地三个地类的碳密度数据,就不要把林地拆成五个亚类。但如果有条件,适度细分高碳储量地类(如天然林 vs 人工林)会显著改善结果。

第三,对局限性的清醒认知。在报告中明确说明模型的假设和局限。如果研究目标是评估碳封存的动态过程,InVEST碳模块可能不是最佳选择,需要考虑过程模型或混合方法。如果研究目标是给出一张“碳在哪里”的空间地图,InVEST的简洁性恰恰是它的可靠性来源。

一张土地利用图和一张碳库查找表,经过InVEST的处理,就变成了一张碳储量的空间账本。这张账本不能告诉你碳循环的全部故事,但它能告诉你一个足够重要的事实:碳在哪里,有多少,如果土地用途改变,它会去向何方。在气候变化决策需要快速、可操作信息的当下,这种“足够好”的账本,往往比“完美但出不来”的模型更有用。

其它安装方式

GEE中安装对应的安装包

根据下面这个开源的软件包,将https://github.com/xingguangYan/invest-geee

GEE JavaScript 用法

正确部署流程(基于xingguangYan/invest-geee)

第 1 步:获取你的 GEE 用户路径

登录 GEE Code Editor,在左上角Scripts面板的Reader或Writer下,你通常会看到类似users/your_username的路径。记下your_username,后面构造require路径时要用。

第 2 步:在 GEE Code Editor 中创建脚本仓库

在Scripts面板中点击New→Repository,仓库名称建议就用invest-geee,或者保持与 GitHub 仓库一致的名称。创建后,你会得到一个仓库路径,例如:

users/your_username/invest-geee

第 3 步:把gee_port/中的脚本放入 GEE 仓库

invest-geee仓库的顶层有一个gee_port/目录,它是 GEE 移植版的副本。你需要把其中的.js文件(至少包括入口文件index.js及其依赖的模块)放到刚刚创建的 GEE 仓库中。

有两种方式:

方式 A:手动创建/粘贴(适合文件较少或依赖简单)

在 GEE Code Editor 的 Scripts 面板中,右键你创建的invest-geee仓库 →New→File,按照gee_port/中的目录结构逐一创建同名.js文件,然后把 GitHub 上对应文件的内容粘贴进去。入口文件通常是index.js。

方式 B:使用minee打包(适合依赖较多、文件分散的情况)

如果gee_port内部通过require互相引用,手动维护路径容易出错。可以在本地用 Node.js 安装minee—— 一个专门为 Earth Engine 设计的模块打包器。将gee_port的入口模块打包成一个单独的.js文件,再把这个单文件上传到 GEE 仓库。这样只需要维护一个文件,路径问题会少很多。

第 4 步:修正require调用路径

原来 README 中的写法require('user:/invest-geee/index.js')不符合 GEE 的路径规范。正确的调用方式应该是:

varinvest=require('users/your_username/invest-geee:index.js');

把your_username替换成你实际的 GEE 用户名。如果index.js不在仓库根目录,而是在子目录中,路径也要相应调整,例如:

varinvest=require('users/your_username/invest-geee:gee_port/index.js');

关键点:require路径中的仓库名和文件名大小写敏感,必须和 GEE 仓库中实际看到的完全一致。

第 5 步:运行与验证

路径正确后,就可以按照项目原本的设计调用模型了:

varinvest=require('users/your_username/invest-geee:index.js');print(invest.models);// 查看可用的 GEE 移植模型varresult=invest.models.carbon.run({lulc_current:ee.Image('projects/your_project/assets/lulc'),// ... 其他参数});export.image(result.outputs['carbon_current'],'carbon_current');

注意lulc_current等输入数据仍然应该放在Assets中(projects/.../assets/...),这与脚本模块的存放位置是两回事:数据在 Assets,代码在 Scripts。


常见问题排查

现象可能原因处理
Module not found/Cannot find modulerequire路径拼写错误、用户名错误、仓库/文件不存在在 Scripts 面板中逐级核对路径,确认文件确实存在于该仓库中
路径中有user:开头使用了非标准前缀GEE 要求以users/开头,而不是user:
调用invest.models为undefinedindex.js没有正确exports.models,或入口文件放错了位置检查index.js中是否有exports.models = {...},并确认require指向的是这个文件
内部依赖报错gee_port中其他.js文件没有一并上传,或内部相对路径引用未适配 GEE 仓库结构上传全部依赖文件,或使用minee打包成单文件

总结:gee_port/不是上传到 Assets,而是需要作为代码编辑器 Scripts 仓库中的脚本文件来管理;require的路径格式是'users/你的GEE用户名/仓库名:文件路径',而不是'user:/...'。按上述步骤把gee_port中的.js文件放入 GEE 脚本仓库后,原先的模型调用代码就可以正常工作了。


我已经构建好了,现在测试已经全部可用,大家可以公开引用并进行测试。

测试的代码链接

测试的结果

可视化结果





欢迎大家测试不同的任务,测试后有啥可以在评论区反馈,我们共同修正。

这里的GEE APP可以用测试:

大家可以去测试结果,只不过在GEE中运行的时候所有的数据是我指定的,所以这里大家可以根据开放的脚本来自己修改。

InVEST脚本指南和API

介绍

虽然所有InVEST模型都有用户界面,为了模型的更进一步使用,我们依然提供了python应用程序编程接口(API)。natcap.invest 的完整python文件包获取链接如下: https://invest.readthedocs.io/en/latest/

此外,我们的核心地理处理路径已经是一个开源的单独python包,pygeoprocessing,获取链接如下:https://github.com/natcap/pygeoprocessing。PyGeoprocessing的API文件获取链接为:https://pygeoprocessing.readthedocs.io/en/latest/.

在未来,这些文件将更新更多的细节。编程支持也可以在我们的用户论坛上找到: https://community.naturalcapitalalliance.org/.