我是靠谱客的博主 美好皮皮虾,最近开发中收集的这篇文章主要介绍ArcGIS—基于Python的脚本编程(8),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

目录

    • 目录
    • 1. 自定义脚本工具
      • 1.1 零散知识点
      • 1.2 派生数据
      • 1.3 创建脚本时参数属性设置介绍
      • 1.4 处理消息
      • 1.5 自定义进度对话框
    • 2. 共享脚本工具
      • 2.1 在arccatalog中显示.py文件
      • 2.2 在脚本中获取此脚本文件的路径
      • 2.3 利用地理处理包分享工具
      • 2.4 内嵌脚本分享工具
      • 2.5 脚本和工具一起拷贝分享


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一起拷贝给对方,注意工具中最好使用相对路径。


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

最后

以上就是美好皮皮虾为你收集整理的ArcGIS—基于Python的脚本编程(8)的全部内容,希望文章能够帮你解决ArcGIS—基于Python的脚本编程(8)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部