ArcGIS Engine组件式开发设计报告
基于Arc GIS Engine 的GIS 开发的系统设计与实现

0 引言目前,地理信息系统已广泛地应用于众多领域,为各个相关行业提供了高效的空间信息处理能力和强大的决策支持服务。
为满足需求,GIS 开发人员需要具有构建领域专用且易于使用的应用软件的能力,软件需将广泛应用的GIS 技术与友好用户的经验结合起来。
这些软件如果从头开始构建,将是一项繁冗的开发工作,会很耗费时间,并且成本不菲。
现阶段,组件技术已经广泛的被引人到GIS 软件的设计与开发中,使得高效便捷的开发应用型地理信息系统成为现实。
国内外著名的GIS 厂商都相继推出了他们的Gls 组件,其中以ESRI 公司的组件产品Arcobjects 最为著名。
ArcGIS Engine 是一组打包的核心Arcobjects 组件,相比ArcobjectS 降低了开发难度,也大大提高了GIS 应用程序的开发效率。
因此,本文主要以ArcGIs Engin 。
为研究对象,剖析其系统开发方法,并作出最终的开发实例。
1 ArcGIS Engine 开发简介ArcGIS 是一组集成家庭式的GIS 软件产品,可在单项工程、工作组以及企业级项目中用于发布完善的、可升级的GIS 系统。
它是基于一个可共享的GIS组件一Arc ohjects 的公用库来构建的。
Arcobjects 是基于Microsoft COM 技术所构建的一系列COM 组件产品,不是为最终用户而是专门为开发人员提供的二次开发软件,通过Arcobjects ,用户可以非常方便地开发出功能强大的GIS应用系统。
但它不是一个独立的应用产品,不能脱离ArcGIS 平台,只有在购买ArcGIS 产品后,才能利用其提供的组件对象进行应用开发。
ArcGIs Engine是一组完备的并且打包的嵌人式GIS 组件库和工具库,开发人员可用来创建新的或扩展已有的桌面应用程序。
使用ArcGIS Engine ,开发人员可以将GIS 功能嵌入到已有的应用软件中,或嵌人到商业生产应用软件中,还可以创建集中式自定义应用软件,并将其发送给机构内的多个用户。
ArcGIS Engine实验报告2

徐州师范大学测绘学院实验报告实验名称: 菜单的添加及其实现课程: ArcGIS Engine班级:姓名:学号: ********试验日期: 2011.10.18一、实验目的1.能够掌握应用程序菜单项添加的方法与步骤。
2.学会添加一些程序代码来实现菜单相关功能的实现。
3.学会程序的编译调试。
二、实验内容三、基于桌面GIS应用程序框架, 通过相应的设置和添加一些程序代码来实现菜单的添加, 并能够实现菜单的相应功能。
四、实验操作1.添加菜单在设计视图中, 单击菜单栏, 会出现“请在此处键入”的提示, 单击提示就可以键入菜单名称, 如“文件”, 再单击“文件”, 即可输入其下拉子菜单, 如下所示:同上操作, 同时添加新建(New )、打开(Open )、添加数据(AddData )、保存(Save )、另存为(SaveAs )、退出(Exit )这些菜单。
可以在属性面板中的Text 属性中, 把菜单名设置为中英文形式, 如“打开O pen ”, 带下划线的O 表示此项菜单的快捷键是字母O , 设置方法是在相应字母前加上“& ”字符, 如“打开&Open ”。
但这种快捷键只在打开此下拉菜单时才有效, 即当你单击“文件”菜单弹出下拉菜单时, 按下字母O 就可以定位到“打开”菜单。
还有一种在程序运行时都有效的全局快捷键, 可以在属性面板中的“ShortCutKeys ”中设置。
还可以在属性面板中的Image 属性中设置菜单图标。
单击Image 那一行右边的按钮, 弹出如下菜单。
选择“项目资源文件”, 再单击导入就可以选择图标了。
最终效果如下所示。
2.实现相关菜单首先定义指针(写在public partial class 3sdnMap 下面即可):private ESRI.ArcGIS.Controls.IMapControl3 m_mapControl = null;private ESRI.ArcGIS.Controls.IPageLayoutControl2 m_pageLayoutControl = null;private IMapDocument pMapDocument;若以上指针无效, 请添加以下引用:using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.SystemUI;在设计视图中的属性面板中, 选择Form1 , 即主窗体, 单击事件按钮(闪电形状的那个按钮), 打到“Load ”事件并双击, 添加此事件。
10-2 Engine控件开发 (1)

类似于ArcGIS中的版面视图 封装了PageLayout组件类。 提供了如下辅助功能:
管理该控件的外观、显示以及属性页; 添加、查找组件中的元素( elements ); 加载地图文档; 从其它应用程序中拖拽数据到该控件; 打印。
接口
打开MXD文件
元素 (element) 操作
MapControl
属性页:零编程
右键上下 文菜单
主要接口
IMapControlDefault IMapControl2 IMapControl3 IMapControl4 IMapControlEvents2
MapControl
IMapControl2 : IDispatch IMapControl3 : IMapControl2 IMapControl4 : IMapControl3 IMapControlEvents 2 : IDispatch
显示所有图层及其符号 控制图层的可见性 “伙伴控件” MapControl、PageLayoutControl、 ReaderControl、SceneControl、 GlobeControl ITOCBuddy IActiveView 设置“伙伴控件” TOC属性页 SetBuddyControl
public void AddElement ( IElement pElement, object Geometry, object Symbology, object Name, int ZOrder );
MapFrames MapSurroundFrames GraphicElements
axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, element, Type.Missing); //Refresh an element axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, Type.Missing, envelope); //Refresh an envelope
组件式GIS-实验报告1 - 2013版

组件式GIS实验报告册学年:2013 -2014__ 学期:第二学期专业:地理系新系统班级:地信112学号:110716223姓名:师明圣指导教师:尹涛山东交通学院土木工程系二零一三年实验报告1 GIS基本功能设计地点:土木楼时间: 2013-04-18 节次: 1一、实验目的1.安装配置组件式GIS开发环境2.设计GIS基本功能二、实验内容1.实验01 SuperMap Objects 安装,开发环境VS2010 安装2.实验02地图浏览功能设计3.实验03量算设计4.实验04基本查询设计5.实验05空间查询设计三、实验结果1.实验01 SuperMap Objects 安装,开发环境VS2010 安装结果: 在VS2010 C#开发环境下建立的第一个项目,在设计窗体上添加SuperMap Objects核心控件后,整个设计环境的截图。
截图:2.实验02地图浏览功能设计设计的地图浏览功能及其代码:private void Form1_Load(object sender, EventArgs e){axSuperMap1.Connect(axSuperWorkspace1.CtlHandle);String sp;sp = @"D:\supermap\Samples\World\World.smw";bool a, b;a = axSuperWorkspace1.Open(sp, "");b = axSuperMap1.OpenMap("世界”);if (!a){MessageBox.Show("打开工作空间失败”);}if(!b)MessageBox.Show("打开地图失败”);}系统运行截图:3.实验03量算设计坐标、距离、面积、方位角等量算功能代码:private void button1_Click(object sender, EventArgs e){axSuperMap1.Action = seAction.scaZoomIn;}private void button2_Click(object sender, EventArgs e) {axSuperMap1.Action = seAction.scaZoomOut;}private void button3_Click(object sender, EventArgs e) {axSuperMap1.Action = seAction.scaPan;}private void button4_Click(object sender, EventArgs e) {axSuperMap1.ViewEntire();}private void button5_Click(object sender, EventArgs e) {axSuperMap1.Action = seAction.scaZoomFree;}面积量算截图:4.实验04基本查询设计图查属性代码:private void button6_Click(object sender, EventArgs e) {axSuperMap1.Action = seAction.scaSelect;}private void axSuperMap1_GeometrySelected(object sender, AxSuperMapLib._DSuperMapEvents_GeometrySelectedEvent e){soSelection objs;soRecordset objr;objs = axSuperMap1.selection;objr = objs.ToRecordset(false);objr.MoveFirst();String str;str = objr.GetFieldValue("Country").ToString();MessageBox.Show(str);}属性查图代码:private void button7_Click(object sender, EventArgs e){string str;soDataset objt;soDatasetVector objDtv;soRecordset obj;Double dRatio;dRatio = 2;objt = this.axSuperWorkspace1.Datasources["World"].Datasets["Countries" ];objDtv = (SuperMapLib.soDatasetVector)objt;str = "country like '*" + this.textBox2.Text + "*'"; obj = objDtv.Query(str, true, null, "");this.axSuperMap1.selection.FromRecordset(obj);this.axSuperMap1.EnsureVisibleRecordset(obj,dRatio);this.axSuperMap1.Refresh();}图查属性截图:属性查图截图:5.实验05空间查询设计空间查询算子:ExtentOverlap,LineCross,Containing,ContainedBy ,Overlap, Disjoint ,Touch,Identical,AreaIntersect,CentroidInPolygon ,CommonPoi nt,CommonLine,ContainedByNoEdgeTouch ,ContainingNoEdgeTouch,C ontainOrOverlap,PointInPolygon,CommonLineOrOverlap,CommonPoint OrLineCross,AreaIntersectNoEdgeTouch,空间查询功能代码:private void axSuperMap1_Tracked(object sender, EventArgs e){soGeometry objSearchGeo = axSuperMap1.TrackedGeometry;soDatasetVector objDtv;if (objSearchGeo == null){MessageBox.Show("未获得用搜索的对象");return;}soStyle objStyle = new soStyleClass();objStyle.PenColor =(uint)ColorTranslator.ToOle(Color.Red);axSuperMap1.TrackingLayer.AddEvent(objSearchGeo, objStyle, "");objDtv = (SuperMapLib.soDatasetVector)axSuperWorkspace1.Datasources["Worl d"].Datasets["Countries"];soRecordset objSearchRd;objSearchRd = objDtv.QueryEx(objSearchGeo, seSpatialQueryMode.scsLineCross, "");if (objSearchRd.RecordCount == 0){MessageBox.Show("没有找到条件");return;}axSuperMap1.selection.FromRecordset(objSearchRd);this.axSuperGridView1.Connect(objSearchRd);axSuperGridView1.Refresh();axSuperMap1.TrackingLayer.Refresh();axSuperMap1.Refresh();}}空间查询运行截图:五、学了如果地图或空间打开失败时的判断方法以及提示;如图所示:1,有事打开时,不显示地图,可能打开了supermapdesk,先关掉他实验十一 SuperGridView 控件2,为变量使用别名:3,数据源如果是字母,要注意大小写;。
arcengine实习报告

arcengine,实习报告篇一:GIS开发实习报告学号1221030205实习报告GIS程序设计实习起止日期: XX 年 7 月13 日至 XX年 7 月 19 日学班成生姓名级绩吴馁 12级地信2 班指导教师(签字)地质与测绘学院XX年 7 月 20 日GIS程序设计实习一、实习目的通过GIS程序设计实习,使学生了解需求分析、项目管理方案设计、系统总体设计以及系统详细设计、系统实施、运行和维护等阶段要完成的具体工作;掌握在C#和ArcEngine环境下构建应用型地理信息系统的方法。
二、实习内容熟悉开发环境:Visual Studio XX; C#; Arc Engine功能需求分析基于组件技术开发应用型地理信息系统组件式技术已成为当今软件技术的潮流之一。
组件式GIS软件的基本思想是把GIS各大功能模块划分为几个控件。
各个GIS控件之间,以及GIS控件与其他非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用。
重点完成的工作包括:1)建立ArcGIS Engine 应用程序框架;2)实现对矢量数据(Shape File格式)的访问;3)实现采用简单、唯一值、分类等多种方式对面状矢量数据进行渲染(Render)。
三、实习步骤:实习一:初识ArcGIS Engine 开发环境1、新建一个Windows窗体应用程序2、在新建窗体中添加控件在工具箱中选择添加toolbarcontrol,TOCControl,MapControl控件在解决方案资源管理器中双击在主函数中添加();使得文件可以加载到MapControl中。
右击toolbarcontrol选择属性,如图选择Items选项,添加如图控件右击MapControl属性,在General的map document中添加要加载的地图文件通过以上步骤添加的控件还只是单独存在,而我们的程序需要各控件间协同工作,因此要进行控件绑定。
ArcEngine程序设计实验报告

ArcEngine程序设计实验报告基于与ArcEngine开发的地理信息系统ArcEngine程序设计实验报告学号:200725809 姓名:阙泽胜专业方向:GIS设计与开发一、实验要求利用ArcEngine组件,结合VB或.NET开发环境,设计并实现一个小型GIS系统。
1)使用控件要求:MapControl,ToolBarControl,TocControl等2)系统的功能模块1. 文件:打开、保存、退出2. 插入:文本、点、线、面、CAD、表、指北针、图例、图片3. 常用工具:选择、取消选择、放大、移图4. 专题制图:单值渲染、分级渲染、图表渲染5. 视图方式:地图视图、页面视图、场景视图、Global视图、鹰眼视图(导航图)其他功能:编辑表,查询等3)参考数据:WorldData文件中的World.mxd、dj-lu.dwg图、如琴湖.jpg和myDB. mdb。
二、实验步骤及结果1.搭建系统框架,实现基本功能系统主界面采用如下架构,上面部分为菜单条和工具条,左面部分为图层管理,中间部分为MapControl控件,右边上面为鹰眼导航图,下边为选择查询功能见图2-11基于与ArcEngine开发的地理信息系统图2-12.关键功能实现(1) 加载CAD图CAD文件的加载有两种形式:一是要素图层,即以矢量数据的方式加载,二是栅格图层,即以栅格数据方式加载,以作背景图层使用。
如下图2-2所示:2基于与ArcEngine开发的地理信息系统实现思路:1) 窗体Load事件中加载:AxMapControl1复制到AxMapControl2。
yerCount ,用AxMapControl2.Map.AddLayer(yer(i))实现图层复制.Private Sub AxMapControl1_OnMapReplaced(ByVal sender As Object, ByVal eAs ESRI.ArcGIS.Controls.IMapControlEvents2_OnMapReplacedEvent) HandlesAxMapControl1.OnMapReplacedDim pmap As IMappmap = AxMapControl1.MapDim i As IntegerFor i = yerCount - 1 To i = 0 Step -1AxMapControl3.Map.AddLayer(yer(i))NextokBtn.SetBuddyControl(AxMapControl1)AxMapControl1.Refresh()AxMapControl3.Refresh()End Sub2)AxMapControl1_OnExtentUpdated事件,即当:1),定义设置矩形的边线颜色。
地理信息系统(GIS)软件工程实习报告—Arc Engine 二次开发 地图显示 Java实现

目录一、内容及要求说明 (1)1.1 内容介绍 (1)1.2 要求说明 (1)二、环境配置 (1)2.1 Arc Objects SDK for Java Platform配置 (1)2.2 Java平台配置及Arc Objects插件安装 (2)三、基于Arc Objects的Java语言二次开发 (4)3.1 系统框架设计 (4)3.2 系统功能设计 (5)3.3 系统功能实现 (6)四、开发总结 (11)一、内容及要求说明1.1 内容介绍本课程实习要求主要是熟悉基于ArcGIS的AE或是AO二次开发过程,了解ArcGIS二次开发体系。
1.2 要求说明本课程二次开发主要实现ArcGIS数据格式地图显示、缩放、平移等基础功能;另外要求实现根据数据的省份字段进行地图复杂查询,并高亮且居中显示查询结果;开发语言不限,可使用C#、Java及VB等;ArcGIS SDK采用AE或AO都可;二、环境配置2.1 Arc Objects SDK for Java Platform配置本人采用基于Arc Objects的Java语言的开发模式,所以为方便开发,需要配置Arc Objects SDK for Java Platform的开发环境。
本人采用【arcgis.desktop完全中文版】.ESRI.ArcGIS.10.CS.iso安装软件,并采用arcGIS10.0kegen注册机进行破解。
(1)ArcGIS许可管理器安装本人采用虚拟光驱Deamon Tools加载ISO镜像文件,打开后进入初始安装选择界面,如图1所示。
第一步安装ArcGIS许可服务器打开后进入初始安装选择界面,选择安装ArcGIS许可管理器,直接点击根据提示进行安装。
图1. 初始安装选择界面第二步进行破解。
首先打开“注册机”,如图2所示,功能选择arc/info,版本不用说:10.0;然后点击右下角的所有,把产生的注册信息全部复制到:安装ArcGIS许可管理器下的目录\License10.0\bin下的service.txt中。
基于ArcGIS Engine的GIS开发

ArcGIS Engine开发包的组成 开发包的组成
工具条和工具
• 提供了于地图和地理信息交互的工具,如 平移、缩放、点击查询和与地图交互的各 种选择工具。 • 在应用界面上展现为工具条。简化了开发 过程。
Outline
• • • • ArcGIS Engine的概述 Engine的概述 ArcGIS Engine的结构 Engine的结构 开发控件 许可和部署
= 核心功能
• esriLicenseProductCodeEngineGeoDB = 核心功能+geodatabase update
部 署
• 单独安装、配置ArcGIS Engine Runtime • 在应用程序安装中部署好ArcGIS Engine Runtime
谢谢
包含两个部分
• ArcGIS Engine Developer Kit • ArcGIS Engine Runtime
ArcGIS Engine的功能 的功能
• 读取所有支持的ESRI数据格式包括 读取所有支持的ESRI数据格式包括 geodatabase • 地图制作(创建和编辑MXD) 地图制作(创建和编辑MXD) • ArcGIS 级别的绘图 • 查询和分析 • 地理编码 • 简单编辑(shp 和pGDB) 简单编辑(shp
基于ArcGIS Engine的GIS开发 基于 的 开发
赵彦博
Topics
• • • • ArcGIS Engine的概述 Engine的概述 ArcGIS Engine的结构 Engine的结构 控件 许可和部署
ArcGIS Engine
• 是ArcGIS 9 中的新产品
◦ 在ArcGIS系列产品中 ArcGIS系列产品中
.NET环境下ArcGIS Engine的开发技术研究的开题报告

.NET环境下ArcGIS Engine的开发技术研究的开题报告开题报告论题:.NET环境下ArcGIS Engine的开发技术研究研究背景与意义:ArcGIS Engine是一款用于构建桌面GIS应用程序的开发环境。
它基于Esri公司的主要GIS技术,具有强大的数据管理与处理能力,深受GIS开发人员的喜爱。
在.NET环境下使用ArcGIS Engine开发应用程序,可以利用.NET的强大编程技术和库与ArcGIS Engine技术相结合,实现更加灵活和高效的开发。
因此,针对.NET环境下ArcGIS Engine的开发技术进行研究与探讨,对于加深对ArcGIS Engine的理解和掌握,提高应用开发的效率和质量,具有重要意义。
研究内容:本次研究将重点围绕.NET环境下ArcGIS Engine的开发技术展开。
研究内容包括:1. ArcGIS Engine的基本原理、体系结构和编程模型介绍。
2. 利用.NET应用程序框架开发ArcGIS Engine程序的方法和技巧,包括使用C#或编写代码、利用Visual Studio IDE进行界面设计等。
3. 在.NET环境下使用ArcGIS Engine进行空间数据管理和分析的技术,包括基本的数据操作、空间分析、地图制图等操作。
4. 在.NET环境下使用ArcGIS Engine进行三维数据处理和可视化技术的研究,包括三维建模、呈现、导航等方面的技术。
5. 对.NET环境下ArcGIS Engine的开发与在其他编程环境下的开发进行比较分析,探讨各自的优缺点。
研究方法:本次研究将采用以下方法:1. 文献研究:对相关ArcGIS Engine开发文献进行分析,查阅ArcGIS Engine官方文档,深入了解ArcGIS Engine的基本原理和各种技术的实现方法。
2. 实验研究:利用实际开发案例进行实验研究,实现各种应用程序的开发,深入掌握ArcGIS Engine的各种开发技术的优缺点和实现方法。
安徽理工大学,ArcEngine实习报告(才哥)

实验一、ArcEngine 控件及核心类库的认识及Mapcontrol 控件的使用和地图的显示与地图缩放以及TOCcontrol、toolbarcontrol 控件使用实验二、C#+ArcEngine 程序设计入门:地图浏览与图层控制实验三、C#+ArcEngine 程序设计入门:地图绘图实验四、C#+ArcEngine 程序设计入门:地图查询与地图要素选择实验报告一一、试验目的ArcEngine(简称AE)是ArcGIS9 新的开发产品,是从核心的ArcObjects(AO)组件构建。
ArcEngine 是开发人员用于建立自定义应用程序的GIS 组件的一个完整类库。
可以创建独立应用或者集成到第三方系统。
因其具有强大的功能和良好的封装性,备受GIS集成和开发人员的青睐。
1、认识ArcEngine控件及核心类库;2、掌握Mapcontrol 、TOCcontrol、Toolbarcontrol控件的使用及地图显示、缩放等功能二、实验内容1、ArcEngine的认识;2、常用类库;3、Mapcontrol控件的使用及地图显示、缩放;4、TOCcontrol的认识;5、Toolbarcontrol认识三、实验步骤1、运行vs 2010,启动vs2010 c#集成开发环境。
2、新建Engine 项目,命名AEtest,3、程序框架:四、实验结果1、Ctrl +F5 运行程序,如下图:2、加载地图五、认识总结1、了解了ArcEngine的类库,2、掌握了Mapcontrol 、TOCcontrol、Toolbarcontrol控件的使用及地图显示、缩放等实验报告二一、试验目的编写代码与Mapcontrol控件交互实现电子地图加载、缩放和浏览功能。
实现方式有两种:1.使用ESRI 提供的封装好的现成组件类,编写简单的代码即可;2.自己写代码实现,需要理解地图浏览的编程思路。
通过两种实现方式,进一步了解Map 控件的使用方法和组件式GIS集成与开发的思路和流程。
实验一 基于ArcEngine桌面GIS应用程序框架设计(20150322)

实验一、基于ArcEngine桌面GIS应用程序框架设计一、目的与要求:1)熟悉用Visual Studio2005开发环境的基本功能;2)熟悉用C#进行组件式开发的基本原理和方法(事件驱动机制等);3)熟悉用ArcEngine中三个框架组件:MapControl、ToolbarControl、TOCControl构成GIS应用程序的基本过程;4)熟悉通过菜单添加各类GIS功能的方法;5)熟悉通过状态栏显示图形信息的基本方法。
二、实验环境:1)开发环境:Visual Studio20052)开发语言:C#3)实验数据:两个以十进制表示经纬度数值的全国政区人口数据shapefile。
●地级城市驻地.shp●国界线.shp●省级行政区.Shp●……三、内容与步骤1:桌面GIS应用程序框架的建立本讲主要是使用MapControl、ToolbarControl、TOCControl三个控件建立起基本的桌面GIS应用程序框架。
最终成果预览如下:1)新建项目启动VS2005,选择“文件|新建|项目”,在项目类型中选择Visual C#=>ArcGIS=>Engine 分类目录,再选择MapControl Application模板。
如下图所示,指定项目存放位置(如:C:\用户目录),输入项目名称(默认MapControlApplicaton1);点击确定,生成应用程序框架,主界面如下图所示:在主窗体上(MainForm)上排放MapControl、ToolbarControl、TOCControl三个组件,另加一个LicenseControl控件(授权作用,不可见)。
2)控件绑定分别右击ToolbarControl、TOCControl控件,查看Buddy下拉框发现已将Buddy属性设置为axMapControl1(模板自动设置),如下图所示。
这样,工具条和图层控件就与地图控件关联了。
3、添加工具ArcGIS Engine已有100多个命令共使用,模板程序已在ToolbarControl上放置了一些常用工具(地图浏览,添加数据等),如需要添加其他工具:可右击ToolbarControl,选择“属性|Items”,点击Add,选择Commands选项卡中的命令类别(如:Generic),然后双击右侧列表中的某个命令(如:Open),即可将相应工具添加到工具条。
ArcEngine_开发文档(ArcGIS AO开发)

ArcEngine 开发1.基础篇1.1.开发环境1.1.1.如何在ArcMap的VBA环境中编程ArcMap是ArcGIS家族的成员之一,它内置了一种集成编程环境―VBA (Visaul Basic for Apllications)。
通过VBA编程,用户不但可以扩展ArcMap 的菜单、工具条等,而且可以完成大多数用户的特定需求。
ArcMap中VBA编程的方法有两种,一种是写VBA宏,另一种是创建UIControl 并在其事件中写入实现用户需求的代码。
下面列出两种方法的一般步骤。
方法一:写VBA宏(直接在VBA编辑器中编辑函数和过程)1、如图1,单击菜单栏中的<Tools>命令,选择<Macros>的<Visual Basic Editor>项, 直接启动ArcMap的VBA编辑器;或者选择<Macros>的<Macros>项,进入如图2所示Macro对话框,在“Macro Name”文本框中输入要创建的宏的名称,并点<Create>按钮,启动VBA编辑器。
图1 启动Macro对话框/启动VBA编辑器图2 Macro对话框2、在图3所示的窗口中,用户可以根据实际选择在Normal节点或者Project 节点的ThisDocument、Forms、Modules中编写宏(函数或过程),Normal节点下所写的宏系统自动保存,除非用户删除,否则它将始终存在并在任何工程中都有效;而在Project节点下所写得宏随工程保存(如不保存工程,则宏也将不被保存),并只在工程中有效。
图3 VBA编辑器(VBE)3、运行VBA宏在VBA编辑器中写好VBA代码后,有两种方式运行:第一,点击VBA编辑器工具条中的(运行)按钮,可立即运行写好的代码;第二,退出VBA编辑器,重新启动Macro对话框,如图2,选择要运行的VBA宏名称,点击<Run>按钮即可运行相应的VBA宏。
基于ArcGIS Engine的插件式GIS研究与实践的开题报告

基于ArcGIS Engine的插件式GIS研究与实践的开题报告一、课题背景随着GIS技术的快速发展,应用范围越来越广泛,对GIS软件的要求也越来越高。
ArcGIS Engine作为一个基于COM(Component Object Model)的GIS引擎,提供了一种将GIS功能嵌入到自定义应用程序中的方法,可以实现灵活、高效、个性化的GIS应用开发。
插件式GIS系统是指以插件为基础来实现的一个模块化GIS系统,使用插件使得系统的拓展和二次开发变得更加便捷、高效。
本课题旨在通过对ArcGIS Engine的学习,深入研究插件式GIS的设计与实现,搭建一个能够满足用户需求的、简单易用的GIS系统。
二、课题内容1. ArcGIS Engine技术研究分析ArcGIS Engine的架构、特性,对ArcGIS Engine中的各个模块的功能进行深入的研究和分析。
2. 插件式GIS系统的设计与实现基于ArcGIS Engine,设计并实现一个插件式GIS系统,包括地图显示、属性查询、符号化等基本功能,并采用插件机制来支持系统功能的动态拓展。
3. 系统测试和评估通过一系列的测试和评估来验证系统的性能和可靠性,测试包括系统的基本功能测试、插件拓展测试以及性能测试等。
4. 系统完善与优化根据测试结果,及时优化系统,改进系统功能,提高系统的性能和用户体验。
三、研究目标本课题的主要研究目标如下:1. 深入了解ArcGIS Engine的技术特点,掌握其基本原理和开发流程。
2. 研究插件式GIS系统的设计实现方法,实现一个具有拓展性的GIS系统。
3. 对开发的GIS系统进行测试和优化,提高系统的性能、可靠性和用户体验。
四、预期成果1. 设计并实现一个基于ArcGIS Engine的插件式GIS系统。
2. 发表本课题相关的学术论文和研究报告。
3. 建立一个地理信息系统开发的基础平台,为后续的GIS系统研究和开发提供基础支持。
ArcGIS Engine编程实验报告

一、 Arcmap 按钮插件程序 LoadTextFileToLayerAddin:
1. 首 先 是 声 明 一 个 IMap 接 口 的 对 象 map, 然 后 在 构 造 函 数 LoadTextToLayer()中将当前地图文档中的当前地图对象赋给 map:
IMap map = null; public LoadTextToLayer() { IMxDocument mxDoc = ArcMap.Application.Document as IMxDocument; map = mxDoc.FocusMap; }
for (j = 0; j < 72; j++) {
double radian = angel * AngeltoRadian; for (int i = 0; i < ptCount; i++) {
IPoint pt = pointCollection.get_Point(i); double x1 = pt.X; double y1 = pt.Y;
2.实现 MBR 的部分代码:
map.SelectFeature(pFeatureLayer, pFeature); if (pFeatureClass.ShapeType == esriGeometryType.esriGeometryPolygon) { //寻找最小外接矩形MBR double AngeltoRadian = Math.PI / 180.0; double angel = 0.0; int j; int index = 0; double[] Area = new double[72];//每次旋转5度,共转72次 ArrayList arrayX = new ArrayList();//使用动态数组 ArrayList arrayY = new ArrayList(); //获取已选中的多边形对象 IGeometry geometry = pFeature.Shape; ; IPolygon polygon = geometry as IPolygon; IPointCollection pointCollection = polygon as IPointCollection; int ptCount = pointCollection.PointCount;//代表选中的多边形有几个点
Arcgis Engine二次开发实验报告

GIS二次开发实验报告学号:*************名:***班级:1423101专业:地理信息系统任课老师:李小龙二零一七年六月十二日目录1实验一:AOI书签开发 (1)1.1实验目的 (1)1.2实验内容 (1)1.3实验步骤与结果 (1)2.1实验目的 (5)2.2实验内容 (5)2.3实验步骤与结果 (5)2实验三:地图渲染 (9)3.1实验目的 (9)3.2实验内容 (9)3.3实验步骤结果 (9)3实验四:空间数据处理 (16)4.1实验目的 (16)4.2实验内容 (16)4.3实验步骤与结果 (16)4实验五:GIS分析 (25)5.1实验目的 (25)5.2实验内容 (25)5.3实验步骤与结果 (25)5实验六:栅格数据处理 (33)6.1实验目的 (33)6.2实验内容 (33)6.3实验步骤与结果 (33)6实验总结 (43)1实验一:AOI书签开发1.1实验目的✧掌握AOI书签程序开发1.2实验内容✧实现AOI书签的创建✧实现AOI书签的调用1.3实验步骤与结果实验思路、关键代码(全面注释)、运行结果截图实验思路:空间书签是用户定义创建的标志某个特定地理位置的快捷方式,创建好书签后能够很方便的找到某个地理位置。
在本实验中我们需要创建的是AOI书签,即用户所关心的一个范围,通过调用该书签,用户可以马上找到书签所指范围。
实现本实验主要包括以下几个方面:1.添加控件和类库引用:添加创建书签控件、保存和调用书签控件,添加Geometry类库2.添加“创建书签”函数:创建书签,保存当前感兴趣范围,将书签名加入组合框,以便调用3.添加“书签名称设置”窗体:获取书签名,传递给主窗体4.添加两个事件响应函数:“创建书签”菜单项的点击事件,作用是打开“书签名称设置”窗体;“确认”按钮的点击事件,作用是调用创建书签函数5.实现与调用书签:添加组合框的事件响应函数,作用是当组合框中选项改变时,地图将刷新显示出书签所记录的范围。
GIS开发实践报告2

《GIS系统开发实践》报告题目:ArcGis、ArcEnginer、ArcObject知识学习与资料整理姓名:学号:20 年月日标题:ArcGis、ArcEnginer、ArcObject知识学习与资料整理作者:(单位:)一、ArcObject 的主要功能(一)ArcObjects概述ArcObjects简称AO,是ESRI公司的ArcGIS家族中应用程序ArcMap、ArcCatalog和ArcScene 的开发平台,是基于Microsoft COM技术所构建的一系列COM组件集,开人员可以在AO组件对象的基础上开发出强大的、灵活的应用系统,以适应用户的各种需求。
ArcGIS把GIS的基本功能都封装在AO的组件对象库中,这些库文件定义了一些接口,包括组件对象、方法、事件、枚举等,开发者可以通过接口实现对对象的操作机制。
例如,ArcMap和ArcCatalog是ArcGIS开发者利用高级语言调用AO的接口来实现AO基本功能的应用程序。
AO为开发者提供的是一组可编程的对象,包括可视的用户化控件。
开发人员在开发时采用VB、VC、Delphi、.Net或类似的高级开发语言,引用组件对象进行编程,创建动态链接库、ActiveX控件(OCX)或可执行文件(EXE),从而开发出符合用户要求的界面及相关功能的软件系统。
AO是基于微软组件对象模型技术(COM)而建立起来的。
通过使用COM开发语言编写一些COM组件,就可以对AO进行扩展。
用户可以像ESRI开发人员做的那样,对AO结构的任何一个部分进行扩展。
AO是一套独立于平台的软件组件,是利用C++编写的,它为GIS应用开发提供服务。
AO可以利用Mircrosoft的组件对象模型。
Com通常被认为是一些简单的定义,用于确定对象如何被实现,如何嵌入内存,这些对象与其它对象如何通讯。
ArcGIS系统是在ArcObjects软件组件基础上建立和扩展的。
ArcObjects包括一系列的可编程组件,从细粒度的对象(比如geometry对象)到粗粒度的对象(如与ArcMap文档进行交互的map对象),ArcObjects 为开发者提供了大量的全面的GIS功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ArcGIS Engine 组件式开发系统设计报告1. 系统设计目的对于本门课程进行系统的了解和加深,能将MapControl 、PageLayoutControl 、TOCControl 和ToolBarControl 控件集成起来,建立一个GIS 应用系统,实现一些简单的操作,例如数据的加载,地图的交互操作,空间查询,缓冲区分析,地图的打印输等功能。
2. 系统设计内容● 能加载几种常用格式的地图数据。
● 创建了自己的自定义命令、工具和菜单,实现鹰眼功能,拉框显示,地图漫游,地图标注,数据选择,并能绘制点、线、面。
● 调整TOCControl 控件中图层的显示顺序,并可以点击右键打开属性表。
● 可新建点、线、面图层。
● 实现了属性查图功能,并进行要素的选择,将选择的要素高亮显示出来。
● 能进行地图制图,可设置格网点、格网线,改变背景颜色,设置图例,比例尺,指北针,并进行地图的输出。
● 实现了空间分析中的缓冲区分析。
3. 主要系统模块示意图空间查询GIS 应用系统创建图层地图交互操作地图输入地图制图空间分析地图输出4.实现功能简介按照数据处理的流程,可将本系统分为七大模块:(1)地图输入模块:可加载shp、jpg、tif、bmp格式的地图数据并在主视图上同时显示多个图层。
此功能包含的类有GeoMapOp。
(2)地图交互操作模块:里面功能的定义都在类GeoMapOp中,然后在Form1窗体中进行调用。
●实现鹰眼操作:可在主视图和鹰眼地图上同步显示,主视图变化后鹰眼视图能保持一致,可通过鹰眼地图定位主视图。
●拉框显示:用户可通过鼠标拉框放大显现地图。
●地图漫游:用户可以通过鼠标将放大后的地图进行平移操作。
●地图放大:用户可通过鼠标点击实现地图的放大。
●全图显示:可用鼠标拖动地图。
●绘制点、线、面:用户可通过鼠标点击来给图上添加点、线、面。
●地图标注:用户可通过鼠标点击来添加地图标注。
●数据选择:用户可将选择的要素高亮显示出来。
(3)创建图层:此功能里的代码都没有在类里面出现,都是在窗体中定义的。
里面包含创建点图层,线图层,面图层。
●创建点图层:用户可通过鼠标点击此项创建一个点图层文件,并保存。
●创建线图层:用户可通过鼠标点击此项创建一个线图层文件,并保存。
●创建面图层:用户可通过鼠标点击此项创建一个点面层文件,并保存。
(4)地图制图:此功能的代码在类GeoMap和主窗体Form中都有出现。
●格网点设置:用户可触动鼠标显示格网点。
●格网线设置:用户可触动鼠标显示格网线。
●改变背景颜色:用户可触动鼠标改变制图区域的背景颜色。
●设置图例:用户可通过点击此项加载该地图对应的图例。
●设置比例尺:用户可通过点击此项加载比例尺。
●设置指北针:用户可通过点击此项加载指北针。
(5)空间查询:创建了一个选择属性的窗体SpaceSearch,在窗体中添加需要的按钮。
并在SpaceSearch.cs中对各个按钮进行定义。
在主窗体中对类进行调用。
(6)缓冲区分析:新建一个创建缓冲区的窗体CreatBuffer,一个元素控制类ElementsControls,一个分析类analysis,一个ARCGIS下的BseCommend类型的缓冲区输出类CmBufferToShapefile。
在工具箱中往CreatBuffer窗体中添加需要的按钮,并对各个按钮进行定义。
在窗体CreatBuffer中用到了类analysis和类ElementsControls 。
最终和主窗体连接在一起。
完成缓冲区分析。
(7)地图输出:地图输出,此处指做了地图的打印。
包含的类有printer,Paper,PageLayoutControl。
5.开发流程5.1创建一个工程命名GIS实习从工具箱中给Form窗体中添加需要的控件。
创建了多个类,进行封装。
在GeoMapOp.cs类中,主要封装了打开地理数据的方法,设置了颜色,定义了地图操作的方法,定义加载MXD文档的方法,指北针,图例,比例尺等方法。
在GeoMapComm.cs类和ClearFeaSele.cs中,主要是自定义命令的开发,对于本系统而言,主要就是两个自定义命令的设计,分别是“清除当前活动工具”,“清除当前地图选择要素”。
在地理数据加载的这个功能中,把加载数据方法AddGeoMap()封装在了GeoMapOp.cs类中,在Form1.cs中,通过实例化类对象MapData,来调用该方法实现数据的加载。
部分代码如下图所示:5.2 实现鹰眼功能主要实现了使“主视图与鹰眼视图数据保持一致,使鹰眼视图加载地图全图,在鹰眼视图中绘制红色矩形框,主视图显示范围为鹰眼视图中红色矩形框的范围,鼠标左键移动红色矩形框,右键可以重绘红色矩形框,改变它的大小,即改变主视图中的显示范围”等功能。
部分代码如下:5.3 图层控制及查看属性表调整图层显示顺序及右键打开属性表的方法在Form1中。
部分代码如下:5.4 添加自定义工具对于自定义命令、工具,本系统有两个自定义命令“清除当前活动工具”,“清除当前地图选择要素”,其分别分装在GeoMapComm.cs类与ClearFeaSele.cs 中。
5.5 地图制图下的一系列命令运行后的界面:5.6 制图功能设计系统设计地图制图这部分内容时,实现了格网点设置,格网线设置,背景颜色改变,边框及添加地图比例尺,图例,指北针,地图的打印输出等功能。
其中格网点,格网线设置,背景颜色的改变,及地图图例,指北针,比例尺的设置代码均放在类GeoMapOp中,在窗体Form1中进行调用。
5.7 空间查询系统中在空间查询下实现属性查图该功能也是通过新建一个Windows窗体SpaceSearch,然后对它进行实例化,通过Show()方法弹出进行实现,属性查图的运行界面如下:高亮显示查询的要素,如下:5.8 制图输出地图打印输出设计中,通过新建Windows窗体PrintForm1,在上面放置控件与按钮来设置打印对话框。
页面设置界面:打印预览界面打印界面:5.9 空间分析对于空间分析功能的开发,系统只是设计缓冲区分析功能。
创建建缓冲区的界面:确定后,生成缓冲区:6.总结通过对设计系统GIS实习的完成,在设计上我还存在很多不足之处。
问题主要存在不能很好地把代码分装在不同的类中,导致程序很乱。
因为这是个小程序,想要找个代码可能还好找点,要是个大程序这样的设计肯定是不行的。
由于能力不够,设计中还有很多功能不能实现,在界面的设计上也崔在菜单栏混乱,没有规则,让大家看着不舒服。
AE组件式开发及应用以前从来没有接触过,通过这学期的学习和同学们的热心帮助,我对这门课的理论知识和实际操作有了些了解,可以做一些简单的界面,虽然学的很吃力,但看到成果时候的兴奋是没有办法言语的。
最后,要感谢李老师的悉心指导和严格要求。
(1)地图输入模块:接口有IMap,IActiveView,IMapDocument,IDisplayTransformation通过实例化类来加载地图。
IRasterLayer ,IRasterWorkspace,IWorkspaceFactory,IRaster,IRasterDataset,IWorkspace,IRasterPyramid,ILayer(2)地图交互操作模块:实现鹰眼操作、拉框显示、地图漫游、地图放大、全图显示、绘制点、线、面、地图标注、数据选择。
TOCControl,ILayer,IMap,IActiveView,IBasicMap,IGeoFeatureLayer,IWorkspaceName,IDatasetName,IDataLayer,IWorkspaceFactory,IWorkspace,IFeatureWorkspace,IFeatureClass,IFeatureCursor,IFeature。
IEnvelope ,IPoint,IGraphicsContainer ,IRectangleElement,IElement,IRgbColor,ILineSymbol,IFillSymbol,IFillShapeElement 。
IGraphicsContainer,ISimpleFillSymbol,IPolygon,ILineElement,ISimpleLineSymbol,IPolyline,ISimpleMarkerSymbol,IMarkerElement。
,ITextElement。
ISelectionEnvironment,IGraphicsContainer。
(3)创建图层:用到的接口有IWorkspaceFactory,IFeatureWorkspace,IFeatureClass,IDataset,IFields,IFieldsEdit,IField,IFieldEdit,IGeometryDef,IGeometryDefEdit,ISpatialReferenceFactory2,IGeographicCoordinateSystem,ISpatialReference。
ISnapGrid,ISnapGuides,IPage,IRgbColor,IPageLayout。
(4)地图制图:PageLayoutControl,IPageLayout。
ILegend2,ILegendFormat,ITextSymbol. IGraphicsContainer,IActiveView,IFrameElement,IMapFrame,UID,IMapSurroundFrame,IMapSurround,IScaleBar,IElement,IEnvelope。
IMarkerNorthArrow,IMarkerSymbol。
(5)空间查询:创建了一个选择属性的窗体SpaceSearch,在窗体中添加需要的按钮。
并在SpaceSearch.cs中对各个按钮进行定义。
在主窗体中对类进行调用。
IMap,IFeatureLayer,IFeatureCursor,ITable,ITableSort,ICursor,IDataStatistics,ILayerFields,IFields,(6)缓冲区分析:新建一个创建缓冲区的窗体CreatBuffer,一个元素控制类ElementsControls,一个分析类analysis,一个ARCGIS下的BseCommend类型的缓冲区输出类CmBufferToShapefile。
在工具箱中往CreatBuffer窗体中添加需要的按钮,并对各个按钮进行定义。
在窗体CreatBuffer中用到了类analysis 和类ElementsControls 。
最终和主窗体连接在一起。