ArcMap自定义脚本工具制作

原文 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简单的几行代码,并实现自定义的高级裁剪功能,有了一些常规的脚本之后,对齐输入输出参数进行单独的改写,设置为脚本工具,可以实现更多的快捷和友善的操作。

时间: 2024-10-12 11:51:22

ArcMap自定义脚本工具制作的相关文章

Unity3D 在自定义脚本中实现Button组件上的OnClick面板

Unity3D 在自定义脚本中实现Button组件上的OnClick面板UnityEvent脚本代码事件传参多参数传入下述内容不对c#语法做过多讲解,仅对已入门并有兴趣的同学做为学习和拓展的资料 大家在Unity制作的过程中一定都使用过UI功能,那么很多人也一定见过这个面板: 那么我们如何能在自己的脚本中添加上像OnClick这样的面板呢. UnityEventUnity中内置了一个UnityEvent类作为事件处理的类,我们只要在脚本中声明出来,Unity便会自动添加到脚本面板上,这样便可以在

zabbix自定义脚本监控pps(Packets per Second,包转发率)

一:介绍 网络的性能通常用吞吐率(throughput)这个指标来衡量.常用的网络吞吐率的单位有:PPS(即每秒发送多少个分组数据包).BPS(Bytes Per Second;即每秒发送多少字节).bPS (bits Per Second;即每秒发送多少比特).TPS(TransactionsPer Second;即每秒完成多少次发送过程). pps:(包每秒)包转发率标志了交换机转发数据包能力的大小.一般交换机的包转发率在几十Kpps到几百Mpps.包转发速率是指交换机每秒可以转发多少百万个

开始你的第一个npm脚本工具

在实际开发中,一般刚开始一个项目或者刚接手一个项目,我们会运行 npm install 下载安装所有依赖, 在实际开发中,可能也会使用各种命令行-- 来提高我们开发的效率. 与它相处了这么久,你真的了解 npm 这些东西吗? 本篇文章会分别介绍下面几个内容: package.json 解析命令行参数 丰富终端交互体验 发布 npm 包 实战--开发小程序脚手架 项目背景:每次新建小程序页面要生成四个文件名相同的文件 ( .wxml..wxss..json  和 .js ),并且要在 app.js

zabbix自定义脚本做监控及自制模板初探

一.说明 zabbix监控支持自定义脚本以及自制模板来扩展监控,换句话说就是对业务自定义监控;因此通过撰写脚本完成自定义监控十分有必要;这里的脚本既可以用shell也可以用python等语言;另外自定义了脚本主要目的是获取业务相关的监控数据;还需要结合zabbix web GUI上的模板才能生效;本文的目的就是基于之前的zabbix相关部署操作之后的补充! 任务:通过撰写脚本获取tcp 的各种状态,添加tcp状态模板,添加触发器;添加图形:完整实现脚本自定义监控的整个步聚流程! 二.agent端

使用MBROSTool 工具制作U盘多启动盘的方法总结

前段时间写了一个自用五合一多启动盘分享--分别用来维护娱乐,wifi密码破解,win&mac登陆密码绕过/清除,反馈的同学还是挺多,觉得大家都有这方面的需求,于是再把自己的使用经验总结一下. 软件的原贴地址:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=330493&extra=page%3D1.希望大家多给M大提供宝贵意见和建议.软件更新了很多版本,不同版本的功能都根据需要进行过增删. 下面就来单独说说使用MBROSTool

使用MBROSTool 工具制作本地硬盘F3救急模式的方法总结

前面写了一篇使用MBROSTool 工具制作本地硬盘多启动盘的方法总结.里面就是可以把一些系统安装到硬盘上面方便使用,比如安装PE到硬盘,不过启动的时候会先进入多UDm菜单,然后选择[启动本地系统]后才会进入本地的系统, 有的人不喜欢这种,或者只希望用PE,那么可以使用F3救急模式,也就是默认就没有变化,开机直接进入本地系统,只有按下F3的时候才进入PE系统,我之前也网上找过很多方法,不过都很麻烦,也很危险,曾经误操作导致分区表错误,丢失掉硬盘上的所有数据,下面就来用MBT实现这个功能. 首先F

dede自定义表单制作

dede自定义表单制作和制作留言板的原理差不多,就是如果有自己制作了一个网页专题的话需要接受前台提交来的表单,可以参照这种的! 首页在后台-核心-频道模型-自定义表单-增加新的自定义表单 里添加一个表单! 接下来就是填写自定义表单的各项值了,其实这里不懂的话都默认就好,只是自定义表单的名字作为记号写个差不多的,然后就是公开与否,如果前台提交来的数据不想让别人看到就可以直接选不公开!当然这个不公开最好是最后制作完毕在选,因为接下来要在前台浏览并复制一些代码,如果不公开是不能在前台看的! 填写好确定

实战:自定义脚本启动mysql-mysql 5.6.19

根据工作环境,自定义一个mysql启动脚本 ---1.保存为/usr/local/mysql/scripts/mysql_env.ini #set mysql init variablesMYSQL_USER=system #mysql的用户名MYSQL_PASS='password' #mysql的登录用户密码 #check input parameter or noif [ $# -ne 1 ] ; then #判断输入的参数个数echo "mysql port is 3306"M

实战:自定义脚本关闭mysql-mysql 5.6.19

根据工作环境,自定义一个mysql关闭脚本 ---1.保存为/usr/local/mysql/scripts/mysql_env.ini #set mysql init variablesMYSQL_USER=system   #mysql的用户名MYSQL_PASS='password'  #mysql的登录用户密码 #check input parameter or noif [ $# -ne 1 ] ; then     #判断输入的参数个数 echo "mysql port is 330