参考:使用 Python 创建工具

参考:在 Python 工具箱中定义参数数据类型


基本步骤如下:

(1)创建一个 Python 脚本,并保存成 .py 文件。

(2)创建一个自定义工具箱(.tbx 文件),用于存放脚本工具。

(3)通过脚本添加向导向自定义工具箱中添加工具。

(4)修改脚本的输入和输出变量,以便它能无缝地整合到地理处理框架中。


详细说明:

1. 自定义工具箱

  如下图所示:在 ArcToolbox 上右键》Add Toolbox...,在出现的对话框中选择右上角的“New Toolbox”,即可以新建一个工具箱

  

  

2. 添加脚本

  如下图所示,在新建的 Toolbox 上右键》Add》Script,然后进入向导模式

  

  (1)添加名称,Name 为工具名称(无空格),Label 为工具显示名称(可以有空格),Description 则是打开工具是显示的说明内容,选择“存储相对路径”有助于工具的转移,不受路径影响。

  

  (2)导入 Python 脚本文件的路径。

  (3)设置工具的参数,包括输入参数和输出参数。

  Display Name 为参数的说明,Data Type 为参数的类型

  常用参数属性如下所示:

  • Type:该属性有三种值,必选、可选以及派生。
  • Direction:该属性定义了该参数是输入参数还是输出参数。
  • MultiValue:如果设置为 NO,则该参数只能设置一个值。如果设置为 YES,则该参数可以设置一列值。
  • Default:默认值,不设置的话,在添加完输入参数后,系统会自动生成输出文件名。
  • Filter:可以限制输入参数的数据类型。可以根据所需要的数据类型,设置各种类型的过滤器。

  常用 Data Type 如下所示:

  • File:通过点击 Filter 属性可以修改扩展名,如下图所示,选择 File,然后填写扩展名,不需要加点。

  • Shapefile:shp 文件。
  • Folder:文件夹,如果想要设置输出文件夹,Direction 属性也要选择 input。
  • Text File:文本文件(txt 文件)。

  

  脚本最后就是生成了对应的文件,若是 shp 文件,如果想要自动添加到当前 data frame 中,可以参考“添加 shp 文件”。

3. 脚本中接收参数

  通过 GetParameterAsText 和 GetParameter 函数接收工具传递过来的参数。

  GetParameterAsText 函数的语法如下所示:

<variable> = arcpy.GetParameterAsText (<index>)

  脚本工具对话框上的参数与 GetParameterAsText 函数的索引值是一一对应的,分别为0、1、2...

  GetParameterAsText 函数会以字符串的形式接收,GetParameter 函数可以将接收的一系列值存储在列表中。GetParameterAsText 函数接收多值(MultiValue)参数时,会将文本用分号(;)隔开,因此可以通过 split 函数将字符串创建成列表。如下所示:

import arcpy
# 第一个参数,为多值的输入参数
inputFile = arcpy.GetParameterAsText(0)
# 第二个参数,为输出参数
outFile = arcpy.GetParameterAsText(1) # 定义xml列表
file_xmls = inputFile.split(";")

4. 修改脚本工具

  如下图所示可以修改工具,Edit 可以直接打开 .py 文件;Item Description 可以添加说明内容,包括工具的说明以及每一个参数的详细说明;Properties 可以修改向导里面设置的参数内容,将这些设置修改后,最好将工具箱另存为 .tbx,这样新的工具箱就有了新的设置。

  

参考: Arcpy基础方法之Tools&Toolboxes

参考:使用python+Arcpy创建自定义Arctoolbox工具

  对于输入中文容易报错,通过此链接“关于python报错“...ordinal not in range(128)”的解决办法”解决,代码如下:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

【306】通过ArcPy编写ArcToolbox的更多相关文章

  1. 使用python制作ArcGIS插件(3)ArcPy的使用说明

    使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...

  2. ArcGIS Python编程案例-电子资料链接

    ArcGIS Python编程案例(1)-Python语言基础 https://www.jianshu.com/p/dd90816d019b ArcGIS Python编程案例(2)-使用ArcPy编 ...

  3. 如何使用ArcGIS Pro发布自定义打印服务

    我们知道可以通过ArcGIS Map来发布自定义打印服务.从ArcGIS Enterprise 10.6.1版本起,打印服务的功能更加完善了,改进点包括: 支持打印矢量切片服务 改进了智能制图和颜色透 ...

  4. 笑谈ArcToolbox (3) ArcToolbox的一亩三分地

    笑谈ArcToolbox (3) ArcToolbox的一亩三分地 by 李远祥 每个人都会有一些鲜为人知的小秘密,都有着不允许别人染指的一亩三分地.软件是人编写的,当然也会给它留有自己所拥有的一亩三 ...

  5. 笑谈ArcToolbox (2) 开启ArcToolbox的钥匙

    笑谈ArcToolbox (2) 开启ArcToolbox的钥匙 by 李远祥 GIS人遇到ArcToolbox就像找到了宝藏一样兴奋,但并不是每个找到宝藏的人都具备开启宝藏的钥匙.有时候功能强大并不 ...

  6. 笑谈ArcToolbox (1) ArcToolbox 的发展方向

    笑谈ArcToolbox (1) ArcToolbox 的发展方向 by 李远祥 ArcGIS工具箱ArcToolbox具有非常多的工具,相信用过的人都非常惊叹,其功能完备并且强大,种类繁多,总能找到 ...

  7. arcpy.mapping实战-专题图制图自动化

    arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...

  8. arcpy.mapping-认识arcpy.mapping

    arcpy.mapping-认识arcpy.mapping by 李远祥 ArcMap提供了强大的地图制图功能,在实际的工作中,只要涉及到专题地图和地图册的制作,难免会遇到非常多的出图工作和地图图面元 ...

  9. 使用python制作ArcGIS插件(2)代码编写

    使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...

随机推荐

  1. UWP 流畅设计中的光照效果(容易的 RevealBorderBrush 和不那么容易的 RevealBackgroundBrush)

    在 Windows 10.0.16299 中,RevealBrush 被引入,可以实现炫酷的鼠标滑过高亮效果和点击光照.本文将告诉大家如何完整地实现这样的效果. Reveal 的效果(自带) 在微软官 ...

  2. WampServer的配置

    转自:http://www.cnblogs.com/azumia/archive/2012/06/06/2538872.html 第一,打开局域网访问 配置文件:点击右下角的WAMP 服务器小托盘,选 ...

  3. vue踩坑记录

    一.element resetFields 方法报错 网上查的解决方案 resetForm(formName) { this.$nextTick(() => { this.$refs[formN ...

  4. python模块--config

    一.创建文件 ##-----------------创建数据表-------------------------- import configparser config = configparser. ...

  5. Attribute的妙用 ---- 拦截器(过滤器)

    一.何为Attribute 下面是微软官方对Attribute的解释: 公共语言运行时允许你添加类似关键字的描述声明,叫做Attributes,它对程序中的元素进行标注,如类型.字段.方法和属性等.A ...

  6. NetCore下模拟和使用Modbus工业通信协议

    Tips: 1.目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net  https://github.com/parallelbgls/Modbus.Net 2.modbus是 ...

  7. laravel Auth token创建于使用

    token 的创建和使用, https://laravelacademy.org/post/3640.html 用户表密码字段验证修改,不只是password https://www.jianshu. ...

  8. SQLServer中求两个字符串的交集(字符串以符号分隔)

    两个字符串,以特定符号分隔(例如‘,’号),求交集 第一种情况: declare @m varchar(100),@n varchar(100)select @m=',2,3,5,7,8,9,10,' ...

  9. Java 打印一个心心

    package Day8_06; public class For { public static void main(String[] args) { System.out.println(&quo ...

  10. 01:Sysbench 基准压测 IO篇

    line:V1.1 mail: gczheng@139.com date: 2017-11-17 一.Sysench测试前准备 1.1.压测环境 配置 信息 主机 Dell PowerEdge R73 ...