一、需求
最近有小伙伴提个需求
能不能用Arcgis批量生成地球化学图
什么意思呢
就是他给我一个excel表格(图1)
实验室返回的数据
需要做成一系列等值线图(图2)
因为出图结果“长”得都差不多
就是改变元素而已
想要个批量出图的功能
| |
1元素数据
| 2系列图
|
经过试验操作
我给了他三种批量成图方法
常规方法、模型构建器方法、Arcpy脚本方法
下面详细展开
二、思路
首先介绍常规方法
第一步要把表格数据转成点要素(图1)
然后在工具箱插值分析中找到克里金法(图2)
由于克里金插值法
具有产生预测表面的能力
而且能够对预测的确定性或准确性提供某种度量
讲人话,就是它的参数很多,功能强大
实际应用中要根据需要及数据特点赋参数值
至于其他操作很简单,不作重点介绍
| |
1Arcgis添加XY数据
| 2克里金插值方法
|
首先什么是模型构建器
它是用来创建、编辑和管理模型的应用程序
是将一系列地理处理工具串联在一起的工作流
它将其中一个工具的输出作为,另一个工具的输入使用起来
讲人话,就是把我们的操作流程固定下来
给它个数据,让他自己跑程序
几乎不需要自己写代码
本例模型构建器主体功能为克里金法(图1)
克里金是处理不同列的(Z字段)
需要迭代列,而不是迭代行数据(图2)
由于模型构建器的迭代器主要是迭代对象
如文件对象,要素类对象,行对象,要素对象等
而不同字段属于对象的结构
故不能直接用,需要迂回操作
我的办法,将excel点数据生成系列点文件(图3)
然后再插入迭代器,迭代要素类(图4)
生成系列图,最后根据样式生成系列图集
什么是脚本
脚本(Script)是一种纯文本保存的程序
是批处理文件的延伸
而ArcPy是一个Python站点包(site package)
通过Python执行地理数据分析、数据转换
数据管理和地图的自动化
讲人话,脚本就是自己编写自己想要的功能
而形成工具使用
写脚本也不麻烦
在桌面新建个文本文件即可
本次需求以面向过程为思想,需要用做三个事
第一个事:excel转点要素,写成.py文件
第二个事:遍历所有元素批量克里金,写成.py文件
第三个事:根据模板遍历所有元素,写成.py文件
再分别设置参数,配置脚本工具
以第一个事为例
脚本操作,先写代码(图1)
然后根据需要设置三个参数
打开脚本工具(图2)
完成excel转点要素操作
| |
1python脚本
| 2脚本工具
|
二、操作
(一)模型构建器
1.excel转多个点要素
提供两种办法
方法一:多个工作表分别导入
将插值列统一修改为“Z”字段
| |
1整理excel
| 2多个表分别导入 |
方法二:导入总表后,分别导出
然后再删除无关字段
统一修改为“Z”字段
| |
1分别导出 | 2删除字段
|
2.设置模型构建器
在Arccatalogue目录下,新建工具箱(图1)
新建模型,打开模型,插入迭代器
选择要素类,双击迭代要素类(图2)
工作空间或者要素数据集(图3)
选择待处理文件夹(上一步所有shp文件夹)
并将其设置成模型参数(图4)
设置模型参数方法:
在“批量出图”上,单击鼠标右键
选择“模型参数”(图4),设置完成后
“批量出图”右上角多一个“P”表示已设置成功
然后搜索“克里金法”
单击鼠标左键不放,拖拽到模型构建器内
双击克里金法(图1)
在输出表面栅格输入
%工作空间%\%名称%(图2)
(为什么不用绝对路径比如c\users\desktop
因为两个%内部可以放变量
也是根据需要自己定,让这个程序更灵活)
创建结果输出变量
也就是上面两个%里的“工作空间”
方法:在模型菜单“插入”下选择“创建变量”
选择“工作空间”变量类型(图3)
插入“工作空间”后,将其配置为模型参数
方法:在“工作空间”单击鼠标右键
选择“模型参数”(图4),设置完成后
“工作空间”右上角多一个“P”表示已设置成功
所有设置完成后
关闭模型编辑器,更改保存(图1)
双击模型工具,添加参数(图2)
执行模型工具(图3)
执行结果(图4)
将结果添加到Arcgis数据视图
发现处理后的图形是方形的
(处理范围是所有点的范围)也不太完美
接下来在添加三个参数
处理范围、保存分辨率和掩膜
①.添加处理范围并设置参数方法:
单击鼠标左键“克里金法”
选择获取参数-从环境-处理范围-范围(图1)
在“范围”上右键,选择为模型参数
②.添加分辨率并设置参数方法:
单击鼠标左键“克里金法”
选择获取参数-从环境-栅格分析-像元大小(图2)
在“像元大小”上右键,选择模型参数
③.掩膜并设置参数方法:
单击鼠标左键“克里金法”
选择获取参数-从环境-栅格分析-掩膜(图3)
在“掩膜”上右键,选择模型参数
在模型工具,单击右键,选择属性
调整参数顺序(图4),保存
双击模型工具并添加需要参数(图1)
执行模型工具,结果如图所示(图2)
图形显示是掩模后的,分辨率50
此时结果是我们想要的
| |
1执行模型工具 | 2执行结果 |
3.设置输出模板
切换布局视图
在布局视图设置统一输出样式(图1)
分别添加图名、比例尺、指北针、图例等(图2)
这部分不作重点,不多说
| |
1选择色带
| 2设置图名等 |
4.所有元素输出一遍
统一出图样式方法:
做其他元素时,选择导入符号系统
选择第一次配置的(Al2O3)图层色带样式(图1)
同理分别设置所有元素(图2)
至此批量制图结束
| |
1导入符号 | 2其他元素图 |
方法评价:
模型构建器方法
不需要编程,简单的配置即可
能解决批量处理元素的克里金插值法
但是有条件限制(迭代器不能迭代列)
为能迭代每一个元素
我把每列元素转成点文件
虽然解决了迭代问题,也解决了克里金问题
但毕竟还是要操作好多列
而且每个元素输出也要单独修改
还是有点麻烦
为避免做重复性工作
也就有下面的的Arcpy脚本方法
(二)Arcpy脚本
网上也类似代码
参考文章
《ArcPy读取Excel多时序数据、批量反距离加权IDW插值与批量掩膜》
网址:https://baijiahao.baidu.com/s?id=1733494862361369132
不过不是克里金方法
而且也不是遍历每一列数据
于是对前人代码进行修改和自定义功能
最终达成目的
也分为三个步骤进行说明
1.excel转点要素.py
在桌面新建文本文档
复制以下代码
另存为python文件(图1)
设置为脚本工具方法:
在工具箱下右键添加脚本(图2)
设置标签为“Excel转shp”(图3)
单击下一步,导入脚本
选择上面另存的python文件(图4)
接下来为脚本设置参数名称及数据类型(图5)
最后双击脚本工具
添加自定义参数(图6)
| |
1写脚本文件
| 2新建脚本工具
|
| |
3设置名称
| 4导入脚本
|
| |
5调整参数 | 6执行脚本工具 |
执行脚本工具
详细操作见下面动图
2.批量克里金.py
同上一个操作
在桌面新建文本文档
复制以下代码
另存为python文件(图1)
在工具箱下右键添加脚本(图2)
设置标签为“批量克里金”(图3)
单击下一步,导入脚本
选择上面另存的python文件(图4)
为脚本设置参数名称及数据类型(图5)
最后自定义参数,执行脚本工具(图6)
| |
1写脚本文件
| 2新建脚本工具
|
| |
3设置名称
| 4导入脚本
|
| |
5调整参数 | 6执行脚本工具 |
详细操作见下面动图
3.根据模板批量修改样式.py
同上一个操作
在桌面新建文本文档
复制以下代码
另存为python文件(图1)
在工具箱下右键添加脚本(图2)
设置标签为“根据模板批量出图”(图3)
单击下一步,导入脚本
选择上面另存的python文件(图4)
为脚本设置参数名称及数据类型(图5)
最后自定义参数,执行脚本工具(图6)
| |
1写脚本文件
| 2新建脚本工具
|
| |
3设置名称
| 4导入脚本
|
| |
5调整参数 | 6执行脚本工具 |
详细操作见下面动图
Arcpy脚本工具方法
需要注意的点很多
为方便理解,贴出录制视频
供大家学习
最后做个总结
平时工作遇到需要批量处理的事情
要么选择模型构建器,要么用Python
模型构建器相对来说简单
写这篇文章的时候,我直接建的
几乎没有调试,所有步骤及结果一次通过
而Python方法相对复杂些
上文三个步骤第一个和第三个网上有类似模块
但功能结果都不一样,需要修改
第二个批量克里金.py是我自己写的
总体来说Python方法更方便,也更灵活
最终实现了小伙伴需求,很开心