使用python制作ArcGIS插件(1)工具介绍

by 李远祥

ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作。相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷。通过开发语言,可以制作ArcGIS Desktop各个软件模块的插件。

Addin支持多种开发语言,如.net、java和python。其中.net和java需要配合ArcGIS的SDK,使用ArcObjects进行开发。其好处是ArcObjects可以非常细粒度的控制ArcGIS Desktop的各种操作;其困难之处就是ArcObjects非常庞大,学习成本非常高,一般只适合有多年编程经验和熟悉ArcGIS的开发人员使用。Python语言进行Addin开发,非常适没有编程能力,但又经常使用ArcGIS工具的人员使用。为什么这样说呢?由于python语言非常简洁,写法独特,由于适合于没有学习过编程语言的人上手(没有任何的编程语言羁绊有时候是件好事),而且ArcGIS内置了ArcPy,一个使用python进行ArcGIS调用的开发包,可以轻松调用ArcGIS

Desktop的所有工具箱工具,并能通过python语言很好的进行扩展,可以说,使用python进行Addin开发,门槛相当低,而且快捷。但不足之处也是显而易见的,就是ArcPy定位是工具级别的操作,粒度相对于ArcObjects 是非常大的,不适用做复杂的交互操作,如果是一些逻辑性比较强,与地图交互不多的工作,可以使用python去创建插件来完成。

所谓工欲善其事必先利其器。那么使用Python来做ArcGIS的Addin需要使用哪些工具呢?Esri提供了Python加载项向导工具来实现Addin界面的搭建,可以到Esri官网去下载该工具Python加载项向导 。从介绍来看,该设计器要求的最低ArcGIS版本为10.1

,如下图所示

工具非常简单和非常小,还不到7M的空间,主要用来设计插件的界面,并且将各个交互界面接口进行保留,具体的实现开发人员可以选用自己喜欢的python编辑器来实现程序编写。下载下来是一个zip包,解压后可以看到其文件结构,直接到其bin文件夹下,找到唯一一个可运行程序 addin_assistant.exe ,如下图所示

双击运行该工具,进入其涉及界面,会提示选择一个工程文件夹,如果是创建新的工程,建议选择一个新的文件夹,如果是要打开已经存在的工程,则选择工程所谓的文件夹即可,如下图所示,使用一个新的文件夹来保存工程。

点击【确定】按钮后,可以进入并输入插件的一些信息,如插件的名称、版本、公司、描述、作者及这个插件的图标等,这些都将写入插件的配置文件中。

这些信息会在插件安装的时候弹出提示。接下来就是关键部分了,就是创建插件的内容,如按钮、面板、工具条、菜单等,这些可以在Add-In Contents 面板中设置。如下图所示

例如在该示例中,我们的目标是创建一个批量裁剪的工具,工具的要实现的工作都已经在上图的描述中说明了,那么,采用工具条的形式进行创建,直接制作成为工具,可以选择使用Toolbar。右键点击Toolbar,新建一个Toolbar,并输入该Toolbar的一些说明,如Caption。但ID方面建议这些都使用英文进行输入,因为最终这部分的配置会预留一些界面的事件接口。

在新建的toolbar右键点击,可以新建一些界面元素,如按钮、菜单、工具、面板、下拉菜单等

同样创建每一个界面元素,ID都建议使用英文,因为python语言本身对编码有比较严格的限制。为了满足批量裁剪的一些列要求,我们可以适当的定义一些界面,如下图所示

设计完成后,我们就可以点击【save】按钮保存工程了。至此,python加载项向导工具就可以歇歇了,生下来就是进行艰苦的代码编写了。接下来打开工程文件夹去看看其工程的结构。

这几个文件和目录有各自的作用

Images目录:存放界面元素的各种图片

Install   目录:用于保存插件的源代码,里面一般会生成【mytools_addin.py】文件,如果重新设计界面,则会有一系列的文件,命名方式为在文件名后面加上123这些数字编号。一些初始化代码会写在该文件中,从文件中可以看到,已经创建好了这些界面元素的一些配置和事件,后续工作只需要对该文件补充实现代码即可

config.xml   : 记录这插件的各种配置信息,例如文字说明,关联的图片、界面元素类型等

由于在设计器中使用了一些中文输入,所以,配置文件中会存在一些编码的转化,如下图

makeaddin.py : 插件生成的运行脚本,运行这个脚本会编译插件,并在该工程目录下生成最终可以安装的插件。由于该文件也是个python脚本,是明码编写的,也可以用文本打开查看,但不要修改其代码,因为后面我们还需要用python环境运行它。

双击该文件,使用python.exe来运行(安装ArcGIS的时候会自动安装上python环境,这个不需要自行安装)

运行结束后,就可以生成一个最终的后缀为esriaddin 的文件,这就是arcgis的插件安装包,其名称与工程的文件夹相同,如下图

README.txt  : 记录工程的一些信息,一般可以忽略掉。

接下来就可以双击这个插件进行安装了,直接双击之后,可以看到之前创建工程时输入的插件说明信息,如下图

点击【Instrall Add-In】进行安装,安装完成后,可以在ArcMap菜单空白处点击右键,将该工具调出来使用

如要管理这些插件,可以在ArcMap的菜单【自定义】–【加载项管理器】中进行删除

由于该工具还没有具体的代码实现,因此,点击任何的按钮都没有反应。在后面的章节中,我们会介绍如何实现这些功能。

转载自:https://blog.csdn.net/liyuanxiang1984/article/details/52774298

arcgis python工具-使用python制作ArcGIS插件(1)工具介绍相关推荐

  1. python刷网_Python制作刷网页流量工具的代码实例

    本文给大家分享的是一个使用python制作的,可以实现刷网页流量的小工具,并给大家附上了详细代码,有需要的小伙伴可以参考下 准备 必须环境: Python3 开始 先实现一个简单的版本,直接上代码:i ...

  2. linux系统启动盘怎么制作工具,windows系统制作linux启动盘工具介绍

    Linux发行版排行榜: http://iso.linuxquestions.org/ http://distrowatch.com/dwres.php?resource=major&lang ...

  3. php必要的工具,50个非常有用的PHP工具

    PHP是使用最为广泛的开源服务器端脚本语言之一,当然PHP并不是速度最快的,但它却是最常用的脚本语言.这里有50个有益的PHP工具,可以大大提高你的编程工作: 调试工具 测试和优化工具 文档工具 安全 ...

  4. python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍

    ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是从使用或者编写都更加方便快捷.通过开发语言,可以制作ArcGIS ...

  5. 使用python制作ArcGIS插件(1)工具介绍

    使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...

  6. 使用python制作ArcGIS插件(5)其他技巧

    使用python制作ArcGIS插件(5)其他技巧 by 李远祥 使用python做插件开发,除了了解ArcToolBox工具之外,还需要在了解ArcPy的相关函数和接口.只有掌握了这些,才可以顺利的 ...

  7. 使用python制作ArcGIS插件(4)界面交互

    使用python制作ArcGIS插件(4)界面交互 by 李远祥 插件界面部分,除了一开始在设计器中设计的这些界面元素之外,还可以与操作系统进行一些输入输出的交互,这部分的实现全部在pythonadd ...

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

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

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

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

最新文章

  1. 如何用数学追到完美情人?
  2. 精读《手写 SQL 编译器 - 错误提示》
  3. Java数据类型与各数据库类型对应一览表
  4. PHP算法基于相同键合并数组
  5. python zlib字符串压缩
  6. android assets 文件夹 复制,Android 中 Assets目录下 文件或文件夹的复制
  7. AVCaptureDevice的几个属性
  8. 贝叶斯集锦:贝叶斯派和频率派的一个例子
  9. php拼接二维码,文字和二维码进行合并
  10. figure字体 latex_LaTeX字体设置(一)
  11. 论文阅读《A Survey on Deeping Learning In Medical Image Analysis》
  12. 三宝机器人怎么充电_三宝机器人说明书
  13. atx20pin电源短接_ATX电源20针及24针接口定义
  14. 百度地图---之---行政区域划分
  15. 马科维茨投资组合理论(均方模型)(1)
  16. screw 的postgresql数据库使用教程
  17. 跨平台为何选择Flutter?
  18. BJ模拟:医院(支配树)
  19. linux用命令下载图片,Linux命令行中采集指定页面的图片地址及图片下载
  20. PMBOK泛读(第三章) - 项目经理的角色

热门文章

  1. 换硬币c语言编程_如何才能成为编程高手?别人都不告诉你的东西,我来说给你听...
  2. gpasswd 命令详解
  3. pandas 绘图 机器学习看特征相关性
  4. LINUX ModuleNotFoundError: No module named 'XX'
  5. numpy 按照指定字段排序
  6. python 生成时间序列
  7. KVM、QEMU和KQemu的区别:
  8. Linux环境安装、卸载Docker
  9. Play Framework 2.2.6 安装
  10. 【编程题目】调整数组顺序使奇数位于偶数前面