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.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开发入门实例的更多相关文章
- 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开发环境搭建及入门实例[附 ...
随机推荐
- Unity UGUI HUD 怪物血条实现
首先做一个血条,创建一个名为Follow3DObject的脚本添加到血条控件上. Follow3DObject.cs的代码如下: using UnityEngine; using System.Col ...
- Ubuntu Linux上安装配置Mysql
一.安装: 三种安装方式: 1. 从网上安装 sudo apt-get install mysql-server.装完已经自动配置好环境变量,可以直接使用mysql的命令. 注:建议将/etc/apt ...
- Javascript中的new
直接上代码 function test () { } document.write(typeof test() + "<br />") document.write(t ...
- Raspberry PI B+ debian + wifi 网络设置
# file /etc/network/interfaces auto lo iface lo inet loopback #auto eth0 #allow-hotplug eth0 #iface ...
- Mongo使用脚本更新数据
SQL Server中我们经常要使用脚本来刷一些数据,在mongo中我们也可以使用mongo的脚本来刷mongo的数据 首先在命令窗口中链接到本地的mongo库 load("[脚本的地址]& ...
- 让ecshop用户名、手机号、email登陆方法
让ecshop用户名.手机号.email登陆方法, 仅适用于没有做过任何平台整合的ECSHOP网站 修改文件: 1.includes/modules/integrates/ecshop.php ...
- KeyValuePair
KeyValuePair用法(转)(2012-06-25 10:47:35) 转载▼ // 标签: keyvaluepair it KeyValuePair C# KeyValuePair< ...
- Extjs 中column的renderer使用方法
renderer: function(value, cellmeta, record, rowIndex, columnIndex, store) { if (record.get('productT ...
- VS2012+Win7网站发布详细步骤
VS2012+Win7网站发布详细步骤 本机环境: 本文分三个部分介绍Web项目发布的常规方法,大神级别可以略过,主要是为了方便一些初学者. 第一部分:VS2012把项目发布到文件系统. 第二部分:I ...
- DuiLib学习笔记4——布局
有了前面三篇的基础,现在可以开始布局了. 首先任何布局都必须包含在<Window></Window>标签内,跟<html></html>很像. DuiL ...