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的菜单【自定义】--【加载项管理器】中进行删除

由于该工具还没有具体的代码实现,因此,点击任何的按钮都没有反应。

文章转载于CSDN,作者李远祥版权归原作者所有,如有侵权请告知删除

- END -

ArcGIS API for Python技术基础篇7.72GB ARCGIS  ERDAS  ENVI干货教程网盘下载在ArcGIS中提取DEM的单元高程点ArcGIS水文分析实战教程—水库库容计算

python使用rpa需要什么插件_使用Python制作ArcGIS插件基础篇——工具介绍相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  8. python调用chrome插件_使用Python开发chrome插件

    标签: 谷歌Chrome插件是使用HTML.JavaScript和CSS编写的.如果你之前从来没有写过Chrome插件,我建议你读一下这个.在这篇教程中,我们将教你如何使用Python代替JavaSc ...

  9. 按键精灵调用python插件_【Python 教程】使用 Python 和大漠插件进行文字识别

    家里有一台win7系统的电脑,平时可以用来玩玩游戏消磨时间.但是有时候有一些重复的操作实在是无趣,所以打算写个脚本,让其自动化执行. 最终的目标就是把游戏里一些常用的操作都集合到脚本中去,且无序随机执 ...

最新文章

  1. linux线程池实现多线程并发,基于Linux的多线程池并发Web服务器设计-电子设计工程.PDF...
  2. r语言平均值显著性检验_8小时整理!t检验原理!R语言实现!一文彻底搞定t检验(上)...
  3. MinGW编译wxWidget
  4. oracle系统库名,Oracle 札记之 一:数据库名,数据库实例名,数据库域名,操作系统环境变量...
  5. HTML比较常用的标签
  6. java地址自动拆分_java – Hibernate:每个月自动拆分表
  7. 思科怎么修改dhcp服务器地址,思科交换机配置作为DHCP服务器的配置方法是怎样的?...
  8. python 文件写入多个参数_如何将多个参数写入txt文件(字符串和变量)
  9. 小程序中间放大轮播图_微信小程序实现类3D轮播图
  10. 十七、Fiddler抓包工具详细教程 — Fiddler常用插件
  11. 常用关系型数据库管理系统
  12. JAVA爬虫爬取国家统计局行政区划数据(2021年最新数据)
  13. SM2246EN+闪迪15131
  14. 用pentbox-1.8在kali中设置蜜罐记录攻击者行为
  15. Exception thrown from ApplicationListener handling ContextClosedEvent
  16. Ubutntu18.04 root用户下谷歌浏览器打不开
  17. java的listroots_Java File listRoots()用法及代码示例
  18. 【Shell】Shell脚本中调用另一个脚本的三种方式(fork/exec/source)
  19. tomcat源码解读(一)
  20. 人生重开模拟器,脚本点击

热门文章

  1. Mysql8官方分布式数据库MGR最佳实践
  2. Windows下Apache Tomcat 8安装配置
  3. postgres的序列(Sequence)的使用
  4. C语言解决约瑟夫问题详解的代码
  5. PHP XAMPP windows环境安装扩展redis 致命错误: Class ‘Redis‘ not found解决方法
  6. react-router的BrowserHistory 和 HashHistory 的区别,如何解决使用BrowserHistory 引起的访问路径问题
  7. XSS 跨站脚本攻击 的防御解决方案
  8. 中止git-pick-pick?
  9. javascript在数组的开头推送元素[重复]
  10. 计算机网络的各层及其协议,计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合...