ArcMap自定义脚本工具制作
在制图的前期,一般需要做一些数据的整理,如图层合并、裁剪等工作。虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧。如批量裁剪,虽然可以实现,但出来的结果会重命名为[图层名]_clip,这样对于配置好整个区域的mxd,需要单独裁剪部分范围数据非常不友好,以为后续工作意味着需要单独给裁剪出来的数据重命名,删除掉后缀_clip才可以统一设置数据源。
解决这个问题其实可以很快速的编写python脚本去实现。但脚本对于一般人来说比较麻烦,每次使用都需要调整脚本的参数,容易出错。ArcGIS是允许将脚本导入成为工具,这样就可以在ArcMap的界面下像使用常规工具一样去处理数据了。
下面以批量裁剪保留图层原来名称并删除数据为空的图层,以这个功能为例子。其代码如下:
#coding=gbk
#这个工具是使用一个图层去裁剪指定数据库或文件夹的数据,并将裁剪后空的图层删除
ClipFeats = arcpy.GetParameterAsText(0) #用于裁剪的图层
inputwork=arcpy.GetParameterAsText(1) #输入的要裁剪的数据
workPath = arcpy.GetParameterAsText(2) #裁剪后输出的位置
arcpy.env.workspace = inputwork
featureclasses = arcpy.ListFeatureClasses()
for fc in featureclasses:
outfeat = workPath+u"\\"+fc
arcpy.analysis.Clip(fc, ClipFeats,outfeat) #裁剪数据并输出
#检查是否有空的要素,如果是空的,删除数据
arcpy.env.workspace = workPath
featureclasses = arcpy.ListFeatureClasses()
for fc in featureclasses:
desc = arcpy.Describe(fc)
result=arcpy.GetCount_management(fc)
me = result.getOutput(0)
if int(me)==0:
arcpy.Delete_management(fc)
制作工具非常简单,只要将参数设置好,就是前面的几行arcpy.GetParameterAsText(0)
后面的这个索引号非常重要,它决定了在工具中参数的位置。
第一部新建一个工具箱,在工具箱出添加一个脚本
对脚本进行一些必要的描述,如下图所示
选择好对应的编写好的脚本
接下来就是最重要的参数设置了,这里的参数顺序是按照前面代码中参数获取的顺序要保留一致。
显示名称为工具调用时的显示说明,数据类型就必须跟参数对应,例如要裁剪的数据是个featureclass,那就可以设置为要素类或者图层;其他的两个参数由于都是指向输入的路径或者输出路径,可以设置为【工作空间or要素数据集】
如下图
完成后可以直接双击脚本工具,可以执行。
通过arcpy简单的几行代码,并实现自定义的高级裁剪功能,有了一些常规的脚本之后,对齐输入输出参数进行单独的改写,设置为脚本工具,可以实现更多的快捷和友善的操作。
相关文章
- 传Google拟收购微软Office文档协作工具厂商
- python小工具myqr生成动态二维码
- Spring boot中普通工具类不能使用@Value注入yml文件中的自定义参数的问题
- iOS开发 -- 为本地文件添加自定义属性的工具类
- npx小工具
- 系统性能监控工具之strace
- 自定义数组操作工具类代码示例
- Atitit 软件方法论法典概论 attilax著作 目录 1. 基本法通则总则2 2. 流程方法3 2.1. 工具链建设法4 2.2. 代码编写法4 2.3. 注释法4 2.4. 文档法
- paip.自适应网页设计 跟 响应式 设计方法与工具补充(2)o54
- Android dex系统工具
- 真香啊,这七大 Python 效率工具真棒啊
- libcurl 工具类
- 【Android 逆向】Android 进程注入工具开发 ( 总结 | 源码编译 | 逆向环境搭建使用 | 使用进程注入工具进行逆向操作 ) ★★★
- TensorFlowX.Y核心基础与AI模型设计09:基于tf.estimator.LinearClassifier模型自定义与部署工具saved_model_cli的使用
- 2022你还不会查看GIT版本历史?赶紧收藏这个工具
- ⚡接口调试工具-非常酷的在电脑上安装启动postman的方式⚡
- Gartner市场指南 | AIOps将成为运维最主要的工具(一)
- 【超好用】时序图画图工具TimeGen 3.2安装和使用教程