ArcGIS—基于Python的脚本编程(8)

这篇文章主要介绍自定义脚本文件以及脚本共享的一些知识点。

目录


1. 自定义脚本工具

1.1 零散知识点

  • ModelBuilder创建的模型工具被保存在工具箱文件(.tbx)中,因此模型只能在arcmap或者arccatalog的内部运行。
  • 一个工具箱对应一个.tbx文件,它既可以放在文件夹中,也可以放在数据库中。
  • 只有当工具箱具有写权限时,才能向工具箱中添加工具。因此对于arcgis提供的arctoolbox系统工具,它是被封装了的,我们不能向里面随意添加工具。
  • 在添加脚本工具时(右键工具箱—Add—Script),向导中的脚本描述(Description)文本将自动添加到该工具箱的help面板中。
    这里写图片描述
  • “Always run in foreground”复选框选中后,即使我们在arcmap或者arccatalog中的【Geoprocessing】—【Optional】中选择了后台处理,该脚本工具也将在前台运行。(后台运行的意思是允许工具在运行的同时继续操作arcgis软件
    这里写图片描述
  • “Run python script in process”复选框默认选择的,表示在进程中运行此脚本,通常情况下速度更快。
    这里写图片描述
arcpy.GetParameterAsText()
// 函数将以字符串的形式接收参数,无论原始输入的参数是什么数据类型,它终究将返回一个字符串型。
arcpy.GetParameter()
// 能够将获取的参数存入列表中,也就是说,它可以获取具有多值的参数。

1.2 派生数据

在创建脚本工具时,对于参数Type可以选择为Derived,这表示这是一个派生数据:
这里写图片描述
派生数据在工具界面是不显示的,其具体使用情况如下:

  • 当输出的结果不是数据集而是一个值时使用派生数据;
  • 输出结果需要根据其他参数信息创建时使用派生数据;
  • 不生成新的结果,只是对于输入参数进行修改时使用派生数据;如修改表的字段名等等。

1.3 创建脚本时参数属性设置介绍

创建脚本时,每个参数有些具体的属性设置,下面来具体介绍一下属性的含义。
这里写图片描述

  • Default:设置该参数的默认值,如果设置了之后,Environment属性将不可用;
  • Environment:设置环境,如果设置了参数的该属性,那么参数的默认值将从地理处理环境中获得。因此Default和Environment属性设置一个就可以了
  • MultiValue:多值参数将以字符串形式传递给脚本,每个参数值之间由分号隔开,因此可以用python的split函数将字符串分割成列表,然后逐个取出值。
  • Symbology:默认情况下,脚本的输出数据集将会自动添加到arcmap中,当然我们也可以在arcmap中的Geoprocessing—Options的对话框中设置Display/Temporary Data选项。Symbology将定义图层文件,对于输出结果的数据集有效,当我们在arcmap中加载输出的结果数据时,它就将按照我们定义的符号系统进行绘制展示。

1.4 处理消息

在脚本编写时,往往需要根据需求打印出来一些数据信息或者脚本运行消息。常用的消息处理方法如下:

arcpy.AddMessage(需要添加的消息:字符串形式)
arcpy.AddWarning(需要添加的警告消息:字符串形式)
arcpy.AddError(需要添加的错误消息:字符串形式)

## 该函数可以使用工具的系统消息
arcpy.AddIDMessage(消息类型,消息ID,{参数1},{参数2})
## 其中,消息类型有:Error、Information、Warning

1.5 自定义进度对话框

arcpy中进度条有两种:

  • 默认进度条
  • 步骤进度条

arcpy中进度条函数:

arcpy.SetProgressor(进度条类型,{标签显示内容},{初始值},{结束值},{步长})  //创建进度条对象

arcpy.SetProcessorLabel(标签内容)  //更新进度条标签的现实内容

arcpy.SetProgressorPosition()  //根据工具执行的速度移动步骤进度条

arcpy.ResetProgressor()  //重置进度条


2. 共享脚本工具

2.1 在arccatalog中显示.py文件

打开ArcCatalog,菜单栏Customize—ArcCatalog Options—File Types中添加.py文件即可。
这里写图片描述
然后就可以在旁侧的目录树中看到.py文件了:
这里写图片描述


2.2 在脚本中获取此脚本文件的路径

scriptpath=sys.path[0]
scriptpath=os.getcwd()

2.3 利用地理处理包分享工具

地理处理包是一个后缀名为.gpk的压缩文件。通过Result窗口中的结果来创建,可用于工具共享。具体创建流程如下:

  • 在arcgis中添加数据;
  • 运行工具来创建地理处理工作流;
  • 在Result根据需要选择一个或者多个处理结果,然后右键,选择Share As—Geoprocessing Package
    这里写图片描述
  • 设置相关参数,生成地理处理包,并共享,但是需要登陆esri账户:
    这里写图片描述
  • 需要注意的是,如果采用的是脚本工具,需要讲将本工具所用到的.py文件也需要包含到此地理处理包中。

2.4 内嵌脚本分享工具

脚本可以内嵌到工具箱中然后用于共享:

  • 右键脚本工具,选择 Import Script即可。
  • 当脚本作为工具导入到工具箱中后,就不再需要脚本文件,也就是以后只需要共享.tbx问价 即可,不需要提供.py文件来保证脚本的运行。

将脚本从内嵌工具中提出来:

  • 右键脚本工具,选择 Export Script可以获取原始脚本的拷贝文件。
    这里写图片描述

2.5 脚本和工具一起拷贝分享

最后一个比较傻白甜,就是把你的脚本和工具tbx一起拷贝给对方,注意工具中最好使用相对路径。


–原创文章,转载必须注明出处–

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值