arcgis for desktopdesktop add-ins怎么开发工具条

1026人阅读
ArcGIS 10&为桌面的定制开发提供了一种全新的选择方式-Add-In
什么是Add-In
Add-In是一种能够快速扩展桌面应用程序功能的全新扩展方式
作为ArcGIS 10中全新定制方法,它有以下特点:
l容易创建:ArcGIS提供了很多创建Add-In模板,并提供了详细的接口以实现各种功能。
l更易共享:Add-In本质上是一个Zip压缩文件这个压缩文件里面包含了,易于网络、邮件传输、易于局域网内共享
l更加安全:可以对Add-In文件进行数字签名,使用的安全性得到保障
l更易安装管理:只要安装有桌面软件,系统就能自动识别Add-In文件,双击即可安装部署,同时desktop也有用于管理Add-In的管理工具.
Add-In支持的类型
按钮菜单按钮和工具
菜单和右键菜单
Multi-items
Tool palettes
可停靠窗体
Application extensions
Editor extensions
下面两个类型是ArcGIS
10.1&支持的
Editor Construction Tools
Server Object Extensions
Add-In文件结构
从文件结构来看,每个Add-In文件都包括了xml文件,程序集(对于java来说就是jar)及资源包,如下图
前面介绍了Add-In的特点、类型及其文件结构,下面我们来看看如何共享,当我们将Add-In制作好了之后,只需要双击就可以安装,这里的安装安装就是将Add-In文件部署到Well-Known文件目录里,当打开desktop时会自动将Add-In解压到desktop能自动识别的临时目录,执行时便是从该目录下读取资源。这两个目录是默认的,Well-Known目录里的文件可以移植到其它目录,或者网络共享目录,以实现共享。ArcGIS
10&在Windows
7上的Well-Known目录的位置(目录跟操作系统有关XP的默认Well-Know目录位置就不是下面这个)
C:\Users\esri\Documents\ArcGIS\AddIns\Desktop10.0
解压目录:
C:\Users\&username&\AppData\Local\ESRI\Desktop10.1\AssemblyCache
Add-In与本地化
Add-In支持多语言显示,这里的多语言显示是指同一个的Add-In文件安装到不同的语言环境的桌面应用程序里,能够自动检测其语言环境,来选择最佳匹配的语言来显示。我们可以来看下这个Add-In文件,一般的Add-In文件里只有一个config.xml,这里有多个的xml文件,分别对应多个语言版本,那么桌面程序在使用这个Add-In时能选择最佳的config.xml进行显示&。这个功能在一个语言跨度比较大,需要不同语言版本的组织中比较有意义
自动检测您的桌面应用程序运行的语言环境,并选择最佳匹配的配置文件来显示语言
Config.&language&.xml&,Config.&language&-&CountryCode&.xml&如下图:
管理Add-In
ArcMap的菜单中有一个Add-In
Manager&通过这个我们可以查看本机可以访问的Add-In,可以查看类型,以及是自己的Add-In还是共享的Add-in
开发并部署一个Add-In(VS2008+ArcGIS
启动VS-新建项目-ArcGIS-Desktop
Add-Ins(我们用ArcMap Add-In)
填写相关说明,这些信息都会出现在XML文件中
选择相关的Add-In类型,填写类名,类别等信息,这些信息都会出现在XML文件中
点击完成后生成的xml文件如下,里面包含我们上面的描述信息,如下图:
这是给我们生成的模板,我们需要再Onclick函数和OnUpdate函数或者构造函数填写相关信息,其中OnUpdate函数是系统自动调用如果我没记错的话应该是500毫秒调用一次用来检查这个Add-In是否可用,而Onclick函数是当我们点击的时候调用的,模板如下:
我们添加如下代码,其中ArcMap是自动生成一个静态类,代表了ArcMap,为什么是ArcMap?因为我们选择的是ArcMap的Add-In,这个对象就可以帮助我们获取ArcMap里的其他对象,可以说这个对象是我们进入ArcMap的入口,代码如下:
我们说了Add-In很容易使用,不用安装(实际是Copy),我们编译后可以看到一个esriAddin结尾的文件,我们双击就行了,这个时候这个Add-In就被放到Well-Known目录中,当ArcMap启动的时候从这个Well-Known中发现并解压到一个临时目录下,就可以使用了,如下双击安装:
打开ArcMap通过Customize界面找到这个Add-In,然后拖放到菜单上,如下图:
双击这个按钮出现如下效果:
当我们将图层全部移除后,发现这个按钮成为灰色的了?为什么?这是因为ArcMap自动的调用OnUpdate函数,发现图层的个数小于1,就变成不可用,如下图:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:219108次
积分:3482
积分:3482
排名:第6631名
原创:103篇
转载:53篇
评论:153条
文章:10篇
阅读:10671
文章:20篇
阅读:48604
文章:15篇
阅读:36614
(1)(6)(5)(6)(1)(2)(10)(11)(1)(6)(4)(3)(22)(1)(2)(8)(4)(7)(41)(14)(1)&&&&ArcGIS Desktop Python Add-ins 教程
ArcGIS Desktop Python Add-ins 教程
本教程介绍了如何为ArcGIS添加Python Add-ins的消息步骤。
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
sunshine007007
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行1114人阅读
ARCGIS应用相关(26)
ARCGIS开发(8)
在版本之后引入了几个新的创新的功能,使您更容易定制和扩展桌面应用,包括新的桌面插件模型。
&可以理解为包含多种和非对象的插件包,其中支持的对象类型包括:
按钮是一种简单的控制,可以出现在工具栏上。
工具也是一种简单的控制,可以出现在工具栏上或菜单中。
3) 组合框
组合框提供了一个项目的下拉列表,可以选择提供一个可编辑的输入区域。
4) 多项目
多项目是在运行时动态创建菜单项的集合。
5) 应用程序扩展
应用程序扩展用于组件之间的协调活动,如按钮、工具和停靠窗口。应用程序扩展经常用于侦听和响应由宿主应用程序公开的各种活动。应用程序扩展,可配置为自动加载或在加载它们的相关的应用程序时自动启动,也可以出现在标准ArcGIS的扩展对话框。
6) 编辑器扩展
编辑器扩展可以通过插入框架直接进入编辑工作流程。相对于应用程序扩展,编辑器扩展加载项被加载编辑会话时需要开始编辑。你也可以通过创建编辑器扩展自定义编辑会话的行为
7) 可停靠窗口
在ArcGIS桌面应用程序的显示中,可停靠窗口是浮动或停靠的窗口。在可停靠窗口中你可以填充的内容分为:图表、幻灯片、视频、地图或包括Esri自定义对话框控件。
b) 容器类
工具栏可以承载按钮、工具、菜单、工具栏和组合框。
工具盘提供了一种紧凑的方式将一组相关的工具集。
菜单提供了一个菜单项的下拉列表。
右键菜单提供了一个右键弹出的菜单项的下拉列表。
的开发环境为。
查找出面积小于给定&#20540;的地块,并合并到相邻的地块中最大的地块。
& & & 功能实现
a) & & & &新建解决方案
启动VS2010,新建项目。
&点击确定,新建一个项目。
b) & & & 进入Welcome页面设置
& & & & Add-in Name:插件的名称;
Company/Publisher:插件的制作公司或发布者;
Author:插件的制作者;
Description:插件的描述;
Image:插件的图标。
&c) & & & &进入Add-in Types页面
Add-in Types页面用于设置创建的插件的类型。
选择Add-in Types,此处选择按钮。
Class Name:类的名称;
Caption:按钮上显示的文本;
Image:按钮上的图标;
Category:所属Command的分类;
Tooltip:鼠标在上面时状态栏显示的文字;
Description:工具的描述。
点击完成设置
Config.esriaddinx文件是一个XML文件,它是一个配置文件,里面包含了项目的相关配置,是自动生成的。内容如下:
&ESRI.Configurationxmlns=&/Desktop/AddIns&xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&&
& &Name&FeaturesMerge&/Name&
& &AddInID&{96-44a1-249cf}&/AddInID&
& &Description&查找出面积小于给定&#20540;的地块,并合并到相邻的地块中最大的地块。&/Description&
& &Version&1.0&/Version&
& &Image&Images\FeaturesMerge_1.png&/Image&
& &Author&zx&/Author&
& &Company&Higis&/Company&
& &Date&&/Date&
& &Targets&
& & &Targetname=&Desktop&version=&10.1& /&
& &/Targets&
& &AddInlanguage=&CLR4.0&library=&FeaturesMerge.dll&namespace=&FeaturesMerge&&
& & &ArcMap&
& & & &Commands&
&&Buttonid=&Higis_FeaturesMerge_FeaturesMerge&class=&FeaturesMerge&message=&查找出面积小于给定&#20540;的地块,并合并到相邻的地块中最大的地块。&caption=&FeaturesMerge&tip=&查找出面积小于给定&#20540;的地块,并合并到相邻的地块中最大的地块。&category=&Add-In Controls&image=&Images\FeaturesMerge.png&
& & & &/Commands&
& & &/ArcMap&
& &/AddIn&
&/ESRI.Configuration&
FeaturesMerge.cs文件是类文件,初始内容如下:
using System.Collections.G
using System.T
using System.IO;
namespace FeaturesMerge
& & public class FeaturesMerge: ESRI.ArcGIS.Desktop.AddIns.Button
& & & & publicFeaturesMerge()
& & & & protectedoverride voidOnClick()
& & & & & & ArcMap.Application.CurrentTool=
& & & & protectedoverride voidOnUpdate()
& & & & & & Enabled = ArcMap.Application!=
类文件中包含两个方法:
1)OnClick()方法
OnClick()方法是按钮点击方法。
2)OnUpdate()方法
OnUpdate()方法是更新的方法。
e) & & & &添加引用
需要调用的类库包括:
&&f) & & & &代码编写
1) 添加一个窗体
该功能需要用户点击按钮后,弹出一个窗体。因此,需要添加一个Form窗体。
2) 设计窗体界面
设计窗体界面如下:
导入要素:用于选择处理的要素图层。
最小面积:用于设置合并要素的面积。
3) 编写窗体代码
//获取处理的图层
string strLayerName =thisNaNb_InputFeature.T
IFeatureLayerpFeatureLayer = GetFeatureLayer(strLayerName);
IFeatureClasspFeatureClass = pFeatureLayer.FeatureC
IQueryFilterpQueryFilter = new QueryFilter();
pQueryFilter.WhereClause= &area&=& &#43; this.txt_MinArea.T
IFeatureCursorpFeatureCursor = pFeatureClass.Search(pQueryFilter, false);
IFeature pFeature = pFeatureCursor.NextFeature();
while (pFeature !=null)
//面积小于等于设定&#20540;的要素
IGeometry pGeometry =pFeature.S
IRelationalOperatorpRelationalOperator = pGeometry as IRelationalO
IQueryFilter pQueryFilter2 = newQueryFilter();
pQueryFilter2.WhereClause =&area&& &#43; this.txt_MinArea.T
FeatureCursor pFeatureCursor2 =pFeatureClass.Search(pQueryFilter2, false);
IFeature pFeature2 =pFeatureCursor2.NextFeature();
//是第一个要素
bool IsFirst =
//基本要素
IFeature pBaseFeature =
while (pFeature2 != null)
& & //面积大于设定&#20540;的要素
& & IGeometry pGeometry2 = pFeature2.S
& & //判断面积大于设定&#20540;的要素是否与面积小于设定&#20540;的要素相临
& & &if(pRelationalOperator.Touches(pGeometry2))
& & & &if (IsFirst)
& & & & &{
& & & & & pBaseFeature = pFeature2;
& & & & & }
& & & & else
& & & & & &IGeometry pBaseGeometry =pBaseFeature.S
& & & & & &IGeometry pMaxGeometry = pGeometry2;
& & & & & &IArea pBaseArea = pBaseGeometry asIA
& & & & & &IArea pMaxArea = pMaxGeometry asIA
& & & & & &if (pBaseArea.Area & pMaxArea.Area)
& & & & & &{
& & & & & & &pBaseFeature = pFeature2;
& & & & & & }
& & & & & }
& & & & & pFeature2 =pFeatureCursor2.NextFeature();
& & & int index =pBaseFeature.Fields.FindField(&area&);
& & & &object value = pBaseFeature.get_Value(index);
& & & MessageBox.Show(value.ToString());
& & & & object missing = Type.M
& & & & IGeometryCollection pGeometryCollection= new GeometryBagClass();
& & & &pGeometryCollection.AddGeometry(pGeometry,ref missing, ref missing);
& & & &pGeometryCollection.AddGeometry(pBaseFeature.Shape, ref missing, refmissing);
& & & & ITopologicalOperator pTopologicalOperatory =new PolygonClass();
pTopologicalOperatory.ConstructUnion(pGeometryCollectionas IEnumGeometry);
IDataset dataset = pFeatureClassas ID
IWorkspaceEdit workspaceEdit =dataset.Workspace as IWorkspaceE
workspaceEdit.EnableUndoRedo();
workspaceEdit.StartEditOperation();
pBaseFeature.Shape =pTopologicalOperatory as IG
pBaseFeature.Store();
//DeleteOtherSelectedFeatures(selectedFeatures);
workspaceEdit.StopEditOperation();
&pFeature = pFeatureCursor.NextFeature();
& m_MxDocument.ActiveView.Refresh(); & & & & &
& & & &this.Close();
g) & & & 编译目录
编译完成后,文件如下:
&&&h) & & & 添加到ArcMap
打开ArcMap,打开扩展管理,选择Commands选项卡,找到Add-in Controls,这时候会发现编写的工具会出现在这一组中。
& & & & 测试
点击按钮后即可使用该工具。
作者:张鑫 邮箱:zhangxin@
HiGIS技术交流QQ群:
转载请注明出处:/Tech/tech/tId/79#
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:328242次
积分:4357
积分:4357
排名:第4723名
原创:118篇
转载:58篇
评论:72条
(3)(1)(61)(1)(2)(1)(1)(1)(4)(3)(3)(5)(3)(6)(19)(11)(33)(17)(1)}

我要回帖

更多关于 arcgis编辑工具条 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信