牟乃夏ArcEngine开发教程:第3章地图操作基本功能
- 格式:pptx
- 大小:1.84 MB
- 文档页数:65
学习指导:本实验的ArcGIS软件为ArcGIS 9版本。
如果需要学习ArcGIS10,请参阅作者主编的教材:ArcGIS 10 地理信息系统教程——从初学到精通(测绘出版社)的第二、三、五、八等章等相关内容。
如需进一步了解学习ArcGIS的方法及其他问题,请访问作者的人人网主页:/mounaixiaArcMap的基本操作一、主要内容通过练习ArcMap的基本操作,了解ArcMap模块的主要功能和作用。
二、学时安排:2学时三、预习内容ArcMap的主要功能和作用:是一个桌面程序用来完成所有基于地图的任务,包括地图制图、图编辑和分析等。
使用ArcMap我们可以进行数据的浏览、符号化、查询、分析和输出等。
ArcMap主要用于图形的编辑处理和符号化显示等。
四、具体内容及操作1、启动ArcMap[1]. 运行“启动\程序\ArcGIS\ArcMap”,或者运行桌面上的快捷方式。
2、熟悉ArcMap用户界面2.1缺省用户界面当ArcMap启动之后,缺省方式的用户界面包括主菜单和“Standard”工具条。
图表 0-1 缺省用户界面2.2用户界面的定制我们可以通过菜单“tools->Customs…”或者在菜单区或者工具条区按鼠标右键进行界面的定制。
这些菜单和工具条可以停靠在窗口的任意位置。
图表 0-2 用户界面定制另外还可以通过下面方式打开或者关闭工具条。
[1]. 在主菜单中点击:View-Toobars;[2]. 从工具条列表中, check一个工具条,则显示此工具条,uncheck一个工具条,则隐藏此工具条;[3]. 在主菜单区或者工具条区按鼠标右键,重复第2步,查看结果;[4]. 重复以上步骤,以保证主菜单,Standard, Tools工具条显示。
2.3用户界面介绍图表 0-3 用户界面地图窗口:用来显示数据和数据的表达(地图,图表等);Contents窗口: 在这个窗口中包含两个标签:Display和Source标签。
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 ENGINE的地图基本操作程序说明第一部分设计说明1.目的对于一个GIS软件来说,其基本功能之一就是展示地理数据并实现对地理数据的操作。
2.使用工具2.1 软件ARCGIS ENGINE开发工具2.2 工具条主视图:Ribbon菜单栏、AxmapControl、axTOCControl、acLicenseControl、SplitContainer、StatusStrip、menuStrip、toolStripStatusLabel。
辅视图:Textbox、Label、Button、DataGridView、GroupBox、ComboBox、TreeView、SplitContainer。
3.各实体设计说明3.1 数据加载本程序支持加载多类型的数据,如矢量数据的Coverage、Shapefile,栅格数据的BMP、GRID、空间数据库,以及通过ARCMAP制作的地图文档(*.mxd)或ARCMAP 模版(.*mxt)等。
3.1.1 地图文档的加载本程序包含加载地图文档的三种方式,即IMapControl接口的LoadMxFile方法、IMapDocument接口、以及AE中封装好的类库资源ControlsOpenDocCo- MmandClass方法。
3.1.2 Shapefile数据的加载本程序采用了通过工作空间记载shapefile的方法,主要用到了IMap、ILayer、IFeatureLayer和IFeatireClass四个接口。
3.1.3 加载栅格数据常见栅格数据有*.bmp、*.tif、*.jpg等格式。
添加栅格数据主要用到IRasterPyramid3(提供对栅格数据集的金字塔属性的访问)、IRasterLayer等接口。
3.1.4 加载CAD数据本程序使用两种方式加载CAD数据,一是作为要素图层,以矢量数据来使用;二是作为地图背景,以栅格数据来使用(采用CadLayer对象管理)。
ArcGIS Engine基础开发教程(5)——学习地图查询地图查询地图查询、统计是一个GIS系统的基本的功能模块,实际上统计功能的前提也是通过查询获取结果以文字或者图表等报表的形式展现查询结果数据。
地图查询有两种类型的查询:1.空间查询:在地图上设置一定范围,查询这一范围内的要素。
例如在地图上画一范围查询这一区域内的所有消防栓,这一范围的所有消防栓高亮显示(或者其他显示方式)并展现出所有的消防栓的属性信息。
2.属性查询:通过一定的查询条件获取目标要素。
例如我们需要查询中国行政区上人口大于5000万,同时GDP大于1万亿的省份,通过执行查询,符号条件的省份高亮显示(或者其他显示方式)并展现出这些省份的属性信息。
ArcGIS Engine9.3为开发者提供了无需写代码即可进行查询功能的Identify工具,但是这个工具是一个通用的信息查询新工具。
而开发者通常需要自己开发一套符合自己业务需求更加灵活的查询功能模块,甚至一些功能不仅仅是查询信息,很多编辑编辑功能以及和业务相结合的功能开发都用到查询功能。
所以很有必要了解ArcGIS Engine的查询机制。
5.1目标1.熟悉Cursor,FeatureCursor对象,使用IFeatureCursor接口2.熟悉QueryFilter, SpatialFilter对象使用IQueryFilter,ISpatialFilter接口3.熟悉要素选择集SelectionSet对象,会使用IFeatureSelection,ISelectionSet接口4.开发一个属性查询小功能Demo, 获取符号查询条件的Feature,并IFeatureLayerDefinition接口创建一个新的要素图层加载到Mapcontrol上5.开发一个空间多边形查询功能的小Demo, 学会创建内存半透明图层用于显示选择范围5.2准备工作1.IDE:Visual Studio 2005/20082.ArcGIS Engine Developer kit 9.33.准备一份用于查询的的矢量数据(文章内有说明)5.3Cursor对象Cursor(游标)本质上是一个指向数据的指针,本身并不包含数据内容,它是连接到Row对象或要素对象的桥梁。
ArcGISEngine基础开发教程部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑ArcGIS Engine基础开发教程1.创建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所示:b5E2RGbCAP图11.5创建第一个ArcGIS Engine桌面应用程序在Visual Studio2008中新创建项à选择àArcGISàEngineàMapControl Application,点击确定,如图2所示:p1EanqFDPw图2可以看到在Visual Studio中看到在新创建的工程中自动加载了ToolBarControl、TocControl、LicenseControl、MapControl四个ArcGIS Engine控件以及一个.NET ToolStripMenuItem菜单控件,如图3所示:图31.6加载MXD地图文档数据单击F5键运行程序,然后单击打开MXD地图文档按钮打开MXD地图文档,如图4所示:图4可以看到应用程序把MXD地图文档加载到MapControl地图上,可以使用ToolbarControl提供的常用GIS功能如:放大,缩小,信息查询等功能。
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对象,空间参考等对象。
GIS开发与应用GIS开发与应用——ArcEngine方法独立开发模式宿主型开发模式(组件式GIS 基本思想)组件式GIS 开发模式第1章GIS 二次开发概述1.1 GIS 开发模式GIS开发与应用——ArcEngine方法1.2 组件式GIS组件式 GIS (ComGIS) :采用了面向对象技术和组件式软件的GIS 系统(包括基础平台和应用系统)。
COM是组件式对象模型是组件式对象模型(Component Object Model) 的英文缩写。
GIS开发模式包括:开发模式包括:独立开发模式、宿主型开发模式、组件式GIS 开发模式。
组件式GIS 开发平台的结构有三种:基础组件、高级通用组件、行业性组件。
GIS开发与应用——ArcEngine方法基础组件——面向空间数据管理,提供基本的交互过程。
面向空间数据管理,提供基本的交互过程。
高级通用组件——面向通用功能。
行业性组件——抽象出行业应用的特定算法,固化到组件中,进一步加速开发过程。
GIS开发与应用——ArcEngine方法第二章 ArcEngine 基础2.1 ArcObjects 与ArcEngine 区别与联系2.2 ArcEngine 功能2.4 组件对象模型COM2.5 理解对象模型图OMD2.6 ArcEngine 类库结构GIS开发与应用——ArcEngine方法ArcEngine 从功能层次上分为五部分:1.基本服务—由GIS 核心ArcObjects 构成,几乎所有GIS应用程序都需要,如要素几何体(Feature geometry)和显示(Display)。
2.数据存取—ArcGIS Engine 可以对许多栅格和矢量格式进行存取,包括强大的地理数据库(Geodatabase)。
3.地图表达—创建和显示带有符号和标注的地图。
4.开发组件—用于快速开发应用程序的界面控件。
5.运行时选项—ArcGIS Engine 运行时可以与标准功能或其它高级功能一起部署GIS开发与应用——ArcEngine方法6-72.4.1 基本概念对象和类( Objects and Class )对象:系统中用来描述客观事物的一个实体,构成系统的一个基本单位。
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函数的实现。