利用ArcGIS处理土地利用数据:计算fishnet每个格网中不同地类的面积

前期准备:已经创建好的fishnet格网数据以及裁剪好的土地利用类型数据
创建渔网的过程就不讲了,创建渔网过程中可能遇见的问题在其他文章中也有讲到。我利用的土地利用类型数据是global30的数据。
首先将土地利用类型数据的属性表打开,添加一个type字段(类型为文本),根据VALUE那个数值赋予不同的类型意义(其他博主的文章里有对)。创建完字段以后要打开编辑器才能给type字段添加数值,添加完以后点击保存再点击停止编辑,最后的结果如图所示。
在这里插入图片描述
如果想将图层里显示的type字段改为value,可以在属性里改,选择符号系统,在值字段的下拉菜单里选择value,点击确定即可。

重分类:Spatial Analyst Tools——Reclass——Reclassify
在这里插入图片描述
利用type字段进行重分类会比较简单一点,我这里分为了7类,其中草地、林地、灌木林被我分为了植被一类,直接在新值哪里改就行了,分为一类的改成一个值就好了。
在这里插入图片描述
可以修改一下输出路径

现在的数据还是在一起的,这里就需要将他们每个不同类型的数据分开来
分开:Spatial Analyst Tools——Extraction——Extract by Attributes
输入我们重分类以后的栅格数据
这里要根据我们重分类以后的数据来填where clause
例如分开裸地数据的时候输入“VALUE”=1,点击确定,可以更改以下输出位置,方便寻找。
在这里插入图片描述
在这里插入图片描述
同样的方法将其他类型也导出,注意一下未分类的可以不导出。

将创建好的fishnet数据导入,包括裁剪好的网格数据和点数据(点数据主要是为了后边进行的表挂接过程),如图所示。
在这里插入图片描述
这里我的fishnet数据是加了一个uid字段的,通过字段计算器利用FID+1算的,方便我进行后边的操作的。
在这里插入图片描述

接下来进行面积计算了
Spatial Analyst Tools——Zonal——Tabulate Area
第一个栅格数据填fishnet数据,第二个字段一般是默认的,第三个输入要计算的土地类型数据(就是我们通过上一步分出来的数据),例如我要计算裸地的面积,就输入bare数据,如图所示。可以修改路径,点击确定。
在这里插入图片描述
数据处理完会自动导入到图层里,是个表数据,我们可以直接打开属性表,为了区分数据方便进行后续操作,这里最好是添加一个字段,最好选择双精度。
在这里插入图片描述
选中添加的字段,右击利用字段计算器给新字段赋值,例如bare字段赋值时在窗口内双击VALUE_1,点击确认即可,如图所示。
在这里插入图片描述
赋值结束后可以删除VALUE_1字段。
在这里插入图片描述
同样的方法可以将其他几个类型的面积都计算出来。

表挂接
处理完所有的数据以后会有好几个表,此时选中6k_clipd,右击,点击连接和关联里的连接。
因为我所有的数据里都有uid字段并且是一对一的关系,因此我用uid字段进行连接,如图所示,点击确定。1和3选择uid,2选择要连接的表。
在这里插入图片描述
连接完一个表以后,再次点击6k_clipd进行连接,直至将所有表连接完。这里选择6k_clipd的原因是如果选bare表数据进行连接的话会吞数据,不够整个fishnet的数量,因为土地利用类型数据不是每个格网他都有的,所以连的时候只能用最大的fishnet数据连。
连接完以后导出,更改导出路径,其中保存类型选择dBASE表,这里是由于连接的表是动态的,如果不导出的话是不能保存的。
导出结果加载到图层以后,打开属性表,将多余的字段删除即可,如图所示。
在这里插入图片描述

完成。

### 创建渔网属性表的操作与设计方法 #### 属性表创建流程 在 ArcGIS 中,创建渔网Fishnet)后可以为其设置属性表。这一步骤通常用于定义网格单元的空间分布及其关联信息。以下是具体实现方式: 1. **创建渔网** 使用工具 `工具箱>>数据管理>>要素>>创建渔网` 来生成渔网栅格[^1]。在此过程中,需指定输出范围、像元大小以及是否启用标签点。 2. **添加字段** 在渔网创建完成后,打开其属性表并添加必要的字段以存储相关信息。常用的字段可能包括: - 图幅编号:通过行列索引来唯一标识每个网格。 - 坐标信息:记录每个网格中心点或角点的经纬度。 - 地理描述:附加说明该区域的地貌特征或其他重要参数。 3. **赋值逻辑优化** 对于大规模渔网而言,手动输入每一项数值显然不切实际。因此可采用脚本批量处理的方式简化工作流。例如利用 Python 脚本结合 arcpy 库自动填充图幅编号等信息[^3]。下面展示一段示范代码片段来辅助理解这一过程: ```python import arcpy # 定义变量 fishnet = r"C:\path\to\your\Fishnet.shp" field_name = "GRID_CODE" # 添加新字段 arcpy.AddField_management(fishnet, field_name, "TEXT") # 更新游标遍历每条记录进行赋值 with arcpy.da.UpdateCursor(fishnet, ["OID@", field_name]) as cursor: for row in cursor: grid_code = f"{row[0]}_{chr(int(row[0]/26)+65)}{row[0]%26}" # 自定义编码规则 row[1] = grid_code cursor.updateRow(row) ``` 上述代码实现了基于对象 ID 自动生成复合型图幅编号的功能,并将其写入到新增加的字段当中去。 4. **验证与调整** 最后务必仔细核查所填内容是否存在错误或者遗漏之处;必要时还可以借助地图可视化手段直观检验成果质量。 --- #### 设计考虑因素 当规划渔网属性结构的时候应该思考以下几个方面的问题以便更好地满足后续应用需求: - 数据精度要求: 不同应用场景对于空间定位精确程度有不同的标准. - 存储效率考量: 合理安排各字段的数据型有助于减少冗余提高查询速度. - 可扩展性支持: 预留足够的灵活性应对未来可能出现的新业务场景. ---
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值