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

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

使用python制作ArcGIS插件(1)工具介绍的更多相关文章

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

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

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

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

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

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

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

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

  5. 使用python制作ArcGIS插件(6)案例分析

    利用ArcPy制作航空制图插件 By 李远祥 这是笔者两年多前写的一个面向航路图做的一个插件,基本上将航路图的制作进行流程化,制作成为可交互的插件,只要有航路和机场的信息,就可以直接生成一个航路图,每 ...

  6. 《零基础学习Python制作ArcGIS自定义工具》课程简介

    Python for ArcGIS Python for ArcGIS是借助Python语言实现ArcGIS自动化行为的综合,它不止是如课程标题所述的“制作ArcGIS自定义工具”,还包括使用Pyth ...

  7. 32款iOS开发插件和工具介绍[效率]

    插件和工具介绍内容均收集于网络,太多了就不一一注明了,在此谢过!   1.Charles 为了调试与server端的网络通讯协议.经常须要截取网络封包来分析. Charles通过将自己设置成系统的网络 ...

  8. IDEA实用的第三方插件和工具介绍设置

    一:grep console grep-console插件可以让idea显示多颜色调试日志,使Log4j配置输出的不同级别error warn info debug fatal显示不同颜色 开发起来区 ...

  9. ArcGis Python脚本——ArcGIS 中使用的 Python 是什么版本

    Python 编程语言用于自 9.0 起的各版本 ArcGIS 中,并被整合到 ArcMap 和 ArcGIS for Server 的自动安装中. ArcGIS 将在完整安装过程中安装下列 Pyth ...

随机推荐

  1. Tomcat热部署:Maven项目一键部署到Tomcat服务器 - 支持多环境

    参考:Eclipse中的Maven项目一键部署到Tomcat服务器 - 支持多环境部署 命令 debug模式设置关联源码 eclipse --> 项目右键 --> Debug As --& ...

  2. 对float的理解

    从IE6下的双边距引出 对一个div设置float:left;同时设置了margin-left:100px时在IE6下会出现双边距. 有两种解决办法: 1,推荐办法.加display:inline 2 ...

  3. iOS开发——判断手机格式

    添加NSString分类 1.在NSString+Check.h中,添加方法: -(BOOL)checkPhoneNumInput; 2.在NSString+Check.m文件中: -(BOOL)ch ...

  4. iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试

    苹果发布Xcode7后, 开放了普通的AppleID也能真机调试( 非$99 或 $299, 只要能上AppStore下载应用的AppleID就行),下面教你具体做法,很简单的. 1.运行Xcode, ...

  5. 苹果App Store开发者帐户从申请,验证,到发布应用(3)

    应用上架的流程和操作步骤 下面主要介绍一下,上架应用相关流程和相关的操作步骤:   1.登录itunes,https://itunesconnect.apple.com/WebObjects/iTun ...

  6. 1602A液晶

    液晶显示屏中,1602型算是比较简单的一种,据说和12864还是全兼容的.这两天学习的结果如下.一.1602里的存储器有三种:CGROM.CGRAM.DDRAM.CGROM保存了厂家生产时固化在LCM ...

  7. ios页面跳转

    reference:http://blog.csdn.net/engandend/article/details/11706323 目前,就我所学到的内容,页面跳转有三种方法 一.直接推到下一个页面 ...

  8. AngularJS中使用的表单验证

    Reference: http://www.tuicool.com/articles/2Qbiqi 客户端表单验证是AngularJS里面最酷的功能之一. AngularJS表单验证可以让你从一开始就 ...

  9. selenium Chromediver

    Here we use wget to fetch the version number of the latest release, then plug the version into anoth ...

  10. ubuntu系统内核替换

    此处将内核由高版本替换成低版本.替换前的系统为ubuntu 12.04 kernel 3.8.0. 替换后的内核版本为2.6.35. 首先下载需要替换的内核文件,下载链接:https://www.ke ...