ArcgisAdd-In开发入门实例
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文件,是一个配置文件,里面包含了项目的相关配置,是自动生成的,内容如下:
01.<esri.configuration xmlns="http://schemas.esri.com/Desktop/AddIns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">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.png07.<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 ArcMapAddinTest08.{09.public class AddShp : ESRI.ArcGIS.Desktop.AddIns.Button10.{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 host35.//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开发入门实例的更多相关文章
- IOS开发入门实例
关于如何创建第一个 iOS 应用 本篇“第一个 iOS 应用”教程将向你介绍 iOS 应用开发中的“三个T”: Tools(工具)如何利用 Xcode 创建和管理工程. Technologies(技术 ...
- 【转】Android NDK开发入门实例
写这个,目的就是记录一下我自己的NDK是怎么入门的.便于以后查看,而不会忘了又用搜索引擎一顿乱搜.然后希望能够帮助刚学的人入门. 先转一段别人说的话:“NDK全称:Native Development ...
- Portlet开发入门实例
1原生Portlet开发 这是最简单.最本质的开发方式,直接基于Portlet规范定义的接口开发Portlet.优点是贴近底层比较灵活, 缺点当然就是所有事情都要自己去做.就好比不用SpringMVC ...
- java web 开发入门实例
学习是个技巧活,关键是要找到重点的地方,新手在这方面的坑尤其多.看别人的教程一步一步的跟着做,隔几步就遇到一个新知识点,忍不住就百度往深处了解,一晃半天就过去了. 有的知识点要深入学习的,有的是了解下 ...
- Android NDK开发入门实例
AndroidNDK是能使Android应用开发者把从c/c++编译而来的本地代码嵌入到应用包中的一系列工具的组合. 注意: AndroidNDK只能用于Android1.5及以上版本中. I. An ...
- Arcgis Add-In开发入门实例
作为一个本科侧重于应用,工作之后却做了开发的程序员来说,做GIS,开发应该是一门必修课,只是,苦于各种原因吧,做GIS应用的人会开发的很少,做GIS开发的大部分都是计算机出身,痛心疾首啊-- 不好意思 ...
- Eclipse_luna_J2EE_For_JS+tomcat8.0环境搭建、配置、开发入门
一.所有需要的软件.插件等下载地址 J2SE的官方下载路径:http://www.oracle.com/technetwork/java/javase/downloads/index.html Ecl ...
- destoon入门实例与常见问题
收集了一些destoon入门实例与常见问题,大家做个参考. 链接如下: destoon忘记后台密码怎么办?destoon找回管理员密码 忘记destoon管理员后台账号密码怎么办?解决方法 desto ...
- Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例【附详细代码】
http://blog.csdn.net/xiefu5hh/article/details/51707529 Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例[附 ...
随机推荐
- js 检查是否为手机端
let isMobile = function(){ let userAgentInfo = navigator.userAgent; let Agents = new Array("And ...
- CCF关于NOIP2014复赛报名的通知
CCF关于NOIP2014复赛报名的通知 CCF NOIP2014复赛全部实行网上注册.报名.未通过网上报名的选手将不具备参赛和申诉资格. 系统注册须知: NOIP2014复赛注册时间:2014年 ...
- IOS第18天(9,核心动画-动画组)
****动画组 // 核心动画都是假象,不能改变layer的真实属性的值// 展示的位置和实际的位置不同.实际位置永远在最开始位置 #import "HMViewController.h&q ...
- Vim配置文件备忘
"我的配置 """""""""其他"""""&qu ...
- nodejs 初入
nodejs 模块路径 1.内置模块 如果传递给require函数的是NodeJS内置模块名称,不做路径解析,直接返回内部模块的导出对象,例:require('http'). 2. nodejs 支 ...
- PHP环境下Memcache的使用方法
原文:PHP环境下Memcache的使用方法 原文地址:http://www.2cto.com/kf/201503/384967.html 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么 ...
- Java基础之扩展GUI——使用对话框创建文本元素(Sketcher 4 creating text elements)
控制台程序. 为了与Sketcher中的其他元素类型保持一致,需要为Elements菜单添加Text菜单项和工具栏按钮.还需要定义用来表示文本元素的类Element.Text. 1.修改Sketche ...
- 高级Javascript调试——console.table()
原文:http://www.mariusschulz.com/2013/11/13/advanced-javascript-debugging-with-consoletable 本文只是简单翻译,部 ...
- C++用递归方式实现在对不更改随机数组的情况下查找最大值
#include <iostream> #include <iomanip> #include <ctime> using namespace std; int M ...
- hihocoder 网易游戏2016实习生招聘在线笔试 解题报告
比赛笔试链接:http://hihocoder.com/contest/ntest2015april/problems 题目就不贴了. 1.推箱子. 思路:纯模拟. 代码(28MS): #includ ...