查看原文
其他

ArcGIS中基于网格实现可视化(附模型文件下载)

小陈 GIS前沿 2023-01-12


一、数据来源介绍


土地利用数据、高程数据、植被指数数据均来源于中国科学院资源环境科学与数据中心(https://www.resdc.cn/)。



二、数据预处理


我们从中国科学院资源环境科学与数据中心官网上下载下来的土地利用栅格数据是整型的,我们可以利用栅格重分类工具来将它变为浮点型。



在这里我们发现,土地利用栅格数据里的像元被赋值为一些不连贯的数,我们通过官网上的相关介绍得知其所包含的含义:


我们根据表格内容统一将数据分为“耕地、林地、草地、水域、建设用地和未利用地”六类。



我们利用重分类工具以一级类型编号将它分为六类。


打开重分级后的栅格数据属性表,添加一个字段名称为“TDLY”的字段,并设置字段类型为文本型。



右键工具栏空白处,添加编辑器工具,并使其处于编辑状态。



键入土地利用类型。



三、往期回顾


前两篇文章我们简单介绍了一些有关生态风险指数计算的指数指标,有景观破碎度指数、景观分离度指数、景观优势度指数、景观干扰度指数、景观脆弱都指数和景观损失度指数。它们的计算公式如下:

景观破碎度指数:

景观分离度指数:

景观优势度指数:



景观干扰度指数:

景观损失度指数:


在这些式子中:a、b、c分别为、、的权重,且a+b+c=1,为景观类型i的斑块数,为总的斑块数,为景观类型i的总面积,为景观总面积;为景观类型相对密度,景观类型相对盖度;景观脆弱度指数。根据相关参考文献及专家意见,对a、b和c三个指标分别赋以0.5、0.3和0.2的权值,考虑到研究区的地域及景观特点,对未利用地单独赋以0.2、0.3和0.5的权值。


计算景观脆弱度指数时我们是将研究区景观类型的脆弱性分为6级,从高到低排列依次为:未利用地、水域、耕地、草地、林地、建设用地,再进行归一化处理后得到各景观类型的脆弱度指数的,当时我们是利用反正切函数来实现数据的归一化,即:


其中的pi我们上期解释过,在Excel表中既是π。

今天我们需要基于网格实现可视化,所以我们将上期介绍的景观生态风险指数公式简单改动一下:


该式中,为第k个生态小区的生态风险指数,为第k个生态小区的第i类景观的面积,为第k个生态小区的景观总面积,为第i类景观的景观损失度指数。


四、指数计算并实现可视化


1. 将各类用地单独提取


利用按属性提取工具将六类用地类型单独提取出来作为单独的图层。点击右边中间的小图标可以设置属性。



2. 创建生态小区


为了将生态风险指数空间化,在考虑研究区范围和工作量大小的基础上,我们利用创建渔网工具将贵州省划分为5km*5km的生态小区。



3. 栅格转矢量面


利用栅格转面工具将贵州省土地利用栅格数据按TDLY字段转化为矢量面数据。这里我们选择不勾选简化面,否子转化出来的矢量面数据和之前单独提取出来的各类用地位置会有些出入。



4. 提取生态小区


利用裁剪工具将生态小区多余的部分裁掉。这里可能会有人有个疑问就是为什么不用按位置选择并提取生态小区呢,其实主要是因为那样做的话贵州省边缘的大部分生态小区会有很大的面积没有用地类型,不考虑进去的话会造成很大的误差。



5. 统计各生态小区内各类用地类型面积


我们利用以表格显示分区统计工具依次统计之前单独提取出来的各类用地栅格数据在各生态小区内的各类用地面积。



介于统计类型下拉菜单栏中没有统计AREA选项,所以我们统计类型选择ALL,统计完成后再利用删除字段工具将分区统计得到的表格中多余的字段删除。这里可能就有人会问统计类型下拉菜单栏中没有统计AREA选项,我怎么知道最后统计的表格中会有AREA字段呢,别问,问就是经验。



利用添加连接工具将六类景观的面积统计表连接到生态小区的属性表中。至于为什么不右键图层进行连接而用工具箱里的添加连接工具来连接,答案在最后,这里先卖个关子。



将链接过来的字段保存在属性表中除了将数据导出为一个新的图层以外,还有一个办法就是在属性表中新建一个相同的字段,再利用字段计算器将连接过来的字段内容赋值到新建立的字段中。



由于连接过来的字段中有很多空值,赋值到新字段中也同样如此,在后续的计算中空值会影响运算,这里我们利用字段计算器将空值全部替换为1,不替换为0是因为在公式中各类景观在生态小区里的面积有做分母的时候,替换为0无法计算。

需要注意在用Python语句时里面的标点符号均为英文符号,另外还有一点就是Python语言和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python采用代码缩进和冒号(:)来区分代码块之间的层次。Python中实现对代码的缩进,可以使用空格或者Tab键实现。但无论是手动敲空格,还是使用Tab键,通常情况下都是采用4个空格长度作为一个缩进量,其实2个也行(默认情况下,一个Tab键就表示4个空格)。

在字段计算器中输入代码换行不会自动缩进,所以大家在输入代码时一定注意缩进。



1. def updateValue(value): 2.if value==None: 3. return'0' 4.else: return value 5.updateValue(!水域_AREA!)


6.统计各生态小区内各类用地类型图斑数量


利用标识工具将用地类型矢量面数据中跨小区的各类景观图斑按各小区进行分割。



利用多部件至单部件工具将各生态小区内的各类景观图斑打散,避免两个图斑为一个要素。



利用要素转点工具将景观矢量面图层转化为点图层,用于统计各生态小区图斑个数。



利用筛选工具将景观矢量点图层按不同用地类型分割成六个景观矢量点图层。

利用空间连接工具统计各类景观图斑数量即点的数量。



再次利用添加连接工具将统计的各类景观图斑数量连接到生态小区图层中。



最后再次添加字段并赋值,用同样的方法将空值替换为0。

整理所得生态小区属性表如下:



接下来我们将基于该属性表进行计算。


7.指数计算并实现可视化


将统计好的数据导入到Excel中进行计算。



计算完成后右键生态小区图层进行连接,并进行可视化。




五、技术路线总结



这是在模型构建器中一边做一边整理的技术路线图,也是之前为什么使用添加连接工具而不右键图层进行连接的原因。下面这个附件是构建的模型文件,有需要的可以添加到自己电脑中使用。(文末有下载链接)



六、成果展示



如图显示颜色越红的地方生态风险越高。



数据下载

进入本公众号后台
发送数字1771获取下载链接文件名:Toolbox.tbx


- END -



王者荣耀中搞GIS

ArcGIS土地利用动态度与土地利用程度计算(附练习数据下载)

学GIS的你,是时候自己做张中国地图了(附行政区划数据下载)

全球土壤数据下载及ArcGIS土地利用制图流程(附练习数据)

ArcGIS制图技巧:边框的选择与制作

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存