InVEST模型生境质量模型数据处理流程

本文详细阐述了使用InVEST的生境质量模型进行数据分析的步骤,包括土地利用数据、威胁因子数据和威胁源数据的处理,强调了数据准备的细节,如处理Nodata值、威胁源数据的提取和栅格矢量转换。此外,文章还提到了生境类型敏感性和退化源可达性等关键输入,并提供了数据对应关系的说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在19年的4月份,我要写一篇论文,涉及生境质量的,用到了InVEST中的生境质量模型(Habitat Quality),模型要求的数据比较多,需要用ARCGIS进行数据处理,数据处理不难,就是属性表统计计算,栅格计算,裁剪等过程,但是略繁琐,本文的目的就是捋清思路,整理出清晰的数据处理流程,对有需要的人提供一点帮助。

InVEST生境质量模型(Habitat Quality)原理就不做介绍了,因为太复杂了,我也不是很懂,生境质量模型(Habitat Quality)只是InVEST其中的一个模型,InVEST还包含了很多其它的模型。软件下载直接搜InVEST就可以,网上也有安装教程,把用户手册也要下下来,方便查阅。本文需要与InVEST用户手册中的生境质量模型(Habitat Quality)的说明一起看。

生态系统服务及InVEST模型建模与论文写作

流程

直接看生境质量模型(Habitat Quality)的数据需求,该模型数据有的是可选的,有的是必须的,这里只讲必须的:

1.土地利用数据(LULC/LUCC)

获取途径很多,可以买;可以在网上下载免费的,提供一个免费网址:http://data.ess.tsinghua.edu.cn/?tdsourcetag=s_pcqq_aiomsg

这个数据是世界首套10m空间分辨率的全球土地覆盖产品(FROM-GLC10);还可以用专业的遥感处理软件进行分类或者目视解译。

2.威胁因子数据

是一个表格数据,要csv格式,名字就命名为threats.csv,具体的要求可以参考模型的用户手册,有几个注意点:①表格要符合用户手册里的要求。下图1是用户手册里模板,图2是参考的文献里的,对应上即可;②第一列中的各种威胁因子名字可以自己定义(类名用英文),不需要跟模板中的名字一样;③表头名一定要跟模板一致。模型里都有示例数据,也可以作为参考。至于最大影响距离和权重,可以多参考一些文献、专家咨询等,根据实际情况决定。参考一下图3中我做论文时完整威胁因子数据表格。

图1

图2

图3

3.威胁源数据

先讲下如何获取,其实还是从LUCC/LULC里获取,举个例子:如上图2,耕地是威胁因子,首先把LUCC/LULC数据栅格转矢量(因为转为矢量后对属性表操作较为容易),再将矢量数据属性表中的所有耕地赋值为1,其他的赋值为0,随后将矢量数据转回为栅格数据,耕地威胁源数据就完成了,其他的威胁源数据以此类推。下面是具体的操作流程。所用的数据就是上面提到的10m空间分辨率的全球土地覆盖数据,下载的全国的(图4),下载和拼接的工作量都很大。裁剪一小块作为示例数据(图4)。这里有个注意的点,很重要,用户手册里也提到了:“请不要在威胁地图上留下任何为‘NoData’的空值,如果某个区域没有威胁,则设置威胁等级为0”。这句话的意思是说,所有Nodata区域值都得为0。这里讲一下,在arcgis软件中每个栅格数据都默认有一个最小外接矩形,在外接矩形中栅格数据之外的空白部分,值都为nodata,如图5中,选择一块区域查看信息,值为nodata,这些空白区域的值要赋值为0,这个一定要注意!

图4

 

图5

3.1.nodata处理

威胁源数据提取之前,先把nodata的问题搞定:依次找到arctoolbox->spatial  analyst工具->地图代数->栅格计算器,输入计算公式:“Con(IsNull("示例.tif"),0,"示例.tif")”,不要直接复制或者自己用键盘打出公式,要在函数列表中选择相应的函数,con函数就是第一个,isnull函数把列表拉到底,即可找到,如图6所示。运行等待结果。

 

图6

结果如图7所示,nodata值都变成了0。

图7

3.2威胁源因子数据的提取

下面开始进行威胁源因子数据的提取(以耕地为例,按照分类体系,耕地的value值为1):

3.2.1栅格转矢量

依次找到arctoolbox->转换工具->由栅格转出->栅格转面,输入数据lucc/lulc数据,字段默认value字段,输出结果保存路径,简化面取消勾选,运行后等待结果。结果如图8,gridcode字段就是由value字段转化而来。

 

图8

3.2.2创建value

右键打开属性表添加字段,操作如图,名称一定要命名为“value”,类型选择短整型即可,添加完毕,此时的value值为空。

 

图9

3.2.3对value赋值

在属性表中选择按属性选择,在输入区输入“gridcode=1”,点应用,相应要素被选中并高亮显示,鼠标移至value字段表头,右键,左击字段计算器,按照如图10选择并输入,点击确定。

 

图10

上面是对gridcode=1的要素进行赋值,gridcode≠1的要素要赋值为0。在属性表中直接点击切换选择,就反选出了value剩余为空值的要素,重复字段计算器操作,输入0,点确定,剩余的空值都被赋值为0,如图11,到此赋值完成。

 

图11

3.2.4矢量转栅格

依次找到arctoolbox->转换工具->转为栅格->面转栅格,输入矢量数据,值字段选择value,输出栅格位置,最后一项像元大小,选择跟原始数据一样的像元大小,这里一个注意点:输出栅格数据一定要按照“xxx_c.tif”的格式命名,我这威胁源是耕地,所以命名成“gengdi_c.tif”。命名要求用户手册中有。 

 

图12

输出结果,如图13,0为其他地类,1为耕地,至此,耕地威胁源因子栅格数据提取完成。其他危险源数据按照上述方法重复操作即可。

 

图13

4.退化源的可达性

用户手册中有一个数据提一下,退化源的可达性,这个数据是可选数据,但是如果有这个数据的加入,最终运行的结果准确性会大大增加,按照用户手册的翻译的内容来理解,就是将研究区域内的各种法定的禁止开发区矢量数据做并集,然后在属性表中添加access字段,并对access赋值,这个值范围0-1,根据不同级别的禁止开发区综合赋值,并集之内的区域access就是我们所赋的值,并集之外的区域access值默认为1,禁止开发区包括:保护区、森林公园、湿地等等,这些数据通常涉密,如果有条件拿到更好,没有条件的这个选项就空着吧。

5.生境类型及生境类型对威胁的敏感性

也是一个csv格式的表格数据,名字命名为sensitivity.csv,跟上面的威胁因子数据一样,直接拿示例数据(图14)和某参考文献中的数据(图15左)对比一下就明白了。示例数据只有一级地类,参考文献中是二级地类,这个没什么影响,你自己手中的数据是几级地类就按照几级地类分。

简单说明一下示例数据中每一列需要填的内容,LULC填的是各地类编码,如果你的土地覆被数据有二级地类则填二级地类代码,比如耕地是一级地类,编码1,其二级地类又分旱地11和水田12,那么LULC这一列11和12都要填进去,NAME这一列就填入相应的编码所代表的地类名称,HABITAT这一列填各地物生境适宜度,这个数值综合各个文献确定即可,范围是0-1;前三个表头名:LULC、NAME、HABITAT,按照示例数据来,名字必须一模一样,后面的表头名是L_+各威胁源因子地类名,地类可以根据你手里的土地覆被数据里来命名,即L_xxx,比如:我这份土地覆被数据耕地是Cropland(图15右),则在表头里命名成L_Cropland,有几个威胁源就一次新建列命名几个,格式注意即可,至于列中需要填的数值,根据其他文献综合来确定。有一个需要注意的地方:你手里的土地覆被数据有多少个地类,都要写到表里去,不能因为适宜度都是0而不写,表格一定要做完整,否则在后面运行模型的时候会报错。比如你手里的土地覆被数据地类编码是1,2,3,4,5,6,7;而7代表的地类对应的所有生境适宜度都是0,那么0就是0,按照格式全都写到表里,如果因为是0而不写了只写了1,2,3,4,5,6,则运行模型的时候会报错,最终导致模型运行失败;参照图16中我运行模型时所做的完整表格(这是另外一套土地覆被数据,有二级地类)。

 

图14

 

图15

 

图16

6.半包和参数k值

就按照用户手册里定0.5好了。

其他说明

最后说一下各个数据之间的对应关系,①.threats.csv中的THREAT列与威胁源数据名字(xxx_c.tif)以及sensitivity.csv中的L_XXX对应,如图17所示,都是我做论文时处理的数据,感受一下。

 

图17

②. sensitivity.csv中的LULC列与你手中的土地覆被数据中的地物编码要对应,顺序可以不对应,种类总量完全对应即可。

上述数据流程都处理完了就把各个数据输入然后等着结果出来就好了,结果会输出到output文件夹,quality_c_xx.tif就是生境质量结果,这里再说一句,因为之前做了nodata处理,最小外界矩形中除了正常的研究区范围其他范围值都是0,会对结果产生干扰,再拿研究区矢量数据裁剪一下即可。

其他的数据注意事项多看看用户手册即可,比如威胁源数据输入的是文件夹,因为威胁源数据可能不止一个,按照用户手册说明建立好文件目录就好。

### LlamaIndex 多模态 RAG 实现 LlamaIndex 支持多种数据类型的接入与处理,这使得它成为构建多模态检索增强生成(RAG)系统的理想选择[^1]。为了实现这一目标,LlamaIndex 结合了不同种类的数据连接器、索引机制以及强大的查询引擎。 #### 数据连接器支持多样化输入源 对于多模态数据的支持始于数据收集阶段。LlamaIndex 的数据连接器可以从多个异构资源中提取信息,包括但不限于APIs、PDF文档、SQL数据库等。这意味着无论是文本还是多媒体文件中的内容都可以被纳入到后续的分析流程之中。 #### 统一化的中间表示形式 一旦获取到了原始资料之后,下一步就是创建统一而高效的内部表达方式——即所谓的“中间表示”。这种转换不仅简化了下游任务的操作难度,同时也提高了整个系统的性能表现。尤其当面对复杂场景下的混合型数据集时,良好的设计尤为关键。 #### 查询引擎助力跨媒体理解能力 借助于内置的强大搜索引擎组件,用户可以通过自然语言提问的形式轻松获得所需答案;而对于更复杂的交互需求,则提供了专门定制版聊天机器人服务作为补充选项之一。更重要的是,在这里实现了真正的语义级关联匹配逻辑,从而让计算机具备了一定程度上的‘认知’功能去理解和回应人类意图背后所蕴含的意义所在。 #### 应用实例展示 考虑到实际应用场景的需求多样性,下面给出一段Python代码示例来说明如何利用LlamaIndex搭建一个多模态RAG系统: ```python from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader, LLMPredictor, PromptHelper, ServiceContext from langchain.llms.base import BaseLLM import os def create_multi_modal_rag_system(): documents = SimpleDirectoryReader(input_dir='./data').load_data() llm_predictor = LLMPredictor(llm=BaseLLM()) # 假设已经定义好了具体的大型预训练模型 service_context = ServiceContext.from_defaults( chunk_size_limit=None, prompt_helper=PromptHelper(max_input_size=-1), llm_predictor=llm_predictor ) index = GPTSimpleVectorIndex(documents, service_context=service_context) query_engine = index.as_query_engine(similarity_top_k=2) response = query_engine.query("请描述一下图片里的人物表情特征") print(response) ``` 此段脚本展示了从加载本地目录下各类格式文件开始直到最终完成一次基于相似度排序后的top-k条目返回全过程。值得注意的是,“query”方法接收字符串参数代表使用者想要询问的内容,而在后台则会自动调用相应的解析模块并结合先前准备好的知识库来进行推理计算得出结论。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值