首页 技术 正文
技术 2022年11月23日
0 收藏 545 点赞 4,502 浏览 3280 个字

1、开发环境

Vs2012+Arcgis10.2+win7 64bit

2、实现代码

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

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

ArcgisAdd-In开发入门实例

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

ArcgisAdd-In开发入门实例

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

ArcgisAdd-In开发入门实例

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

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

ArcgisAdd-In开发入门实例

将项目的框架改为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.}

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

ArcgisAdd-In开发入门实例

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

ArcgisAdd-In开发入门实例

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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902