1、开发环境

Vs2012+Arcgis10.2+win7 64bit

2、实现代码

首先在VS2012中新建一个解决方案,命名AddInTest。

接着,给解决方案AddInTest新建一个项目:

点击[确定],出现如下界面,点击[Next]。

接着,设置相关信息,并点击[finish]完成。

上图中,class name是类的名称,caption是button显示的文字,category是所属的command的分类,tooltip是鼠标在上面时状态栏显示的文字,description是工具的描述。

项目建成后,文件组织如下图:

将项目的框架改为framework 4.5

Config.esriaddinx是一个XML文件,是一个配置文件,里面包含了项目的相关配置,是自动生成的,内容如下:

02.<name>ArcMapAddinTest</name>
03.<addinid>{0f7ec41b-d1e3-4391-8d67-9dea10bea621}</addinid>
04.<description>Type in a description for this Add-in.</description>
05.<version>1.0</version>
06.<img src="" style="display: none;"><img alt="加载中..." title="图片加载中..."src="http://www.it165.net/statics/images/s_nopic.gif">ImagesArcMapAddinTest.png
07.<author>Administrator</author>
08.<company></company>
09.<date>2013/12/12</date>
10.<targets>
11.<target name="Desktop" version="10.0">
12.</target></targets>
13.<addin language="CLR" library="ArcMapAddinTest.dll" namespace="ArcMapAddinTest">
14.<arcmap>
15.<commands><button caption="AddShp" category="Add-In Controls" class="AddShp" id="ArcMapAddinTest_AddShp"image="ImagesAddShp.png" message="点击浏览shp文件并添加" tip="实现添加shp文件的功能"></button></commands></arcmap></addin></esri.configuration>
01.using System;
02.using System.Collections.Generic;
03.using System.Text;
04.using System.IO;
05. 
06. 
07.namespace ArcMapAddinTest
08.{
09.public class AddShp : ESRI.ArcGIS.Desktop.AddIns.Button
10.{
11.public AddShp()
12.{
13.}
14. 
15.protected override void OnClick()
16.{
17.}
18. 
19.protected override void OnUpdate()
20.{
21.}
22.}
23.}

里面包含两个方法,onclick和onupdate方法。onclick方法是点击按钮时,我们在里面写添加shp文件的代码。

首先,添加如下引用:

1.using System.Windows.Forms;
2.using ESRI.ArcGIS.ArcMapUI;
3.using ESRI.ArcGIS.Carto;
4.using ESRI.ArcGIS.Geometry;
5.using ESRI.ArcGIS.Geodatabase;
6.using ESRI.ArcGIS.DataSourcesFile;

onclick方法里,事件的实现代码如下:

01.IMxDocument pMxd;
02.public Button1()
03.{
04.pMxd = ArcMap.Document as IMxDocument;
05.}
06. 
07.protected override void OnClick()
08.{           
09.System.Windows.Forms.OpenFileDialog openFileDialog = new System.Windows.Forms.OpenFileDialog();
10.openFileDialog.Filter = "shp(*.shp)|*.shp";
11.openFileDialog.InitialDirectory = @"D:";
12.openFileDialog.Multiselect = false;
13.DialogResult pDialogResult = openFileDialog.ShowDialog();
14.if (pDialogResult != DialogResult.OK)
15.{
16.return;
17.}
18.string pPath = openFileDialog.FileName;
19.string pFolder = System.IO.Path.GetDirectoryName(pPath);
20.string pFileName = System.IO.Path.GetFileName(pPath);
21. 
22.IWorkspaceFactory pWorkspaceFactory = new ShapefileWorkspaceFactory();
23.IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(pFolder, 0);
24.IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;
25.IFeatureClass pFC = pFeatureWorkspace.OpenFeatureClass(pFileName);
26.IFeatureLayer pFLayer = new FeatureLayerClass();
27.pFLayer.FeatureClass = pFC;
28.pFLayer.Name = pFC.AliasName;
29.ILayer pLayer = pFLayer as ILayer;
30.IMap pMap = pMxd.FocusMap;
31.pMap.AddLayer(pLayer);
32. 
33.//
34.//  TODO: Sample code showing how to access button host
35.//
36.ArcMap.Application.CurrentTool = null;
37.}

OnUpdate方法事件的代码如下:

1.protected override void OnUpdate()
2.{
3.Enabled = pMxd.FocusMap.LayerCount >= 0;
4.}

代码编写完成后,编译程序,打开编译目录,编译文件如下:

双击.esriAddIn文件,添加工具到Arcmap中。打开Arcmap,打开扩展管理,command选项卡,找到Add-In Controls,这时候你会发现你编写的工具会出现在这一组里面。

点击[close],点点试试……

ArcgisAdd-In开发入门实例的更多相关文章

  1. IOS开发入门实例

    关于如何创建第一个 iOS 应用 本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程. Technologies(技术 ...

  2. 【转】Android NDK开发入门实例

    写这个,目的就是记录一下我自己的NDK是怎么入门的.便于以后查看,而不会忘了又用搜索引擎一顿乱搜.然后希望能够帮助刚学的人入门. 先转一段别人说的话:“NDK全称:Native Development ...

  3. Portlet开发入门实例

    1原生Portlet开发 这是最简单.最本质的开发方式,直接基于Portlet规范定义的接口开发Portlet.优点是贴近底层比较灵活, 缺点当然就是所有事情都要自己去做.就好比不用SpringMVC ...

  4. java web 开发入门实例

    学习是个技巧活,关键是要找到重点的地方,新手在这方面的坑尤其多.看别人的教程一步一步的跟着做,隔几步就遇到一个新知识点,忍不住就百度往深处了解,一晃半天就过去了. 有的知识点要深入学习的,有的是了解下 ...

  5. Android NDK开发入门实例

    AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. An ...

  6. Arcgis Add-In开发入门实例

    作为一个本科侧重于应用,工作之后却做了开发的程序员来说,做GIS,开发应该是一门必修课,只是,苦于各种原因吧,做GIS应用的人会开发的很少,做GIS开发的大部分都是计算机出身,痛心疾首啊-- 不好意思 ...

  7. Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门

    一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...

  8. destoon入门实例与常见问题

    收集了一些destoon入门实例与常见问题,大家做个参考. 链接如下: destoon忘记后台密码怎么办?destoon找回管理员密码 忘记destoon管理员后台账号密码怎么办?解决方法 desto ...

  9. Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】

    http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...

随机推荐

  1. js 闭包的简单理解

    let a = function(){ var i=0; let b = function(){ i++; alert(i); } return b; } let c = a(); c(); 这段代码 ...

  2. php课程---随机数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 代理模式 & Java原生动态代理技术 & CGLib动态代理技术

    第一部分.代理模式  代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常 ...

  4. C# 计时器

    一.Stopwatch 主要用于测试代码段使用了多少时间 使用方法: Stopwatch sw=new Stopwatch(); sw.Start(); ... sw.Stop(); Console. ...

  5. 通过php获取用户微信openid

    // 基于CI框架 // 访问开始页面 public function url() { // wxAction/oauth2 微信回调地址:微信传入code值,通过该code在wxAction/oau ...

  6. ListView简单使用

    先上效果: 主要实现了Listview的绑定和点击事件.项目资源结构如下: 先创建一个动物类,用来装载数据: Animal类如下: package com.example.simplelistview ...

  7. TypedValue.applyDimension 中dp和sp之间转化的真相

    转载自http://www.cnblogs.com/xilinch/p/4444833.html 最近在看了许多关于dp-px,px-dp,sp-px,px-sp之间转化的博文,过去我比较常用的方式是 ...

  8. T-sql创建表,插入数据

    SET NOCOUNT ON; USE hibernateSqlServer GO IF OBJECT_ID('Orders') IS NOT NULL DROP TABLE Orders; GO I ...

  9. JAVASE02-Unit01: API文档 、 字符串基本操作

    API文档 . 字符串基本操作 文档注释 package day01; /** * 文档注释只能定义在三个地方: * 类,方法,常量 * * 文档注释是功能注释,用来说明功能作用 * 在类上使用的目的 ...

  10. 如何把自己打造成技术圈的papi酱

    最近半年,一个叫papi酱的平胸女子连续在微博.朋友圈.创业圈刷屏,当之无愧成了中文互联网的第一大网红.呃,你以为我会巴拉巴拉说一堆网工创业的事?NO,今天想借papi酱的话题跟大家一起聊聊程序员如何 ...