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