ArcEngine开发教程:第3章地图操作基本功能 (1)
- 格式:pptx
- 大小:1.81 MB
- 文档页数:65
ArcEngine开发实例三一、实例目标及其实现的主要功能1、学习编程实现打开、保存,另存地图文档的方法;2、运用工具栏工具进行地图要素的添加;3、运用状态栏控件实现地图坐标信息的显示。
二、具体的实现过程及代码1、如指导书中的过程,新建一个C#工程项目,并为默认建立的窗体分别添加“ToolBarControl”“TOCControl”“MapControl”“LicenseControl”控件,执行与MapControl 控件的绑定操作,并通过“dock”属性排好。
为工具栏添加如下图所示的工具按钮。
2、添加菜单控件,依次添加菜单栏的主菜单text属性为“文件”,其name属性为“menuFile”,依次添加子菜单,其text属性分别为“打开文档”,“新建文档”,“保存文档”,“另存为….”,“退出”,其name属性分别为“menuOpenDoc”,“menuNewDoc”,“menuSaveDoc”,“menuSaveAsDoc”,“menuExitApp”。
3、打开工具箱,通过添加选项,添加statusBar控件,并双击添加到窗体上。
4、添加ArcGIS的引用ESRI.ArcGIS.Geodatabase和ESRI.ArcGIS.ADF类库,在第一个窗体的代码窗口导入命名空间:using ESRI.ArcGIS.esriSystem;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.ADF;using ESRI.ArcGIS.SystemUI;5、在public partial class Form1 : Form代码下添加如下的初始化语句:private IMapControl3 m_mapControl = null;private string m_mapDocumentName = string.Empty;private IContainer components;6、为窗体添加load事件,并添加以下代码:private void Form1_Load(object sender, EventArgs e){m_mapControl = (IMapControl3)axMapControl1.Object;menuSaveDoc.Enabled = false; }7、为菜单“menuOpenDoc”添加click事件,并添加如下代码:ICommand command = new ControlsOpenDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();8、为菜单“menuSaveDoc”添加click事件,并添加如下代码:if (m_mapControl.CheckMxFile(m_mapDocumentName)){IMapDocument mapDoc = new MapDocumentClass();mapDoc.Open(m_mapDocumentName, string.Empty);if (mapDoc.get_IsReadOnly(m_mapDocumentName)){MessageBox.Show("Map document is read only!");mapDoc.Close();return;}mapDoc.ReplaceContents((IMxdContents)m_mapControl.Map);mapDoc.Save(esRelativePaths, false);mapDoc.Close();}9、为菜单“menuSaveAsDoc”添加click事件,并添加如下代码::ICommand command = new ControlsSaveAsDocCommandClass();command.OnCreate(m_mapControl.Object);command.OnClick();10、为菜单“menuExitApp”添加click事件,并添加如下代码:Application.Exit();11、为菜单“menuNewDoc”添加click事件,并添加如下代码:ICommand command = new CreateNewDocument();command.OnCreate(m_mapControl.Object);command.OnClick();12、为控件“axMapControl1”添加OnMouseMove事件,并添加如下代码:statusBar1.Text = string.Format("{0}, {1} {2}", e.mapX.ToString("#######.##"),e.mapY.ToString("#######.##"), axMapControl1.MapUnits.ToString().Substring(4));13、为控件“axMapControl1”添加OnMapReplaced事件,并添加如下代码:m_mapDocumentName = m_mapControl.DocumentFilename;if (m_mapDocumentName == string.Empty){menuSaveDoc.Enabled = false;statusBar1.Text = string.Empty;}else{menuSaveDoc.Enabled = true;statusBar1.Text = Path.GetFileName(m_mapDocumentName);}三、操作通过操作调试该程序源码,观察并掌握AE中对于地图文件保存的操作方法。
ArcGIS Engine10.0轻松入门级教程(1)——必备基础知识分类:ArcEngine开发2012-06-13 22:56 2173人阅读评论(3) 收藏举报目录(?)[-]1. ArcGIS、ArcObjects和ArcGIS Engine简介1. ArcGIS简介2. ArcObject简介3. ArcSIS Engine简介1. ArcGIS Engine Software Developer Kit2. ArcGIS Engine Runtime3. ArcGIS Engine的功能4. net平台5. 接口编程思想6. QI六月的某一天,骄阳似火,夜幕已悄悄降临,坐在电脑前回想自己的大学四年时光,或痛心疾首,或微微憨笑,感概万千,在GIS专业学习了4年,有很多收获,也有很多遗憾,幸而考上了研究生可以继续深造。
于是乎心里的雄心一下被激发了,总结自己的所学知识,打算重新开始,把ArcGIS Engine写一本入门级的教程,为初学者少做弯路,也为自己总结下知识,更为打发着无聊时光。
以上为序,语无伦次自娱自乐!PS:本教程虽为入门及教程,但也要求你有入门级的知识,如果你是哲学专业的,那我也无力回天啊!还有本教程素材全部来源于互联网,版权未知,要我说感谢的话:感谢CCTV,感谢MTV……就此打住。
1 ArcGIS、ArcObjects和ArcGIS Engine简介1.1ArcGIS简介ArcGIS提供了一个可伸缩的框架,可以为独立用户或者多用户,既可以在桌面端也可以在服务器端提供GIS。
ArcGIS 9是用来构建一个完整GIS应用的GIS软件产品集成。
它是基于共享的GIS软件组件——ArcObjects。
ArcGIS 9由以下四部分组成:1)ArcGIS Desktop——高级GIS应用的集成2)ArcGIS Engine——根据应用程序接口来构建基本应用的嵌入式GIS组件库3)ArcGIS Server——在企业级或者网络框架下构建服务器端GIS应用的平台,用来构建Web服务和Web应用4)ArcIMS——通过公开的因特网协议来发布地图、数据和元数据的GIS Web服务器每一个GIS框架同样包含ArcSDE网关,这是在关系数据库(RDBMS)上组织地理数据的接口。
ArcGIS Engine基础开发教程(3)——学习地图和地图布局Engine, ArcGIS, 教程, 地图, 基础本章是ArcGIS Engine基础开发教程的第三章,主要给大家大致讲解了,地图和地图布局的相关对象。
这些对象非常重要,如果这些基本对象都不熟悉就开始搞ArcGIS Engine开发是不科学的也走不远的。
3地图和地图布局3.1地图3.1.1Map对象Map对象是ArcGIS Engine的主要对象,本章将给大家介绍地图组成结构,如何创建地图,如何对组成地图的对象进行操作,在介绍这些内容时尽量结合ArcMap学习效果会更好。
在Map对象上能显示的图形有两类一类是地理数据,一类是元素。
地理数据包括矢量类型的要素数据,栅格数据,Tin等表面数据等,这些数据都保存在Geodatabase或数据文件如shapefile中,它们是用于GIS分析制图的源数据;图1而元素是另一种可以显示在Map上的对象,它分为两部分一类是图形元素,一类是框架元素,图形元素可以显示出来,而框架元素充当了“容器”的角色。
在ArcMap中可以使用“Draw”工具在Map上直接绘制一个矩形,圆形,文本等对象,在布局视图上也可以给地图添加指北针,图例,比例尺等图形对象,这些都是图形元素。
图2在ArcMap中Map对象是由MXDocument对象的MapFrame对象管理,MapFrame是一个框架元素。
Map对象有双重身份,一方面是数据的管理容器,可以加载地理数据和图形元素,扮演了数据管理器的角色,另一方面它又可以让用户看到这些数据即扮演了数据显示器的角色,当加载数据到Map对象的时候,Map对象是数据的管理者;当改变视图范围,刷新地图的时候它是数据的显示者。
Map对象主要实现的接口由IMap,IGraphicContainer,IActiveView,IMapBookmark等接口。
IMap接口主要用于管理Map对象中的Layer对象,要素选择集对象,MapSourround对象,空间参考等对象。
Arcgis基本操作教程(所有资料来自网络)目录1.配准栅格地图 (1)1.1跟据图上已知点来配准地图 (1)1.1.1选择标志性程度高的配准控制点 (1)1.1.2从基础数据底图上获取控制点坐标 (1)1.1.3增加Georeferncing 工具条 (2)1.1.4加载需要配准的地图 (2)1.1.5不选择Auto Adjust (2)1.1.6在要配准的地图上增加控制点 (3)1.1.7重复增加多个控制点检查残差 (4)1.1.8更新地图显示 (4)1.1.9保存配准图像 (5)1.1.10增加有坐标的底图检验配准效果 (6)1.2根据GPS观测点数据配准影像并矢量化的步骤 (7)2.图形的失量化录入 (9)2.1半自动失量化 (9)2.1.1启动ArcMap (9)2.1.2栅格图层的二值化 (10)2.1.3更改Symbology设置 (10)2.1.4定位到跟踪区域 (11)2.1.5开始编辑 (12)2.1.6设置栅格捕捉选项 (13)2.1.7通过跟踪栅格像元来生成线要素 (14)2.1.8通过跟踪栅格像元生成多边形要素 (15)2.1.9改变编辑目标图层 (16)2.1.10结束你的编辑过程 (17)2.2批量矢量化 (18)2.2.1启动ArcMap,开始编辑 (18)2.2.2更改栅格图层符号 (18)2.2.3定位到实验的清理区域 (19)2.2.4开始编辑 (19)2.2.5为矢量化清理栅格图 (20)2.2.6使用像元选择工具来帮助清理栅格 (21)2.2.7使用矢量化设置 (24)2.2.8预览矢量化结果 (25)2.2.9生成要素 (26)2.2.10结束编辑过程 (27)2.3手工数字化 (27)2.3.1在ArcCatalog下新建一个空的shapefile: (27)2.3.2为boundary添加属性字段 (28)2.3.3新建地图,并添加需要的数据 (28)2.3.4进行栅格显示设置: (28)3.拓普错误检查 (29)3.1ArcGIS 拓扑介绍 (29)3.2Geodatabase组织结构。
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基础开发教程1创建第一个ArcGIS Engine桌面应用程序 (6)2几何对象与空间参考 (15)3地图和地图布局 (44)4图层符号化 (64)5地图查询 (91)6.空间分析 (110)7地图输出 (121)很多人是不熟悉ArcGIS Desktop就开始从网上Down代码修改代码开始了自己的开发之旅,包括我,我大学时代是MapInfo的粉丝,一直没学过ArcGIS。
这是非常不科学的,因为ArcGIS Desktop就是从AO开发起来的,你只有掌握了ArcGIS Desktop的使用,才能很容易理解AO接口提供的功能。
实际上ArcGIS Engine二次开发说白了就是在ArcGIS Desktop 所提供的功能和业务相结合进行的创新性开发。
所以熟悉ArcGIS Desktop以及ArcGIS数据模型对学习ArcGIS Engine二次开发非常重要!一、创建第一个ArcGIS Engine桌面应用程序ArcGIS Engine9.3提供了丰富的GIS组件方便用户快速的定制开发一个GIS应用程序,无需写代码即可实现GIS数据加载,地图操作等功能甚至可以实现高级编辑以及空间分析功能。
接下来使用ArcGIS Engine9.3提供了MapControl Application模块来创建第一个ArcGIS Engine桌面应用程序,并为桌面应用应用程序提供编辑功能。
1.1目标1)创建第一个ArcGIS Engine桌面应用程序2)为应用程序添加编辑功能。
1.2准备工作1)IDE:Visual Studio 2005/20082)ArcGIS Engine Developer kit 9.33)制作ArcGIS实验数据地图文档MXD1.3设计流程图1.4制作地图文档在ArcMap中加载数据后,点击保存生成一个*.mxd地图文档,如图1所示:图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMap Control Application,点击确定,如图2所示:图2可以看到在Visual Studio中看到在新创建的项目中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGIS Engine控件以及一个.NET ToolStripMenuItem菜单控件,如图3所示:图31.6加载MXD地图文档数据单击F5键运行程序,然后单击打开MXD地图文档按钮打开MXD地图文档,如图4所示:图4可以看到应用程序把MXD地图文档加载到MapControl地图上,可以使用ToolbarControl 提供的常用GIS功能如:放大,缩小,信息查询等功能。
ArcEngine开发个⼈⼿册第⼀章Arc Engine 介绍第⼆章Arc Engine结构⼀、Arc Engine包含的主要库⽂件1、System库ArcGIS结构中最底层的库,包含为其它库提供服务的组件。
2、SystemUI包含为⽤户界⾯组件(在ArcEngine中可以进⾏扩展)定义的接⼝,包括:ICommand, ITool, 和ItoolControl接⼝。
3、Geometry处理存储在要素类或其它图形元素中的⼏何图形要素。
我们经常遇到的基本⼏何⽬标有Point, MultiPoint, Polyline 和Polygon4、Display包含显⽰地理数据的像,如:symbols,colors 等。
我们通常通过类似Map或PageLayout 对像提供的视图(view)来访问Display5、Server包含⽤来连接到ArcGIS Servers的对像。
我们可以通过GISServerConnection对象访问ArcGIS Server。
6、Output⽤来将图形输出到设备上,如printers、plotters和hardcopy formats(如:EMF,JPG,BMP等)。
可扩展7、GeoDatabase为geodatabase提供API函数。
可以扩展以⽀持特定数据格式(Features, Classes, etcetera),可通过PlugInDataSource对象加⼊⾃定义的⽮量数据源。
Geodatabase⽀持的本地数据类型⽆法扩展8、GISClient⽤来接受ArcIMS和ArcGIS Server.提供的⽹络服务。
9、DataSourcesFile包含以⽂件为数据源的(shapefile,coverage, TIN, CAD, SDC, StreetMap, and VPF)部分GeoDatabase API函数的实现。
10、DataSourcesGDB包含以数据库为数据源(Microsoft Access、ArcSDE—IBM DB2, Informix, Microsoft SQL Server, and Oracle)部分GeoDatabase API函数的实现。
ArcGIS Engine二次开发——基础篇1ArcGIS Engine二次开发——基础篇1.1第一个简单的ArcGIS Engine地图显示程序这个例子将引导您创建第一个简单的地图显示程序,并添加基本的缩放和漫游功能。
如果您之前没有接触过ArcGIS Engine的开发,那么这个例子是您迈入ArcGIS Engine二次开发大门的极好例子,将从零开始引导您一步一步完成任务。
1.1.1创建一个新的工程首先打开Microsoft Visual Studio 2005,点击菜单栏中的“文件”—>“新建”—>“项目”,在弹出的对话框中选择新建一个Visual C#的Windows应用程序,之后更改项目名称为“地图浏览”,更改文件的路径为个人实习文件夹,点击“确定”即可。
图1新建项目对话框选中项目“地图浏览”中的窗体“Form1”,修改其Name属性为“MainForm”,Text属性为“地图浏览”,图2窗体命名1.1.2添加控件及引用点击编译器最左侧的“工具箱”(不存在时可通过“视图”“工具箱”打开),在弹出的选择项中找到“ArcGIS Windows Forms”项,单击其中的MapControl,之后在Form1的空白处单击鼠标左键不放并拖拽鼠标,直到调整MapControl到合适的大小再松开鼠标(您也可以直接在工具箱中双击MapControl,该控件则会自动加入到Form1中)。
用同样的方法,再将LicenseControl添加到Form1中。
图3 打开工具箱图4工具箱如果您在工具箱中找不到MapControl,则请依次尝试以下两种解决方案。
首先单击工具栏,待工具箱弹出之后,在工具箱的任意位置上单击鼠标右键,从弹出菜单中选择“重置工具箱”。
如果这一步操作之后仍然无法看到MapControl,则在工具箱的任意位置上单击鼠标右键,找到“常规”选项卡,然后在“常规”选项卡上单击鼠标右键,在弹出菜单中单击“选择项(I)…”,在弹出的对话框中选择“.NET Framework组件”,找到“LicenseControl”和“MapControl”,将这两项前的复选框打上勾,最后点击确定即可(如果在“.NET Framework 组件”这个面板中找不到这两项,则选择“COM 组件”面板,在“ESRI LicenseControl”和“ESRI. MapControl”前面打勾)。