arcGIS 批量转化 tif 为 excel
本文记录详细操作步骤,便于自己以后重复查看。
不过速通完后才发现时代似乎已经从 arcmap 转向 pro 了……
生命的大风吹出世界的精神,唯有老人能看出这其中的摧毁……
我在 Stata 绘制 Gis 着色图中介绍了 GIS 常用的 shp 类型文件。简单来说,GIS 的数据基本结构需要包含坐标、独特标识、测量值三个要素。这里介绍如何通过行政区划地图文件和 tif 地图文件提取出行政区的截面 excel 数据文件。
GIS 简易上手指南
官网教程:arcGIS 帮助
ArcGIS 作为商业软件,其实非常好上手。和 excel 一样,了解完布局后就看懂基础使用了。
- 如图,最左侧是文件区域,用于查看工作文件。
- 再往右工具列表,有各种工具函数帮助我们处理数据文件,所以根据提示操作就行。
- 再右侧是图层管理。
- 最右侧是绘图预览区域,把 gis 文件放进去就能看到图像情况。
GIS 批处理
点数据到面数据
经济学的数据分析一般为省、市、县面板数据。GIS 文件是图像文件,可以看作点集数据,而行政面板是块状的,是面数据,所以我们处理思路就是计算行政面积的点数据平均值,然后导出。
通过行政区划 shp 进行分区。
通过 Apatial Analyst
- 区域分析
- 以表格显示分区统计
这个函数方法对接数据地图和行政区划地图,计算行政面积里的均值。
虚假的批处理
对于每个方法函数,右键-批处理,就会弹出一个自定义动作的 excel 表格,似乎在里面通过 excel 行设定我们的重复动作就可以快速批处理,但如果使用者真的用了就会发现问题。
使用这个方法定义了 n 个重复动作后,只会保留最后一行定义的动作。
真正的批处理
导入 tif 文件
真正的批处理是手动设计流程图!以 2024 年华为数学建模大赛提供的 tif 数据为例,将 tif 集中在一个文件夹下 (最好命名为英文,且为 tif,便于后面对接操作)。
找到 shp 文件
前文提到了原理——我们想要将 gis 点数据集转化为行政区划的面板数据,为此需要行政区划的 shp 地图。
github 上很多资源,也可以在“ Stata 绘制 Gis 着色图”处看资源。
指定流程图
ArcGIS 真正的批处理是自己绘制流程图。
Tif 批量转表格
首先在链接好的文件夹下右键新建工具箱。
然后在工具箱下面右键新建模型。
打开模型进行编辑,将工具栏中想要的函数拖入。
Tif 属于栅格数据,插入-迭代器-栅格
双击“迭代栅格数据”。工作空间或栅格目录选择数据文件夹中的tif 文件夹,栅格数据格式选择 TIF。
插入-仅模型工具-解析路径
将自己找到的 shp 文件夹拖到模型框中。本文使用的是区县行政区划地图的 district.shp
文件。
换成链接工具
从“名称”连向“解析路径”,选择“输入数据元素”。
双击“解析路径”,解析类型选择 NAME
所以注意,tif 的文件名最好是
变量
+数字
的形式,便于识别规律。最好一切循环文件都是这种结构性命名。
接下来是链接参数的操作。
- 从“值”连向“以表格显示分区统计”,选择“环境”-“输出配置关键字”。
- 从“识别出的第一个 tif 数据(本文例子为
pop1990.tif
)”连向“以表格显示分区统计”,选择“输入赋值栅格”。 - 从“识别出的第一个 tif 数据(本文例子为
pop1990.tif
)”连向“以表格显示分区统计”,选择“输入赋值栅格”。 - 从“shp 文件(本文例子为
district.shp
)”连向“以表格显示分区统计”,选择“输入栅格数据或要素区域数据”。
双击 ZonalSt_shp5
。将“查找范围”改为文件夹中的 result 文件夹(没有也可以在选择框里临时新建),“名称”改为 %值%
。
右键tif模块,选择模型参数。
此时别忘了在顶部工具栏从连线模式切换为选择模型,这样才能右键选择。
右键区域划分模块(本文就是 district.shp),选择模型参数。
顶部的自动布局可以帮助我们优化布局。
表格批量转 excel
在前面的流程图基础上继续添加。
将“工具箱-转换工具 - Excel”中的“表转 Excel”工具拖到模型框中。
将“%值%”与“表转 Excel”进行连接,选择输入表。
双击 %值%\_TableToExcel.xls
,选择保存路径的文件夹,并且设置文件名为 %值%\_TableToExcel.xls
。
绘制完流程图后,点击模型确定即可运行
其他提示
如果操作完全符合,但最后读取到一半,说读取出现问题,较大可能性为以下问题:
- 不是
.tif
格式的 gis 文件。 - 文件夹命名是中文。
- 数据文件命名不结构化,例如一会儿同时出现了
1990pop.tif
和pop1998.tif
- Result 文件夹和 tif 文件夹最好保持在同一层次的目录里。