您的位置:首页 > 运维架构

ArcGIS Desktop A…

2016-01-25 15:26 211 查看
原文地址:Desktop Add-in插件开发系列">ArcGIS Desktop Add-in插件开发系列作者:海亲王

Add-in的概念

ArcGIS的10引入了几个新的和创新的功能,使您更容易定制和扩展ArcGIS桌面应用,包括新的桌面插件模型。Add-in可以理解为可以包含多种UI和非UI对象的插件包概念。其中支持的对象类型包括(主要分两大类):

第一大类:交互类

按钮和工具:

按钮和工具是简单的控制,可以出现在工具栏按钮或在个案上的菜单。

组合框:

一个组合框提供了一个项目的下拉列表,可以选择提供一个可编辑的输入区域。

多项目:

一个多项目是在运行时动态创建菜单项的集合。多项目菜单上时非常有用的项目不能确定之前,运行时间或项目需要进行修改的基础上,系统状态。

可停靠窗口:

可停靠窗口是浮动或停靠的窗口,在ArcGIS桌面应用程序的显示。可停靠窗口,您可以用任何填充内容分类:图表,幻灯片,视频,迷你地图,或包括ESRI自定义对话框控件包含其他控件。附加在开发可停靠窗口的地方,就开始出现,它是否将与其他可停靠窗口分组相当大的控制。

应用程序扩展:

应用扩展用于其他组件之间的协调活动,如按钮,工具和可停靠窗口,在一个包含加载项。应用程序扩展通常是与存储状态负责外接作为一个整体,并经常用于侦听和响应由宿主应用程序公开的各种活动。应用程序扩展,可配置为自动加载或在加载他们的相关的应用程序时自动启动;扩展也可以被配置为出现在标准ArcGIS的扩展对话框,例如空间分析扩展、网络分析扩展。

编辑器扩展:

编辑器扩展使您可以通过插入框架直接编辑您的编辑工作流程。相对于应用程序扩展,扩展编辑器加载项被加载编辑会话时开始(编辑>“开始编辑)。您可以自定义你的编辑会话的行为(例如,编辑监听事件)通过创建编辑器扩展。

第二大类:容器类

工具栏:

工具栏可以承载按钮,工具,菜单,工具栏和组合框。正如菜单,控件,工具栏上出现可以来自内置的来源,外接源,或两者兼而有之。工具栏可以被配置为自动出现时,最初添加到应用程序,使他们的存在比较明显的用户。

工具盘:

工具盘提供了一种紧凑的方式将一组相关的工具集。显示常用的工具,并且带有一个小的下拉按钮的工具栏,用于访问组中的其他工具。正如菜单,工具工具调色板上出现可以来自内置的来源,外接源,或两者兼而有之。

菜单和上下文菜单:

提出了一个菜单按钮,子,多项目的下拉列表。菜单项可以来自内置的来源,外接源,或两者兼而有之。菜单通常是托管在工具栏,但它们也可能出现上下文(弹出)菜单和菜单根独立。

这些对象都可以在VisualStudio工程里通过添加新项目向导创建。创建过程需要指定一些该对象的属性,例如标题、图标、分类、提示等。不同类型的对象可以设置的属性都不完全一样。这些设置都是静态的,保存在Config.esriaddinx这个XML文件里,高水平的用户可以自己编写修改其内容。


Desktop Add-in插件开发系列" />




Desktop Add-in插件开发系列" />


Add-in的开发流程

使用VisualStudio的新建工程向导,选择ESRI提供的ArcGIS
Add-in模板,这些Add-in模板针对ArcGIS
Desktop所包含的每一个应用程序。选择完模板后,系统就会要求我们立即选择第一个添加到Add-in里的对象类型。之后,如果我们有需要往Add-in里添加更多其它的对象类型的话,可以通过添加新项目向导来创建新对象。



Desktop Add-in插件开发系列" />


Add-in的工程结构十分简单明了。工程里包含一个Config.esriaddinx的XML文件,以及已经添加到工程里的对象代码文件,如Command对象、Tool对象,这里需要注意的是,其中Dockable
Windows对象是自定义的UI对象,所以除了可以看到它的代码文件外,还可以看到它的设计时节目,编程体验和WinForm一致。除了上述的这些,还包括一个Images的文件夹,用来保存工程里所使用到的图片,例如Command的图标。

在编写代码,实现自定义对象的逻辑时,有一些内置对象我们是必须要知道的,这些内置对象能够辅助我们编写出安全的代码。

其中一个内置对象就是和我们工程相对应的ArcGIS Desktop程序对象,例如假如我们目前开发的是一个ArcMap
Add-in,那么在我们的个工程中就会内置有一个命名为ArcMap的静态类,该静态类包含一些静态对象,如Application、Document、DockableWindowManager、Events,通过这些对象我们就很容易在代码里获得包含Add-in的地图文档实例,继而获得类似Map这些核心编程对象。

另一个内置对象就是ThisAddin,通过该对象,我们可以获得插件的一些元数据信息,例如插件的名称、描述,除此之外,该对象还包含了一个IDs的对象,该对象记录了当前工程所包含的所有对象的ProgID,通过这些ProgID,我们就能方便地创建或查找相对应的对象。这个机制其实和COM的创建对象机制是一致的。

程序在编译后,会生成一个后缀名为esriaddin的文件,该文件是一个zip文件,解压后,我们知道其内部包含一个Config.xml文件、一个Install的文件夹(里面就是我们插件的dll文件)和一个Images的文件夹。默认如果在VisualStudio的运行工程,插件会自动安装到相对应的ArcGIS
Desktop应用程序,并启动。如果没有,则手动设置工程属性的调试选项,使用启动外部程序即可,路径设置如C:Program
FilesArcGISDesktop10.0BinArcMap.exe。


Desktop Add-in插件开发系列" />

Add-in的部署也十分简单,你可以把编译好的esriaddin文件复制到需要部署的已经安装好ArcGIS
Desktop的机器上,又或者把它作为邮件附件发送给别人。在部署电脑上双击esriaddin文件,就要弹出Add-in安装界面,让用户查看该插件的一些元信息,例如作者,是否具有数字签名,然后让用户决定是否安装该插件,安装插件是不需要重启任何ArcGIS
Desktop应用程序的。安装完之后,就可以通过相应ArcGIS Desktop应用程序的Add-in
Manager来查看已安装的Add-in,也可以通过它来卸载。

一些Add-in所包含的对象,例如Command、Tool、Toolbar,是需要用户通过Customize窗口定制添加到界面上的。Extension对象,则需要用户通过Extensions窗口勾选加载。


Desktop Add-in插件开发系列" />

由于目前很多基础在线底图都是切片形式的缓存地图服务,每当我们在ArcMap中使用时,往往会发觉缺少了类似ArcGIS
FlexViewer或谷歌地图的比例尺级别缩放滑块,虽然ArcMap支持对这类地图图层进行重采样处理,做到无级别缩放,但这种体验和我们在网页上的访问操作很不一致,客户往往需要点击Zoom
to Nearest Cache
Resoulution按钮来调整比例尺。为了给客户提供一致的体验,和方便使用。我们这里使用了ArcGIS Desktop
10最新的Addin开发插件模板,为客户定制了一个针对切片地图服务图层的比例尺级别缩放插件。

Addin工程包含一个自定义Command对象和一个自定义的DockableWindow对象。


Desktop Add-in插件开发系列" />

设置图层后自动生成比例尺级别


Desktop Add-in插件开发系列" />

支持浮动紧凑模式

Add-in的下载路径在:
http://www.arcgis.com/home/item.html?id=ae10e3a5b5ec4078829fbfb808fcb887 源代码下载路径在:
http://resources.arcgis.com/gallery/file/arcobjects-net-api/details?entryID=CE577CF2-1422-2418-A0C3-C4E87F7E6FB5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: